JVM,JDK,JRE和OpenJDK有什么区别?

问题:

JVMJDKJREOpenJDK的之间有什么区别?
我在Java编程,我遇到这些短语,他们有什么区别?

回答:

JVM

Java虚拟机(JVM)是​​运行Java字节码的虚拟机。 JVM不了解Java源代码,这就是为什么编译您的*.java文件以获取包含JVM了解的字节码的*.class文件。它也是允许Java成为“便携式语言”(write once, run anywhere)的实体。实际上,针对不同系统(Windows,Linux,MacOS,see the Wikipedia list)的JVM具有特定的实现,其目的是使用相同的字节码,它们都赋予相同的结果。

JDK和JRE

要解释JDK和JRE之间的区别,最好是读取Oracle documentation并查看图:

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

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

请注意,Oracle不是唯一提供JDK的。

OpenJDK的

是Java SE 7 JSR(JSR 336)的开源实现。
现在,Oracle JDK和OpenJDK几乎没有区别。甲骨文去年作出了这样的决定:
 Moving to OpenJDK as the official Java SE 7 Reference Implementation
差异在blog中说明:

问:OpenJDK存储库中找到的源代码和用于构建Oracle JDK的代码有什么区别?
A:这是非常接近的 – 我们通过添加几个部分,如部署代码,包括Oracle的Java插件和Java WebStart的实现,以及一些封闭的源代码第三版,Oracle JDK发布版本在OpenJDK 7上构建。诸如图形光栅化器,一些开放源代码第三方组件(如Rhino),以及其中的几个部分,如附加文档或第三方字体。展望未来,我们的目的是开放所有的Oracle JDK,除了我们考虑诸如JRockit Mission Control(Oracle JDK中尚未提供的)的商业功能之外,还可以使用开放源代码替代担保的第三方组件来实现更接近的奇偶校验代码库之间。

根据使用的版本,VM可能会有所不同:Correspondence between Sun/Oracle JDK, OpenJDK and HotSpot VM versions

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What is the difference between JVM, JDK, JRE & OpenJDK?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

5 + = 14