web-dev-qa-db-ja.com

技術的には、Oracle JDKとOpenJDKの主な違いは何ですか?

私は長年OpenJDKを使用してきましたが、最初は問題のない小さなプロジェクトに使用していました。しかし、大きなおもちゃのために遊んでから、ランダム/不明な致命的なエラーとクラッシュ(H.264コーデックなど)に気付き始めました。それまでシステムクラッシュ+致命的なエラーに乗るのは悪夢でしたOpenJDKが原因です。

OpenJDKに完全にイライラして疲れた後、ついにOracle JDK 7に切り替えることにしました。それ以来、致命的なエラー/クラッシュはなくなりました。まだ発生しているかどうかを確認するためにトレースを行っていますが、システムがクラッシュすることはありません。

OpenJDKがライセンスの問題に過ぎない場合、なぜ安定性がそれで不可能なのでしょうか?

OpenJDKが安定版リリース内でバグを存続させているのに、Oracle JDKのクローン(実際はそうではない)を主張するのに、OpenJDKとOracle JDKを実際に技術的に分離しているのはなぜですか? (機能のクイックアベイラビリティのみ?または安定性/信頼性に焦点を当てていますか?)

115
YumYumYum

技術的な違いは、それぞれの目標の結果です(OpenJDKはコミュニティに開かれた参照実装であり、Oracleは商用のものです)

どちらもJava AP​​Iのクラスの「ほぼ」同じコードを持っています。しかし、仮想マシン自体のコードは実際には異なり、ライブラリに関しては、OpenJDKはオープンライブラリを使用する傾向がありますが、Oracleはクローズライブラリを使用する傾向があります。たとえば、 フォントライブラリ

73
morgano

OpenJDKは参照モデルであり、オープンソースですが、Oracle JDKはOpenJDKの実装であり、オープンソースではありません。 Oracle JDKはOpenJDKよりも安定しています。

OpenJDKは、ライセンスGPL v2の下でリリースされ、Oracle JDKはOracle Binary Code License Agreementの下でライセンスされています。

OpenJDKとOracle JDKのコードはほぼ同じですが、Oracle JDKにはさらに多くのクラスといくつかのバグが修正されています。

したがって、エンタープライズ/商用ソフトウェアを開発する場合は、Oracle JDKを使用することをお勧めします。完全にテストされ安定しているからです。

OpenJDKを使用してアプリケーションがクラッシュするという多くの問題に直面しましたが、Oracle JDKに切り替えるだけで修正されます

64
User007