2018/6/20にJJUG主催で行われたJJUG ナイトセミナー 「緊急特集! Javaの無償版はなくならないぞ!」の前半まとめです。個人的に気になるところだけまとめています。
Javaのリリースモデル(Java8まで)
OpenJDKのソースをもとに、OracleがOracleJavaをビルドしてリリースしていた。OpenJDKとOracleJavaの差分は以下の通り。
つまりコアライブラリやコアレベルは、OpenJDK/Opracleはベースは一緒。ただしセキュリティアップデートについては、Oracleが開発。セキュリティパッチやバグフィックス、機能追加はOracle側からOpenJDKにも還元していたが、同期は不完全だった。
Javaのリリースモデル(Java9以降)
Java9以降は、Oracleから2つのバイナリを提供する。1つがOpenJDKのソースコードを、そのままOracleがビルドしたバイナリ版のOpenJDK。ライセンスはGPL v2 + classpath exception(なので自由に配れそう)。
もう一つがOracleJava。こちらは商用ライセンスで提供。OracleJavaはJava8と同様に、OpenJDKのソースコードを元に以下の機能を追加したもの。
セキュリティパッチについては、Java9以降は、OpenJDKにも確実に全部アップデートが提供される。セキュリティパッチはOracle側で作ってOpenJDKに入れるような運用となる。
リリースサイクル
OpenJDKのバージョンアップは半年に一度(3月と9月、確実にバージョンアップ)。またアップデートリリース(脆弱性対策/バグFIX)は3ヶ月に一度(1,4,7,10月)。
OracleJavaは3年に一度のリリース。セキュリティアップデートは提供され、有償サポートがあればずっとサポート(最低8年)。
その他
- OpenJDKのバイナリ配布 http://jdk.java.net/
- 過去のOracleJavaは引き続きダウンロード可能
- OracleJava8は2019/1までアップデートされるが、個人利用に限り2020年末までアップデートが提供される(おそらく公共機関対策
- Java PluginとJava Web StartはJava8まで。Java9のAppletについては、IEIは64bit版を認識しない JavaSE10からはAppletはない。
- 詳細はJava Day 2018 の発表資料 JDKの新しいリリースモデルの資料を参考に
結論
OpenJDKはOracleJavaの大本として開発されているので、機能差分の心配はなさそう。またJava9からOracleのセキュリティパッチが確実に反映されるので、その点もうれしい。ビルド済みのOpenJDKもOracleから提供されるので、単純利用であればこれを使ええば問題なさそう。ということかと思います。
OpenJDKは細かくバージョンアップされるようになったのが懸念、という話をちらほら聞きますが、CIを回していれば問題になるケースはあまりないと思いますし、セキュリティアップデートは今までもされていたと思うのであまり問題がない気がします。インストーラー付きのバイナリ版OpenJREが出ればよりよいとは思いますが。
むしろFlight RecorderやMission Control といった商用機能がOpenJDKでも使えるようになったこと、JDKが配りやすくなったこと、新しい機能をいち早く取り入れられるようになったことなど、メリットしか感じないというのが個人的な感想です。