11

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

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

我们首先使用 javac(compile) 编译 java 程序,然后使用 java(interpreting) 运行程序。这样做有什么好处?

另外,JIT 角色在哪里出现?

4

3 回答 3

6

一次编译,随处运行是原因之一。

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

于 2012-09-05T18:11:24.403 回答
6

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

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

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

于 2012-09-05T18:13:24.863 回答
2
  1. Java被“编译”成字节码
  2. 字节码在程序执行时被“解释”
  3. JIT 编译器并将字节码“预编译”为本机机器码,优化执行时间

这是一篇文章,提供了有关 Java JIT 的更多详细信息:

于 2012-09-05T18:12:49.733 回答