注:此问题来自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、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开发过程

它非常接近-我们的Oracle JDK版本的构建过程是在OpenJDK 7上构建的,只添加了几个部分,如部署代码,其中包括Oracle的Java插件和Java WebStart的实现,以及一些封闭源代码的第三方组件,如图形光栅化器,一些开源第三方部件,如Rhino,如其他文档或第三方字体。接下来,我们打算开源OracleJDK的所有部分,除了那些我们认为具有商业功能的部分,如JRockit任务控制(在OracleJDK中尚不可用),并用开源替代品替换受阻碍的第三方组件,以实现代码库之间的更接近对等。

·是的,垃圾收集和其他JVM参数是相同的。

·GC的性能在两者中都是相同的。

对于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=事件

我的理解是,OracleJDK不能用于生产,因此我不能合法使用它(不付费),用于我为公司构建的web应用程序。我必须使用OpenJDK。如果我错了,请纠正我!来自本文。

从Java 11开始,Oracle JDK仅限于开发和测试环境。Oracle JDK只能在以下情况下用于生产你购买了商业支持。相反,Oracle将提供Java基于OpenJDK免费构建,可用于生产。但是对于官方的Oracle JDK,真正的路线图如下所示:

更新:我错了。我可以免费使用OracleJDK,但6个月后不会获得安全更新,我们必须承担风险。看看上面链接的文章部分“新发布的列车对我的公司意味着什么?”。