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