湿了,谁说class文件是机器语言..java都要经过JVM

解决方案 »

  1.   

    前两位哥们,断章取义啊!
    ---
    不过,你们充分表达了自己的观点:2楼,怀疑“有人将操作系统编译成机器码,大大加快了系统的执行效率”,这句话我也是不赞同的,所以灰色显示的。  操作系统本身就是机器码吧!? 大家的程序都是运行在操作系统上的,操作系统去管理硬件的。3楼,清楚表明,class文件不是“机器语言”。我也是这样认为的。不过,如果,把JVM比作硬件的话,那么class应该是JVM能够识别的的“机器语言”吧!?强烈呼吁,大家看完整啊!
      

  2.   


     class文件:是字节码文件,是JVM识别的一种文件,Java之所以能跨平台,是因为有了JVM,因为JVM可以跨平台,因为JVM没一个平台都有对应的版本,所以Java编译的class的文件就可以是通用的了。实际上就是你的操作系统不需要识别class文件,只要你的JVM识别就可以了,JVM会把class文件转换成系统识别的东西。
    机器码、机器语言:我感觉应该是同一种,就是01010101的那种这是计算机底层是别的东西。
    其实我们所有的预言最终都会被编程机器语言才能执行,因为计算机只识别机器语言,之所以会出现这么多语言,就是因为每一种语言会将编译的文件转换成机器码来执行,语言的效率高低也是这么来的。汇编语言效率高,是因为汇编语言直接就可以转换成机器语言
    C语言比汇编慢一点,就是因为C语言会转换成汇编语言,然后再转换成机器语言执行。
    以上是我个人的理解,完全自己的理解,不知道对不对 呵呵 至少我到现在都是这么认为的
      

  3.   

    你说的,跟我想的差不多。
    ------- 现在感觉,我想问的,好像已经超出J2SE的模块了。 而且问题有些不清晰 。就是想知道计算机的点点滴滴。反正,计算机只有是和不是(0和1),你想问就可以问到底。
    --
    遗憾的是,看了大家的回复,感觉没什么感觉而且这个贴人气低的可怜,我来每天顶一次吧!顺便写写自己的感想。
    感谢所有回答的人。没人回复很尴尬。
      

  4.   

    “可是EXE文件是运行在操作系统之上的。 如果它能被硬件看懂,何必要操作系统呢?”
    一句话解释:软件运行除了指令集外还有系统支持环境的要求!首先你要理解计算机中一个重要概念——抽象abstraction,可以理解为接口或标准。具体分析:指令集是对处理器的抽象(即指令集构架,如x86 instruction set),这是跟操作系统没关系的。但是cpu的完成一条指令除了自己动作外还要对外和其他硬件交互数据吧(想想为什么一条指令通常有操作码和地址码两部分组成),数据是放在硬件的register(cpu里面),memory,I/O设备里的。而“虚拟储存器“是对memory和I/O的抽象,这就与操作系统相关了(如不同操作系统对虚拟内存管理不一样)。所以你把exe文件放在另一台同样x86构架的cpu但Linux系统机器上运行可以理解为cpu理论上虽然可能知道我们想做什么但是他无能为力为我们去做,因为linux对虚拟内存的管理与windows不同,所以他大部分情况下找不到要操作的数据。