从技术上讲,Oracle JDK和OpenJDK之间的主要区别是什么?

2022-08-31 09:07:04

多年来,我一直在使用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即可修复


推荐