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

我已经使用 OpenJDK 很长时间了,最初是在小型项目中使用,在这些项目中它没有任何问题。但是自从我开始在大型玩具中使用它,我开始注意到随机/未知的致命错误和崩溃(使用 H.264编解码器等) ,在此之前,这是一个噩梦,因为 OpenJDK 引起的系统崩溃 + 致命错误。

在对 OpenJDK 感到彻底失望和厌倦之后,我最终决定切换到 Oracle JDK 7。从那时起,我的致命错误/崩溃消失了。我还在做跟踪,看看是否会发生,但我还没有得到这些系统崩溃。

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

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

115048 次浏览

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

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

OpenJDK is a reference model and open source, while Oracle JDK is an implementation of the OpenJDK and is not open source. Oracle JDK is more stable than OpenJDK.

OpenJDK 是根据 GPL v2许可发布的,而 Oracle JDK 是根据 Oracle 二进制代码许可协议发布的。

OpenJDK 和 Oracle JDK 的代码几乎相同,但是 Oracle JDK 有更多的类,并且修复了一些 bug。

因此,如果您想开发企业/商业软件,我建议使用 Oracle JDK,因为它已经经过了全面的测试并且非常稳定。

I have faced lot of problems with application crashes using OpenJDK, which are fixed just by switching to Oracle JDK