我对Java相当陌生,我想知道为什么Java在编译(由javac编译)后使用虚拟机( java程序)来执行代码,而不是C。
发布于 2014-02-16 11:37:32
JAVA是“写一次运行在任何地方”
检查链接,它将使您清楚地了解java编译后运行How is Java platform-independent when it needs a JVM to run?的整个过程,代码实际上必须经过一个名为bytecode.This字节码的中间状态,然后由机器上的JVM占用该字节码,然后转换成机器可执行的形式。

每个不同平台的JVM是不同的,但是编译器生成的字节码是相同的,everytime.The JVM执行处理bytecode和以您正在工作的平台所理解的形式生成可执行代码的功能,这是java被称为"Write Once Run Anywhere".的原因。
发布于 2014-02-16 11:37:19
Java虚拟机有助于保持编译代码平台的独立性。如果没有中间平台,则必须分别编译每个平台的代码,但是对于JVM,您只能编译一次,并让适当的JVM处理执行过程。
发布于 2014-02-16 11:39:35
Java代码在多个阶段编译。javac验证代码,但是JIT根据程序的使用方式和运行平台将其转换为本机代码。这使得程序可以使用进程的确切芯片组或使用的芯片组,而对于它可能需要运行的所有平台来说,这是一个最低的公分母。
使用Java,您可以使用10年前在32位windows平台上编译的开源库,并将其部署到64位Linux服务器上,这样不仅可以工作,而且还可以为您的最新CPU和使用它的方式进行优化。
在Windows上开发Java应用程序并将其部署到具有不同处理器家族的Linux系统中,而不必重新编译或担心跨平台问题是非常常见的。
https://stackoverflow.com/questions/21810538
复制相似问题