Java 9のその先へ~JavaOne Conference 2017レポート

第2回JDKの新しいリリースモデルに要注目 OpenJDKとOracle JDKの違いにも注意が必要[JavaOne 2017]

Javaの開発環境であるJDKのリリースモデルについて、Oracleは2017年9月に、これまでの2年ごとのメジャーアップデートという方針を改め、6ヵ月ごとにアップデートを繰り返す時間ドリブンのモデルに切り替えることを発表しました。

同10月1日から5日に米サンフランシスコで開催された「JavaOne 2017」において、この新しいリリースモデルの関する詳細が明らかにされたので、本記事でレポートします。

Oracle, Director Product Management Java Platform, Aurelio Garcia-Ribeyro氏
Oracle, Director Product Management Java Platform, Aurelio Garcia-Ribeyro氏

新しいJDKのリリースモデル

OracleがJDKのリリースモデルを変更する計画を明らかにしたのは、公式ブログ「Java Platform Group, Product Management Blog」の9月6日のエントリでのことでした。この提案の概要は以下のとおりです。

  • Java SEのリリースについて、これまでの機能ドリブンモデルではなく、時間ドリブンのリリースモデルを採用する
  • Java SEのリリースサイクルは6ヵ月ごととする
  • OracleはGPLライセンスの下でOpen JDKのビルドを出荷する
  • 従来Oracle JDK向けに有償で提供されていた機能はオープンソース化してOpenJDKに寄贈し、将来的には両者のビルドの違いをなくす
  • OracleはOracle JDKの長期サポート(LTS:Long Term Support)を有償提供する
  • 新しいモデルはJava 9以降に適用される(Java 8以前のサポートは従来どおり)

前者2項目はJava SEプラットフォームならびにその開発ツールであるJDK全般に関わることです。従来はJCP(Java Community Process)で承認された新機能すべての開発が完了した段階でメジャーリリースとする方針を取っていましたが、Java 9以降は6ヵ月サイクルで期間を区切って、その時点で完成している新機能をリリースしていくことになります。

後者3項目はOracleによるリリースとサポートの話になっています。OracleはOpenJDKをベースにしたOracle版ビルドとしてOracle JDKを提供しています。Oracle JDKについては、商用サポート契約を結んでいる顧客に対して長期サポートを提供するとのことです。

OpenJDKのリリースラインは1本

今回JavaOne 2017のセッションでは、この新しいリリースモデルに関してもう少し詳しい内容が発表されました。新しいリリースサイクルを表した図が以下のものになります。なお、リリース予定日を含めて、この発表内容自体が今後変更になる可能性もあるので注意してください。

2017年10月、JavaOne 2017で発表されたリリースサイクル
2017年10月、JavaOne 2017で発表されたリリースサイクル

OpenJDKについては、当初の発表どおり6ヵ月ごとに機能リリースが行われます。今までのように「JDK 8」「JDK 9」のような複数のリリースラインは無くなり、リリースラインはメインの1本ということになります。バージョン番号は、2018年3月リリース版が「18.3⁠⁠、2019年9月リリース版が「19.9」のように、リリース年月を元にしたものになります。メジャーバージョンという概念はJava 9で最後となり、Java 10といいバージョンはリリースされないそうです。

なお、新しく導入される機能についてはOpenJDKプロジェクトの「JEPプロセス」にもとづいて提案・議論が行われます。これは従来のJava 9のなどと同様です。JEPで提案されている新機能には、言語仕様やJava VMの仕様に変更を加えるような修正も含まれています。

Oracle JDKは3年ごとにLTS版をリリース

Oracle JDKについては、18.9以降、3年ごとにLTS版をリリースしていくとのことです。サポート期限は最大で8年間とのことです。

Oracle JDKのサポート・ロードマップについては、下記のページに公式アナウンスが掲載されています。

Oracle Java SEサポート・ロードマップ
http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html

これによると、機能リリースはOpenJDKと同様に6ヵ月ごとのサイクルで、メンテナンスおよびセキュリティアップデートは年4回となっています。

Oracle JDK 9と18.3は短期サポートのみ

non-LTS版のOracle JDKについては、次バージョンのnon-LTS版がリリースされるのと同時にサポートが終了すると明記されています。注意しなければいけないのは、LTS版のOracle JDKの提供は18.9からなので、先日リリースされたJDK 9と、新しいモデルの最初のリリースとなる18.3についてはnon-LTS版だということです。したがって、それぞれのサポート期間は6ヵ月しかありません。

また、non-LTSのOracle JDK 8のサポートも2018年9月までの予定となっているので、それまでに最新バージョンにアップデートするか、Oracleと商用サポート契約を結ぶ必要があります。

Early Access版はサブプロジェクトごとに公開

話をOpenJDKに戻します。OpenJDKプロジェクトでは、従来より正式リリース前の開発バージョンを、試験やフィードバック目的でEarly Access(EA)版として公開してきました。新しいリリースモデルでは、EAビルドの公開は、JDKの機能リリース全体ではなく各サブプロジェクトごととすることを提案しているそうです。

OpenJDKプロジェクトでは、さまざまな新機能を個別のサブプロジェクトとして開発しています。機能リリースでは複数のサブプロジェクトの成果が取り込まれることもあるわけですが、EAの公開は機能リリースとは独立して行おうということです。すなわち、それぞれのEAにはそのプロジェクトで開発中の新機能のみが含まれることになります。

リリースモデルの刷新はJava関係者全員に影響する

今回の発表は、Javaのプロダクトやサービスをを提供しているすべての開発者やプロバイダに影響するものです。OpenJDKはこれまで通り無償で使えますが、短いサイクルで次々と新機能が追加されることになります。6ヵ月を過ぎると次のバージョンがリリースされ、古いバージョンはメンテナンスの対象外になるため、機能を固定した上で使い続けるということが難しくなります。なお、セキュリティパッチの適用については現状ではまだ方針が明らかにされていません。

まだ不確定な要素があるとはいえ、今回の発表はかなり影響範囲の大きなものです。最新の動向に注目した上で、自分のプロダクトのメンテナンスをどうするべきか、方針を検討する必要が出てくるでしょう。

JavaOne 2017
https://www.oracle.com/javaone/

おすすめ記事

記事・ニュース一覧