Ana*_*and 10 java compiler-construction interpreter
可能重复:
Java是编译语言还是解释型编程语言?
为什么Java既是编译语言又是解释语言?
我们首先使用javac(编译)编译java程序,然后使用java(解释)运行程序.那有什么好处?
此外,JIT角色在哪里?
Java编译器通常将源代码编译成中间语言,通常表示为"字节代码".这本身不是您的本机硬件的机器代码,但从某种意义上说它是Java虚拟机的"机器"代码.
这种分离的好处是(理论上)您可以在许多不同的平台上实现VM,但是它们都能够运行相同的编译Java字节代码.
即时编译器是假设VM的一部分,实际上在需要时将位字节代码动态转换为真实的本机代码.这是因为观察到纯粹在VM中运行Java程序比同等的本机代码慢得多.与本机编译的代码相比,JIT编译使Java VM在性能方面具有竞争力.