可能重复:
Is Java a Compiled or an interpreted programming language?
为什么Java既是编译语言又是解释语言?
我们首先使用javac(编译)编译java程序,然后使用java(解释)运行程序。这有什么好处?
此外,JIT角色在哪里出现?
答案 0 :(得分:6)
编译一次并在任何地方运行是其中一个原因。
JVM是特定于操作系统的。因此,JVM解释编译的.class(字节代码)文件并转换为机器特定的指令集。
答案 1 :(得分:5)
Java编译器通常将源代码编译为中间语言,通常表示为“字节代码”。这本身不是您的本机硬件的机器代码,但从某种意义上说它是Java虚拟机的“机器”代码。
这种分离的好处是(理论上)您可以在许多不同的平台上实现VM,但是所有这些平台都能够运行相同的编译的Java字节代码。
即时编译器是假设VM的一部分,实际上在需要时将位字节代码动态转换为真实的本机代码。这是因为观察到纯粹在VM中运行Java程序比同等的本机代码慢得多。与本机编译的代码相比,JIT编译使Java VM在性能方面具有竞争力。
答案 2 :(得分:2)
这篇文章提供了有关Java JIT的更多详细信息: