注:此问题来自2014年。截至Java 11 OpenJDK和OracleJDK正在融合。
Oracle和OpenJDK之间有什么关键的区别吗?
例如,垃圾收集和其他JVM参数是否相同?
GC在两者之间的工作方式不同吗?
注:此问题来自2014年。截至Java 11 OpenJDK和OracleJDK正在融合。
Oracle和OpenJDK之间有什么关键的区别吗?
例如,垃圾收集和其他JVM参数是否相同?
GC在两者之间的工作方式不同吗?
当前回答
我的理解是,OracleJDK不能用于生产,因此我不能合法使用它(不付费),用于我为公司构建的web应用程序。我必须使用OpenJDK。如果我错了,请纠正我!来自本文。
从Java 11开始,Oracle JDK仅限于开发和测试环境。Oracle JDK只能在以下情况下用于生产你购买了商业支持。相反,Oracle将提供Java基于OpenJDK免费构建,可用于生产。但是对于官方的Oracle JDK,真正的路线图如下所示:
更新:我错了。我可以免费使用OracleJDK,但6个月后不会获得安全更新,我们必须承担风险。看看上面链接的文章部分“新发布的列车对我的公司意味着什么?”。
其他回答
对于Java 8,AMIS技术博客于2018年11月发布了一个针对各种JVM上托管的反应式(非阻塞)Spring Boot REST应用程序的有趣性能基准,该基准显示了以下差异:
OpenJDK的CPU使用率高于OracleJDK,OpenJDK的响应时间略低于OracleJDK,OpenJDK的内存使用率高于OracleJDK,
有关详细信息,请参阅源文章。
当然,YMMV,这只是基准之一。
未来的一个关键区别是发布时间表和支持政策。
OpenJDK
OpenJDK将每6个月发布一次功能版本,只有在下一个功能版本之前才受支持。它本质上是针对开发人员的连续发布流。
Oracle JDK
Oracle JDK更多地面向看重稳定性的企业受众。它基于OpenJDK版本之一,但然后给予长期支持(LTS)。Oracle JDK计划每3年发布一次。
资料来源:https://www.oracle.com/java/java9-screencasts.html?bcid=5582439790001&playerType=single-社交&size=事件
对于Java 8、Oracle JDK与OpenJDK,我的主要区别是:
OpenJDK是Java Standard Edition平台的开源实现,Oracle和开放Java社区对此做出了贡献。OpenJDK根据许可证GPL v2发布,其中Oracle JDK根据Oracle二进制代码许可协议获得许可。实际上,OracleJDK的构建过程是从OpenJDK源代码构建的。因此,OracleJDK和OpenJDK之间没有主要的技术差异。除了基本代码之外,OracleJDK还包括Oracle的Java插件和Java WebStart的实现。它还包括第三方开源和开源组件,如图形光栅化器和Rhino。OpenJDK字体渲染器和Oracle JDK飞行记录器是Oracle JDK和OpenJDK之间显著的主要区别。Rockit是Oracle的JVM,从JavaSE7、HotSpot和JRockit合并为一个JVM。所以现在我们只有合并的HotSpot JVM可用。有些情况下,人们声称他们在运行OpenJDK时遇到了问题,当切换到OracleJDK时,问题得到了解决。Twitter有自己的JDK。像Minecraft这样的软件希望使用Oracle JDK。事实上,他警告说。
有关差异的完整列表,请参阅源文章:Oracle JDK与OpenJDK和Java JDK开发过程
除了明显的许可差异外,OpenJDK和OracleJDK 11之间的主要区别是稳定性和性能更新。
资料来源:https://www.youtube.com/watch?v=Adv9--6IcQI&t=385
每6个月,两个代码库将同步。但在6个月的窗口期内,OpenJDK将只收到安全更新,而OracleJDK将收到额外的稳定性和性能更新。
考虑到OpenJDK和OracleJDK的更新版本仅每3个月发布一次,这意味着在下一个主要版本发布并升级之前,您将错过(最多)3个月的修复。然而,如果您选择坚持LTS版本,那么商业许可证开始变得更有意义。
OpenJDK
OpenJDK是开放源代码,由Oracle维护和开发,但允许社区和其他公司参与此开发,例如Red Hat、Azul Systems、IBM、Apple Inc等。OpenJDK既是JDK产品,也是规范,任何希望使用OpenJDK创建新变体的公司或组织都必须遵守这些规范。OpenJDK是由Oracle和社区贡献开发的。我们有时会对其稳定性产生问题;然而,根据用户的反馈,它将进行升级,以提高性能。OpenJDK定期更新,大约每6个月更新一次。
Oracle JDK
Oracle JDK由Oracle维护和开发。它符合OpenJDK规范,但不是开放源代码。OracleJDK在JVM响应能力和生产力方面要好得多。由于其对公司客户的重要性,它更注重稳定性。
资料来源:https://o7planning.org/12571/history-of-java-and-the-difference-between-oracle-jdk-and-openjdk