为什么java都被编译和解释

时间:2012-09-05 18:08:42

标签: java compiler-construction interpreter

  

可能重复:
  Is Java a Compiled or an interpreted programming language?

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

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

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:2)

  1. Java被“编译”为字节码
  2. 字节代码在程序执行时“解释”
  3. JIT编译器和“预编译”字节代码到本机机器代码,优化执行时间
  4. 这篇文章提供了有关Java JIT的更多详细信息: