为什么java都被编译和解释

Ana*_*and 10 java compiler-construction interpreter

可能重复:
Java是编译语言还是解释型编程语言?

为什么Java既是编译语言又是解释语言?

我们首先使用javac(编译)编译java程序,然后使用java(解释)运行程序.那有什么好处?

此外,JIT角色在哪里?

kos*_*osa 6

编译一次并在任何地方运行是其中一个原因.

JVM是特定于操作系统的.因此,JVM解释编译的.class(字节代码)文件并转换为机器特定的指令集.


Ker*_* SB 5

Java编译器通常将源代码编译成中间语言,通常表示为"字节代码".这本身不是您的本机硬件的机器代码,但从某种意义上说它是Java虚拟机的"机器"代码.

这种分离的好处是(理论上)您可以在许多不同的平台上实现VM,但是它们都能够运行相同的编译Java字节代码.

即时编译器是假设VM的一部分,实际上在需要时将位字节代码动态转换为真实的本机代码.这是因为观察到纯粹在VM中运行Java程序比同等的本机代码慢得多.与本机编译的代码相比,JIT编译使Java VM在性能方面具有竞争力.