JVM 是编译器还是解释器?
我有一个关于JVM的非常基本的问题:它是编译器还是解释器?
如果它是一个解释器,那么JVM中存在的JIT编译器呢?
如果两者都不是,那么JVM到底是什么?(我不想要jVM的基本定义,即将字节码转换为机器特定的代码等。
我有一个关于JVM的非常基本的问题:它是编译器还是解释器?
如果它是一个解释器,那么JVM中存在的JIT编译器呢?
如果两者都不是,那么JVM到底是什么?(我不想要jVM的基本定义,即将字节码转换为机器特定的代码等。
首先,让我们清楚地了解以下术语
Javac
是 Java 编译器 -- 将 Java 代码编译为字节码
JVM
是 Java 虚拟机 -- 运行/解释/转换字节码到本机机器代码
JIT
是 Just In Time Compiler -- 在运行时将给定的字节码指令序列编译为机器代码,然后再以本机方式执行它。它的主要目的是在性能方面进行大量优化。
所以现在,让我们找到你问题的答案。
1) -- 答:口译员JVM: is it a compiler or an interpreter?
2) -- 答:如果你完整地阅读了这个回复,你现在可能知道了what about JIT compiler that exist inside the JVM?
3) -- 答:what exactly is the JVM?
.class
希望这对你有所帮助..
两者兼而有之,但也不是传统意义上的。
现代 JVM 采用字节码,并在首次需要时将其编译为本机代码。在这种情况下,“JIT”代表“及时”。它充当来自外部的解释器,但实际上在幕后,它正在编译成机器代码。
JVM不应与Java编译器混淆,后者将源代码编译为字节码。因此,将其视为“编译器”是没有用的,而是要知道在后台它确实进行了一些编译。