一尘不染

Java是编译语言还是解释性编程语言?

java

过去,我使用C 作为编程语言。我知道用C 编写的代码会经过编译过程,直到成为目标代码“机器代码”为止。

我想知道Java在这方面如何工作。用户编写的Java代码如何由计算机运行?


阅读 503

收藏
2020-03-21

共1个答案

一尘不染

Java实现通常使用两步编译过程。Java编译器将Java源代码编译为字节码。字节码由Java虚拟机(JVM)执行。现代JVM使用称为即时(JIT)编译的技术将字节码编译为硬件CPU在运行时即时理解的本地指令。

JVM的某些实现可能选择解释字节码,而不是JIT将其编译为机器代码并直接运行。尽管这仍然被认为是“解释器”,但它与读取和执行高级源代码的解释器有很大不同(即,在这种情况下,不直接解释Java源代码,而是对字节码和Java编译器的输出进行解释。)

从技术上讲,可以提前将Java编译为本机代码并运行生成的二进制文件。也可以直接解释Java代码。

总而言之,根据执行环境的不同,字节码可以是:

  • 提前编译并作为本机代码执行(类似于大多数C ++编译器)
  • 及时编译并执行
  • 解释的
  • 由支持的处理器直接执行(字节码是某些CPU的本机指令集)
2020-03-21