緊急特集! Javaの無償版はなくならないぞ!に参加した

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はOracleJavaの大本として開発されているので、機能差分の心配はなさそう。またJava9からOracleのセキュリティパッチが確実に反映されるので、その点もうれしい。ビルド済みのOpenJDKもOracleから提供されるので、単純利用であればこれを使ええば問題なさそう。ということかと思います。

OpenJDKは細かくバージョンアップされるようになったのが懸念、という話をちらほら聞きますが、CIを回していれば問題になるケースはあまりないと思いますし、セキュリティアップデートは今までもされていたと思うのであまり問題がない気がします。インストーラー付きのバイナリ版OpenJREが出ればよりよいとは思いますが。

むしろFlight RecorderやMission Control といった商用機能がOpenJDKでも使えるようになったこと、JDKが配りやすくなったこと、新しい機能をいち早く取り入れられるようになったことなど、メリットしか感じないというのが個人的な感想です。