JVM 、 JDK 、 JRE 和 OpenJDK 有什么区别?
我在用Java编程时遇到了这些短语,它们之间有什么区别?
原文由 Alireza 发布,翻译遵循 CC BY-SA 4.0 许可协议
JVM 、 JDK 、 JRE 和 OpenJDK 有什么区别?
我在用Java编程时遇到了这些短语,它们之间有什么区别?
原文由 Alireza 发布,翻译遵循 CC BY-SA 4.0 许可协议
JVM 是 Java 虚拟机——它实际上运行 Java 字节码。
JRE 是 Java 运行时环境——它包含 JVM 等,是运行 Java 程序所需要的。
JDK 是 Java Development Kit——它是 JRE,但是添加了 javac(这是编译 Java 源代码所需要的)和其他编程工具。
OpenJDK 是一个特定的 JDK 实现。
原文由 hvgotcodes 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
虚拟机
Java 虚拟机(JVM) 是运行 Java 字节码的虚拟机。 JVM 不理解 Java 源代码;这就是为什么您需要编译
*.java
文件以获得*.class
包含 JVM 可理解的字节码的文件。它也是允许 Java 成为“可移植语言”( _一次编写,随处运行_)的实体。事实上,JVM 有针对不同系统(Windows、Linux、macOS, 请参阅维基百科列表)的特定实现,目的是使用相同的字节码,它们都给出相同的结果。JDK 和 JRE
要解释JDK和JRE的区别,最好是阅读 Oracle文档 并查阅图表:
请注意,Oracle 并不是唯一提供 JDK 的公司。
OpenJDK
OpenJDK 是 JDK 的开源实现,也是 Oracle JDK 的基础。 Oracle JDK 和 OpenJDK 之间几乎没有区别。
此 博客 中说明了差异:
JDK 11 更新
Donald Smith 的一篇文章试图消除 Oracle JDK 和 Oracle 的 OpenJDK 之间的区别: https ://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later
正如@Alan Evangelista 在评论中提到的,Java Web Start 已被 Oracle 在 Java SE 9 中弃用并在 Java SE 11 中删除。