Java JVM、JDK、JRE和;OpenJDK?

Java JVM、JDK、JRE和;OpenJDK?,java,jvm,difference,Java,Jvm,Difference,JVM、JDK、JRE和OpenJDK之间有什么区别 我用Java编程时遇到了这些短语,它们之间有什么区别?JVM是Java虚拟机,它实际上运行Java字节码 JRE是Java运行时环境——它包含一个JVM和其他东西,是运行Java程序所需要的 JDK是Java开发工具包——它是JRE,但添加了javac(编译Java源代码所需的)和其他编程工具 OpenJDK是一种特定的JDK实现。JVM是Java代码在其上执行的虚拟机 JRE是运行Java应用程序所需的环境(标准库和JVM) JDK是具有开

JVMJDKJREOpenJDK之间有什么区别


我用Java编程时遇到了这些短语,它们之间有什么区别?

JVM是Java虚拟机,它实际上运行Java字节码

JRE是Java运行时环境——它包含一个JVM和其他东西,是运行Java程序所需要的

JDK是Java开发工具包——它是JRE,但添加了javac(编译Java源代码所需的)和其他编程工具


OpenJDK是一种特定的JDK实现。

JVM是Java代码在其上执行的虚拟机

JRE是运行Java应用程序所需的环境(标准库和JVM)

JDK是具有开发工具和文档的JRE


OpenJDK是JDK的开源版本,与Oracle拥有的普通JDK不同Java虚拟机(JVM)是可以执行Java字节码的虚拟机。它是Java软件平台的代码执行组件

Java开发工具包(JDK)是Oracle公司面向Java开发人员的产品。自从引入Java以来,它一直是使用最广泛的Java软件开发工具包(SDK)

Java运行时环境,也称为Java运行时,运行时环境

OpenJDK(开放Java开发工具包)是Java编程语言的免费开源实现。这是太阳微系统公司从2006年开始努力的结果。该实现是根据GNU通用公共许可证(GPL)授权的,但链接例外

虚拟机 Java虚拟机(JVM)是运行Java字节码的虚拟机。JVM不理解Java源代码;这就是为什么您需要编译
*.java
文件来获得
*.class
文件,其中包含JVM可以理解的字节码。它也是允许Java成为“可移植语言”(编写一次,在任何地方运行)的实体。事实上,JVM在不同的系统(Windows、Linux、macOS等)中都有具体的实现,其目的是使用相同的字节码,它们都能给出相同的结果

JDK和JRE 要解释JDK和JRE之间的区别,最好阅读并参考图表:

Java运行时环境(JRE)

Java运行时环境(JRE)提供了库、Java虚拟机和其他组件来运行用Java编程语言编写的小程序和应用程序。此外,两项关键部署技术是JRE的一部分:Java插件,它使小程序能够在流行浏览器中运行;以及JavaWebStart,它通过网络部署独立的应用程序。它也是java 2平台、企业版(J2EE)技术在企业软件开发和部署中的基础。JRE不包含用于开发小程序和应用程序的工具和实用程序,如编译器或调试器

Java开发工具包(JDK)

JDK是JRE的超集,包含JRE中的所有内容,以及开发小程序和应用程序所需的编译器和调试器等工具

请注意,Oracle并不是唯一提供JDK的公司

OpenJDK 是JDK的开源实现,也是Oracle JDK的基础。Oracle JDK和OpenJDK之间几乎没有区别

不同之处如下所述:

问:OpenJDK存储库中的源代码与用于构建Oracle JDK的代码之间有什么区别

答:非常接近——我们的Oracle JDK版本构建过程只添加了几部分,比如部署代码,其中包括Oracle实现的Java插件和Java WebStart,以及一些封闭源代码的第三方组件,如图形光栅化器、一些开放源代码的第三方组件,比如Rhino,还有一些零碎的东西,比如附加文档或第三方字体。向前看,我们的意图是打开Oracle JDK的所有片断,除了那些我们考虑的商业特性,例如JROKIT任务控制(在Oracle JDK中还不可用),并用开放源代码替换替换第三方组件,以实现代码基之间的更接近的奇偶性。
JDK 11的更新-Donald Smith的一篇文章试图消除Oracle JDK和Oracle的OpenJDK之间的差异:

另一个值得一提的方面:

JDK(java开发工具包)

您将需要它用于开发目的,如名称所示

例如:一家软件公司将在他们的计算机上安装JDK,因为他们将需要开发新的软件,包括编译和运行Java程序

所以我们可以说JDK=JRE+JVM

JRE(java运行时环境)

它需要运行Java程序。你不能用它编译Java程序

例如:一个想要运行一些在线游戏的普通计算机用户需要在他的系统中使用JRE来运行Java程序

JVM(java虚拟机)

您可能知道,它运行字节码。它使Java平台独立,因为它执行编译Java程序后得到的
.class
文件,而不管您是在Windows、Mac还是Linux上编译它

开放JDK

嗯,就像我上面说的。现在,JDK是由不同的公司生产的,其中一家恰好是开源的、免费供公众使用的公司是OpenJDK,而另一些公司是
javac file.java // Is executed using JDK