从技术上讲,Oracle JDK 和 OpenJDK 之间的主要区别是什么?[重复]
- 2024-10-24 08:50:00
- admin 原创
- 221
问题描述:
我使用 OpenJDK 已经很久了,最初是用于小型项目,没有出现任何问题。但自从我开始将它用于大型项目后,我开始注意到随机/未知的致命错误和崩溃(使用 H.264 编解码器等),在此之前,解决由 OpenJDK 引起的系统崩溃+致命错误简直是一场噩梦。
在对 OpenJDK 感到彻底失望和厌倦之后,我最终决定改用 Oracle JDK 7。从那时起,我的致命错误/崩溃就消失了。我仍在跟踪它是否发生,但我从未遇到过那些系统崩溃。
现在我想知道,如果 OpenJDK 只是一个许可证问题,为什么它不可能具有稳定性?
为什么 OpenJDK 在其稳定版本中保留了错误,但声称它是 Oracle JDK 的克隆(但实际上并非如此),那么 OpenJDK 与 Oracle JDK 在技术上真正有什么区别?(仅提供快速功能?还是专注于稳定性/可靠性?)
解决方案 1:
技术差异是由每个人的目标决定的(OpenJDK 是参考实现,向社区开放,而 Oracle 是商业实现)
它们都具有“几乎”相同的 Java API 中的类代码;但是虚拟机本身的代码实际上是不同的,并且当涉及到库时,OpenJDK 倾向于使用开放库,而 Oracle 倾向于使用封闭库;例如 字体库。
解决方案 2:
OpenJDK 是参考模型,并且开源,而 Oracle JDK 是 OpenJDK 的实现,不开源。Oracle JDK 比 OpenJDK 更稳定。
OpenJDK 是在 GPL v2 许可下发布的,而 Oracle JDK 是在 Oracle 二进制代码许可协议下获得许可的。
OpenJDK 和 Oracle JDK 有几乎相同的代码,但是 Oracle JDK 有更多的类并且修复了一些错误。
因此,如果您想开发企业/商业软件,我建议您使用 Oracle JDK,因为它经过了全面测试并且稳定。
我在使用 OpenJDK 时遇到过很多应用程序崩溃的问题,只需切换到 Oracle JDK 即可解决
扫码咨询,免费领取项目管理大礼包!