こんにちは。サイオステクノロジー有村です。
JJUG主催イベント【東京】JJUG ナイトセミナー 「緊急特集! Javaの無償版はなくならないぞ!」に参加してきました。
JJUGさんはよくナイトセミナーを開催していますが、今回のナイトセミナーは「Java の無償版がなくなる」「Javaが有償化される」という話の独り歩きに対抗するためのイベントです。
また、OpenJDKの開発に携わる方法に関するセッションもありました。
今回は一つ目のセッションの内容についてレポートします。
内容はJDKの新しいリリースモデルに関する解説です。
JDK8までのリリースモデル
これまでのJavaは以下のようなリリースモデルとなっていました。
- OpenJDKはソースコードのみを提供し、OracleJDKはJDK/JREのバイナリのみを提供する
- OracleJDKはOpenJDKをベースとし、JavaFXなど追加の機能をあわせて提供する
- JCP(Java Community Process)で承認された新機能すべての開発が完了した段階でメジャーリリース
- OracleJDKのアップデートリリースをOpenJDKに反映するが、同期は不完全、機能追加も含む
結果として以下のような問題が起きていました。
- 搭載予定の機能の開発がリリース日までに間に合わないなど、リリースが安定しない
- リリース間隔が長いため、言語としての進化が遅くなる
- リリース間隔が長いため、ITトレンドやインフラの進化に適応できない
具体的にはJava9のリリースは7月下旬から9月下旬に延期されたり、新機能の数はJDK7では21、JDK8では55、JDK9では91とリリースに合わせて搭載の必要のある機能が急激に増えていました。
完成している機能もリリースまで塩漬けになるので、非常にもったいない状況であるともいえます。
JDK9以降のリリースモデル
これからのJavaは以下のようなリリースモデルとなります。
- OpenJDKはソースコードに加え、バイナリをOracleが生成して無償提供する
- OpenJDKのバイナリにインストーラーを追加したものをOracleJDKとして有償提供する
- OpenJDKのバイナリは6ヶ月単位(3月、9月)にリリースされ、開発済みの新機能がリリースごとに追加される
- OpenJDKの脆弱性対策やバグフィックスに対するアップデートは四半期に一度
- OpenJDKのアップデートには新機能搭載は含まれない
- OpenJDKはコミュニティによる無償サポートを得られる
- OpenJDKは新バージョン提供開始時点で前バージョンはEOLとなる(重複しての提供はない)
- OracleJDKはJDK11から3年に1度、その時点のOpenJDKと同じバージョンとしてリリースされる
- OracleJDKはオラクルにより最低8年の有償サポートを提供する
変更を踏まえて
新たなリリースモデルには以下のようなメリットがあります。
- リリース日時が安定し、機能追加も半年ごとにコンスタントに行われ、開発された新機能が順次利用できる
- 同じバージョンのOpenJDKとOracleJDKの機能的な差異がなくなる
- 単一のソースコードに機能追加とメンテナンスが継続して行われる
- 長期間固定のバージョンで利用したい用途にも有償の選択肢で対応
というわけで、懸念されていた話に対する回答は以下の通りでした。
- 今後もOpenJDKは無償で提供されるよ!
- 長期間固定バージョンで利用したい場合だけサポートの手厚い有償のOracleJDKを利用すればいいよ!
最後に
なお、現在OpenJDK11はEarlyAccess版を提供しています。
https://jdk.java.net/11/
これからのJavaのライフサイクルに慣れるためにも、ぜひどうぞ。