C和Java/虚拟机代码执行

C和Java/虚拟机代码执行,java,c,Java,C,我对Java相当陌生,我想知道为什么Java在编译(由javac)后使用虚拟机(Java程序)来执行代码,而不像C。Java虚拟机有助于保持编译后的代码平台独立。如果没有中间平台,您将不得不为每个平台分别编译代码,但是使用JVM,您只需编译一次代码,并让适当的JVM处理执行。JAVA是“一次编写,在任何地方运行” 检查链接,它将使您清楚了解java工作的整个过程 编译后,代码实际上必须经过一种中间状态,称为字节码。然后,机器上的JVM将使用该字节码,然后将其转换为机器可执行的形式 每个不同平台的

我对Java相当陌生,我想知道为什么Java在编译(由javac)后使用虚拟机(Java程序)来执行代码,而不像C。Java虚拟机有助于保持编译后的代码平台独立。如果没有中间平台,您将不得不为每个平台分别编译代码,但是使用JVM,您只需编译一次代码,并让适当的JVM处理执行。

JAVA是“一次编写,在任何地方运行” 检查链接,它将使您清楚了解java工作的整个过程 编译后,代码实际上必须经过一种中间状态,称为
字节码
。然后,机器上的
JVM
将使用该字节码,然后将其转换为机器可执行的形式


每个不同平台的
JVM
都是不同的,但是编译器每次生成的字节码都是相同的。
JVM
执行处理
字节码
的功能,并以您所使用的平台可以理解的形式生成可执行代码。这就是java被称为
的原因,“一次编写,在任何地方运行”.

Java代码分多个阶段编译。
javac
验证代码,但JIT会根据程序的使用方式和运行平台将其转换为本机代码。这允许程序使用进程或使用的确切芯片组,而不是它可能需要运行的所有平台的最低公分母

使用Java,您可以使用10年前在32位windows平台上编译的开放源代码库,并将其部署在64位Linux服务器上,它不仅可以工作,而且可以针对您的最新CPU和使用方式进行优化


在Windows上开发Java应用程序并将其部署到具有不同处理器系列的Linux系统,而不必重新编译或担心跨平台问题,这是非常常见的。

这是为了解决可移植性问题。Java代码可以在安装了JVM的任何机器上运行。基本上,JVM生成一个优化的机器代码,它依赖于运行代码的机器

因为Java是。我现在明白了。谢谢。啊,我明白了!书籍,文章,网络和。。。当我们学习Java时,一切都告诉我们Java是“WORA”。我想我必须更彻底地阅读这本书!您知道代码/库的哪些部分在JVM的机器代码上运行吗?可以说是“API调用”。或者怎么说question@giajre(Java运行时环境)…谷歌it