我正在阅读一些关于 JVM 的帖子,发现了一些令人困惑的信息。
例如这里:http://www.cs.cmu.edu/~jcarroll/15-100-s05/supps/basics/history.html
它说“事实上,Java 编译器通常被称为 JVM 编译器(用于 Java 虚拟机)”。
此外,如果 java 编译器是 JVM 的一部分,我找不到确切的答案。 我知道 JVM 是一个解释器,但我读到它也进行一些编译。 另外,据我所知,JVM 是 JRE 的一部分; JDK的javac部分和JDK的JRE部分。
那么 javac 是 JVM 的一部分吗?我认为不是,但不确定。
最佳答案
那主要是关于术语,措辞。
有 java
二进制可执行文件(以及它的一些细微变体,例如 javaw)。那就是java虚拟机!您调用该二进制文件,然后启动 JVM(有关所有荣耀的详细信息,请参阅 here)。
本质上:
- 一个 JRE 包含一个 JVM(前面提到的
java
二进制文件) - 一个 JDK 包含一个 JVM,和用于开发 Java 的工具和库(因此:
java
和javac
)
最后:对 javac
使用术语“JVM 编译器”是错误的并且具有误导性。 javac
将java源代码转换为java字节码,然后由JVM执行。但在这里要真正完整:大多数 JVM 实现还包含一个“即时”编译器组件,用于将字节码转换为 native 机器码以提高性能。
关于java - java编译器是JVM的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53591672/