Oracle JDK和OpenJDK之间的差异

2022-08-31 04:04:47

注意:这个问题来自2014年。从Java 11开始,OpenJDK和Oracle JDK正在融合。

Oracle和OpenJDK之间有什么关键的区别吗?

例如,垃圾回收和其他 JVM 参数是否相同?

GC在两者之间的工作方式是否不同?


答案 1

OpenJDK和Oracle JDK目前仅由Oracle创建和维护。

OpenJDK和Oracle JDK是通过TCK(Java技术认证工具包)的相同Java规范的实现。

大多数JDK供应商都是在OpenJDK之上编写的,方法是对[主要是替换许可的专有部件/替换为仅适用于特定操作系统的更高性能的项目]组件进行一些调整,而不会破坏TCK兼容性。

许多供应商实现了Java规范,并通过了TCK。例如,IBM J9,Azul Zulu,Azul Zing和Oracle JDK。

几乎每个现有的JDK都是从OpenJDK派生的。

正如许多人所建议的那样,许可是JDK之间的变化。

从 JDK 11 开始,访问 Oracle JDK/Java SE 的长期支持现在将需要商业许可证。您现在应该注意要安装的JDK,因为没有订阅的Oracle JDK可能会停止工作。

参考:Java 虚拟机列表


答案 2

对于Java 7来说,没有什么关键的。OpenJDK项目主要基于Sun捐赠的HotSpot源代码。

此外,OpenJDK被选为Java 7的参考实现,并由Oracle工程师维护。

2012年关于JVM,JDK,JRE和OpenJDK之间差异的更详细的答案,它链接到Oracle博客文章

:在 OpenJDK 存储库中找到的源代码与您用于构建 Oracle JDK 的代码有什么区别?

:它非常接近 - 我们的Oracle JDK版本的构建过程建立在OpenJDK 7上,只需添加几个部分,例如部署代码,其中包括Oracle的Java插件和Java WebStart的实现,以及一些闭源第三方组件,如图形光栅器,一些开源第三方组件, 像Rhino,以及这里和那里的一些零碎的东西,比如额外的文档或第三方字体。展望未来,我们的目的是开源Oracle JDK的所有部分,除了那些我们认为是商业功能的部分,如JRockit Mission Control(在Oracle JDK中尚未提供),并用开源替代品替换受累的第三方组件,以实现代码库之间更紧密的奇偶校验。


推荐