本文摘自JavaGuide。
可能在看这个问题之前很多人和我一样并没有接触和使用过 OpenJDK 。
那么Oracle和OpenJDK之间是否存在重大差异?
下面我通过收集到的一些资料,为你解答这个被很多人忽视的问题。
对于Java 7,没什么关键的地方。
OpenJDK项目主要基于Sun捐赠的HotSpot源代码。
此外,OpenJDK被选为Java 7的参考实现,由Oracle工程师维护。
关于JVM,JDK,JRE和OpenJDK之间的区别,Oracle博客帖子在2012年有一个更详细的答案:
问:OpenJDK存储库中的源代码与用于构建Oracle JDK的代码之间有什么区别?
答:非常接近 - 我们的Oracle JDK版本构建过程基于OpenJDK 7构建,只添加了几个部分,例如部署代码,其中包括Oracle的Java插件和Java WebStart的实现,以及一些封闭的源代码派对组件,如图形光栅化器,一些开源的第三方组件,如Rhino,以及一些零碎的东西,如附加文档或第三方字体。展望未来,我们的目的是开源Oracle JDK的所有部分,除了我们考虑商业功能的部分。
总结:Oracle JDK大概每6个月发一次主要版本,而OpenJDK版本大概每三个月发布一次。
OpenJDK 是一个参考模型并且是完全开源的,而Oracle JDK是OpenJDK的一个实现,并不是完全开源的;Oracle JDK 比 OpenJDK 更稳定。
OpenJDK和Oracle JDK的代码几乎相同,但Oracle JDK有更多的类和一些错误修复。
因此,如果您想开发企业/商业软件,我建议您选择Oracle JDK,因为它经过了彻底的测试和稳定。
某些情况下,有些人提到在使用OpenJDK 可能会遇到了许多应用程序崩溃的问题,但是,只需切换到Oracle JDK就可以解决问题;
在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能;
Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过更新到最新版本获得支持来获取最新版本;
Oracle JDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL v2许可获得许可。
相关阅读 >>
更多相关阅读请进入《OpenJDK》频道 >>
深入理解Java虚拟机 JVM高级特性与实践 周志明 第3版
这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典。