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

问题

这个问题在这里已有答案:

  • Oracle JDK和OpenJDK 4答案之间的差异

我一直在使用OpenJDK,最初用于没有问题的小项目。但是自从我开始玩大玩具之后,我开始注意到随机/未知的致命错误和崩溃(使用H.264编解码器等),直到那时才出现系统崩溃造成致命错误的噩梦通过OpenJDK。

在对OpenJDK感到非常沮丧和厌倦之后,我终于决定切换到Oracle JDK 7.从那以后,我的致命错误/崩溃消失了。我仍然在追踪它是否发生,但我还没有得到那些系统崩溃。

现在我想知道,如果OpenJDK只是一个许可证问题,为什么稳定性不可能呢?

为什么OpenJDK在其稳定版本中保留了bug,但声称它是Oracle JDK的克隆(实际上并非如此),那么OpenJDK与Oracle JDK在技术上是分开的呢? (只有快速功能可用性?还是专注于稳定性/可靠性?)


#1 热门回答(69 赞)

技术差异是每个目标的结果(OpenJDK意味着参考实现,对社区开放,而Oracle意味着是商业的)

它们都具有"几乎"相同的Java API类的代码;但是虚拟机本身的代码实际上是不同的,当涉及到库时,OpenJDK倾向于使用开放库,而Oracle倾向于使用封闭的库;例如,the font library


#2 热门回答(61 赞)

OpenJDK是一个参考模型和开源,而Oracle JDK是OpenJDK的一个实现,并不是开源的。 Oracle JDK比OpenJDK更稳定。

OpenJDK根据许可证GPL v2发布,其中Oracle JDK根据Oracle二进制代码许可协议获得许可。

OpenJDK和Oracle JDK具有几乎相同的代码,但Oracle JDK有更多的类和一些错误修复。

因此,如果你想开发企业/商业软件,我建议你选择Oracle JDK,因为它经过了彻底的测试和稳定。

我使用OpenJDK遇到了许多应用程序崩溃的问题,只需切换到Oracle JDK就可以解决这个问题