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

我一直在使用Open JDK的年龄,最初是为没有问题的小项目。 但是自从我开始玩大玩具,我开始注意到随机/未知的致命错误和崩溃(与x.264编解码器等),这是一个噩梦,直到​​然后得到乘坐系统崩溃+致命的错误,由开放JDK。

在使用Open JDK完全沮丧和厌倦之后,我终于决定切换到Oracle JDK 7.从那时起,我的致命错误/崩溃消失了。 仍然做跟踪,看看是否发生,但从来没有得到这些系统崩溃。

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

为什么Open JDK会保持错误的存在,在那里有稳定的版本,但声称它的Oracle JDK的克隆(这不是真的),那么从JDK开放JDK和JDK的真正技术上是什么? (只有快速function的可用性?或着重于稳定性/可靠性?)

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

它们都具有与Java API中的类几乎相同的代码; 但是虚拟机本身的代码实际上是不一样的,而当谈到图书馆时,OpenJDK倾向于使用开放的库,而Oracle倾向于使用封闭的库; 例如, 字体库 。

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

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

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

所以,如果你想开发企业/商业软件,我会build议去Oracle JDK,因为它是经过彻底testing和稳定的。

我遇到了很多使用OpenJDK的应用程序崩溃的问题,这些问题通过切换到Oracle JDK来解决