java解释器在逐行执行代码之前执行转换/翻译?

时间:2018-09-22 12:39:12

标签: java compiler-construction translation interpreter

维基百科和其他一些网站将口译员描述为将代码从某种高级语言翻译成某种低级语言的翻译器。但是,这里有很多解释,包括stackoverflow中的解释,其中解释器说解释器直接执行作为输入的指令,而无需事先转换。 那么解释器是像编译器这样的翻译器,还是像CPU这样的执行器?

2 个答案:

答案 0 :(得分:2)

这在很大程度上取决于。

您必须了解当今的jvm实现是强大的强大工具。

通常,它们具有解释器部分。首先,它开始:它读取字节码并直接对其进行解释。直接命名为 Java虚拟机

但是一旦特定代码被重复执行(即成千上万次重复),那么所谓的即时编译器就会启动。它们将字节码转换为本地机器代码并进行各种性能优化,例如方法内联。

这种jvm可以同时完成您在问题中提到的所有事情。

答案 1 :(得分:1)

编译Java代码时,将其转换为 Java字节码。在执行Java程序时,实际上是调用Java虚拟机来解释Java字节码。 JVM解释Java字节码,并从中生成特定于平台的字节码,然后平台可以执行该字节码。

这是对其功能的简化解释,但它还有更多功能:就像@GhostCat所说的那样,它有时会编译经常执行的代码块,并保留编译后的版本(以平台的形式)特定的字节码),以避免每次都对其进行解释(这称为JIT编译)。

这使Java成为编译和解释之间的混合体:将源代码编译编译为Java字节码,但是随后在特定的解释中将Java字节码解释为 平台。