私は長年OpenJDKを使用してきましたが、最初は問題のない小さなプロジェクトに使用していました。しかし、大きなおもちゃのために遊んでから、ランダム/不明な致命的なエラーとクラッシュ(H.264コーデックなど)に気付き始めました。それまでシステムクラッシュ+致命的なエラーに乗るのは悪夢でしたOpenJDKが原因です。
OpenJDKに完全にイライラして疲れた後、ついにOracle JDK 7に切り替えることにしました。それ以来、致命的なエラー/クラッシュはなくなりました。まだ発生しているかどうかを確認するためにトレースを行っていますが、システムがクラッシュすることはありません。
OpenJDKがライセンスの問題に過ぎない場合、なぜ安定性がそれで不可能なのでしょうか?
OpenJDKが安定版リリース内でバグを存続させているのに、Oracle JDKのクローン(実際はそうではない)を主張するのに、OpenJDKとOracle JDKを実際に技術的に分離しているのはなぜですか? (機能のクイックアベイラビリティのみ?または安定性/信頼性に焦点を当てていますか?)
技術的な違いは、それぞれの目標の結果です(OpenJDKはコミュニティに開かれた参照実装であり、Oracleは商用のものです)
どちらもJava APIのクラスの「ほぼ」同じコードを持っています。しかし、仮想マシン自体のコードは実際には異なり、ライブラリに関しては、OpenJDKはオープンライブラリを使用する傾向がありますが、Oracleはクローズライブラリを使用する傾向があります。たとえば、 フォントライブラリ 。
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に切り替えるだけで修正されます