Oracle JDK和OpenJDK之间的差异
注意:这个问题来自2014年。从Java 11开始,OpenJDK和Oracle JDK正在融合。
Oracle和OpenJDK之间有什么关键的区别吗?
例如,垃圾回收和其他 JVM 参数是否相同?
GC在两者之间的工作方式是否不同?
注意:这个问题来自2014年。从Java 11开始,OpenJDK和Oracle JDK正在融合。
Oracle和OpenJDK之间有什么关键的区别吗?
例如,垃圾回收和其他 JVM 参数是否相同?
GC在两者之间的工作方式是否不同?
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 虚拟机列表
对于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中尚未提供),并用开源替代品替换受累的第三方组件,以实现代码库之间更紧密的奇偶校验。