参考答案:
Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译Java源代码。Java虚拟机使这个成为可能,因为它知道硬件平台的指令长度和其他特性。
个人理解:
Java源代码首先通过javac编译器编译成二进制的.class字节码文件(Java所谓的跨平台就是指.class字节码文件的跨平台而不是源码本身。Java字节码再运行于特定的Java虚拟机上,其中的Java解释器(jvm的一部分)会将其解释成对应平台的机器码进行执行。JVM帮助屏蔽了底层平台的具体信息因此使得Java字节码具有跨平台性。
所谓的Java跨平台性实际上就是在不同平台上安装了不同的Java虚拟机能够将生成的.class文件解释成对应平台的机器码进行执行。
机器码与字节码的区别:
机器码:完全依附于硬件而存在,并且由于不同硬件内嵌指令集不同,即使是相同的 0 1代码意思不一定相同。因此,事实上,从硬件的角度来讲根本不存在跨平台性。
网友评论