JVM、JDK、JRE和OpenJDK之间的区别是什么?
我在Java编程时遇到了这些短语,它们之间有什么不同?
Java虚拟机(JVM)是运行Javahtml" target="_blank">字节码的虚拟机。JVM不理解Java源代码;这就是您需要编译*.
文件以获得包含JVM所理解的字节码的*.class
文件的原因。它也是允许Java成为“可移植语言”的实体(只写一次,在任何地方运行)。实际上,对于不同的系统(Windows、Linux、macOS,参见维基百科列表),JVM都有特定的实现,目的是用相同的字节码,它们都给出相同的结果。
要解释JDK和JRE之间的区别,最好是阅读Oracle文档并查阅以下图表:
Java运行时环境(JRE)
Java运行时环境(JRE)提供了库、Java虚拟机和其他组件来运行用Java编程语言编写的小程序和应用程序。此外,两个关键的部署技术是JRE的一部分:Java插件,它使小程序能够在流行的浏览器中运行;以及通过网络部署独立应用程序的Java Web Start。它也是Java 2平台企业版(J2EE)中用于企业软件开发和部署的技术的基础。JRE不包含用于开发applet和应用程序的工具和实用程序,如编译器或调试器。
Java开发工具包(JDK)
JDK是JRE的超集,包含JRE中的所有内容,以及开发applet和应用程序所必需的工具,如编译器和调试器。
请注意,Oracle并不是唯一提供JDK的公司。
OpenJDK是JDK的开源实现,是Oracle JDK的基础。Oracle JDK和OpenJDK之间几乎没有区别。
不同之处在本博客中陈述:
问:在OpenJDK存储库中找到的源代码和用于构建Oracle JDK的代码之间有什么区别?
答:非常接近--我们的Oracle JDK版本的构建过程是在OpenJDK 7的基础上构建的,只添加了几个部分,比如部署代码,其中包括Oracle对Java插件和Java WebStart的实现,以及一些闭源第三方组件,比如图形光栅化器,一些开源第三方组件,比如Rhino,还有一些零零散散的部分,比如额外的文档或第三方字体。接下来,我们的目标是开源Oracle JDK的所有部分,除了那些我们认为是商业特性的部分,比如JRockit Mission Control(在Oracle JDK中还没有),并用开源替代方案替换受限制的第三方组件,以实现代码库之间更接近的一致性。
JDK 11的更新--Donald Smith的一篇文章试图消除Oracle JDK和Oracle的OpenJDK之间的差异:https://blogs.Oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later
问题内容: JVM,JDK,JRE和OpenJDK有什么区别? 我在用Java编程时遇到了这些短语,它们之间有什么区别? 问题答案: 虚拟机 在Java虚拟机(JVM)是运行Java字节代码的虚拟机。JVM不理解Java源代码;这就是为什么需要编译文件以获取包含JVM可以理解的字节码的文件的原因。它也是允许Java成为“便携式语言”的实体(编写一次,可以在任何地方运行)。实际上,对于不同的系统(W
我很难理解JVM(Java虚拟机)、JRE(Java运行时环境)、JDK(Java开发工具包)、JIT(即时编译器)和javac(Java编译器)之间的区别。 所有这些之间有什么好的比较和对比?
问题内容: Oracle和OpenJDK之间有什么重要区别吗? 例如,垃圾回收和其他JVM参数是否相同? 两者之间的GC工作方式是否有所不同? 问题答案: OpenJDK和Oracle JDK都仅由Oracle当前创建和维护。 OpenJDK和Oracle JDK是通过TCK(Java技术认证套件)的同一Java规范的实现。 JDK的大多数供应商都是通过OpenJDK编写的,它们做了一些调整[主要
问题内容: 我在理解Java JRE的一些基本知识时遇到了麻烦。 我需要在嵌入式系统中运行Java代码,为此,我需要在Linux内核中安装最小的Java运行时环境,即执行Java二进制文件所需的最小程序包。我认为仅使用JVM是不可能的(JRE包是必需的,在这里我错了吗?) 事情是,看着Debian仓库的时候我也不太明白软件包之间的差异,和。Java程序将仅与前者一起运行吗?还是需要其中三个? 这是
本文向大家介绍JDK,JRE和JVM之间的差异。,包括了JDK,JRE和JVM之间的差异。的使用技巧和注意事项,需要的朋友参考一下 这三个JDK,JRE和JVM都是相互依赖的,并且没有共同点,因此以表格形式说明它们之间的差异并不有效,但是我们将在以下段落中进行讨论。 虚拟机 JVM是Java虚拟机的缩写,基本上是一种规范,它提供了一个运行时环境,可以在其中运行Java字节码,即它是抽象的东西,其实
问题内容: 我认为JVM与.NET Framework类似,对吗?那么,JRE是什么?JRE和JVM有什么区别? 问题答案: JRE是虚拟机在其中运行的环境。 JRE-JAVA运行时环境 JVM-JAVA虚拟机 JRE是容器,JVM是内容。