Java 11正式版がリリース、本バージョンからOracle JDKのサポートは有償に。OpenJDKで無償の長期サポート提供は現時点で期待薄

2018年9月26日

Java 11正式版がリリースされました。

Java 11は2017年9月から始まった6カ月ごとのJavaバージョンアップサイクルからちょうど1年となるバージョンであり、また2014年3月に登場したJava 8以来、4年半ぶりに長期サポート(LTS:Long Term Support)対象となるバージョンでもあります。

Java 11での主な新機能は、単一ファイルのJavaコードをそのまま実行できること(JEP 330: Launch Single-File Source-Code Programs)、数テラバイトのヒープを扱え、かつガベージコレクションによる停止時間が10ミリ秒以下となるような低レイテンシを実現した新しいガベージコレクタ「ZGC」の実験的実装(JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental))、フライトレコーダーの搭載(JEP 328: Flight Recorder)、Unicode 10対応(JEP 327: Unicode 10)などが挙げられます。

また、非推奨になっていたJavaScriptエンジンの「Nashorn」が廃止されました

参考:JavaでJavaScriptを実行する「Nashorn」が非推奨に、ECMAScriptの速い進化に追いつけないと。代替案はGraalVM

Java 11からOracle JDKは有償サポートのみに

Java 11の登場でもっとも注目されているのは、Oracle JDKのサポートが有償になるという点でしょう。

Java 11からは、これまでオラクルから無償で提供されてきたOracle JDKへのバグフィクスやセキュリティパッチが有償サポートを結んだユーザーに対してのみ提供されるようになります

そしてJava 11はJava 8以来のLTS対象のバージョンとなります。これに伴いこれまでLTS対象だったJava 8のサポートは2019年1月に終了し、Java 8に対するバグフィクスやセキュリティパッチなどの提供はこれ以降行われなくなります(ただし個人向けのサポートは2020年12月まで)。

業務システムなどでJava 8を利用してきたユーザーは、セキュリティパッチなどの提供が終了する2019年1月末までにJava 11へ移行するべきでしょう。

ちなみにJava 9とJava 10はLTS対象ではなかったため、Java 9のサポートはJava 10の登場とともに終了し、Java 10のサポートもJava 11の登場とともに終了しました。Java 9、Java 10のユーザーもJava 11へ移行すべきということになります。

Javaは今後も6カ月ごとに新バージョンが登場し、新機能の追加や変更などが行われていきます。つまり2019年3月にはJava 12が、2019年9月にはJava 13が登場するのです。

しかしLTS対象のバージョンは3年にわたってバグフィクスやセキュリティパッチが提供されることが約束されています。

利用するバージョンを固定し安定したJava環境で利用したいユーザーにとって、LTS対象のバージョンこそ利用すべきJavaのバージョンとなります。そして今日からそれはJava 11になるのです。ちなみにJava 11の次にLTS対象のJavaが登場するのは3年後の2021年9月に登場するJava 17になります。

そしてJava 11でオラクルが提供するOracle JDKを利用し、LTSの期間となる3年にわたってセキュリティパッチなどの提供を受けたいユーザーは、オラクルとの有償サポート契約を結ぶ必要があります。

参照:Javaの新しい商用ライセンス、米オラクルが発表。月額料金でデスクトップは2.5ドル、サーバは25ドル。LTS版を利用可能

無償のOpen JDKでのLTS提供は期待薄

これまでと同様、Java 11も無償で使うことができます。もっとも代表的なのはオラクルによるOpenJDKビルドを利用することでしょう。

Linuxがさまざまなベンダからディストリビューションが提供されるように、JavaもOpenJDKのソースコードをもとにさまざまなベンダがビルドしたバイナリを提供しています。オラクルがビルドして提供するOracle JDKとOpenJDKはそのもっとも代表的なものといえます。

オラクルによるOpenJDKのビルドはjdk.java.netで提供されます

OpenJDK 11

オラクルは、同社が提供するOpenJDKのビルドがOracle JDKと機能と品質の両面で同じであり、本番環境にも対応する品質を備えたものである(production -ready open-source builds)と説明しています。

これまでOracle JDKを利用してきて今後も無償でJavaを利用したいと考えているユーザーにとって、オラクルのOpenJDKビルドはもっとも有力な選択肢といえます。

ただしオラクルが提供するOpenJDKビルドでは、次のバージョンが登場するまでの6カ月間はアップデートが提供されますが、LTSに対応した3年間のバグフィックスやセキュリティパッチを提供する予定は現在のところ表明されていません。

米オラクルでJava Platform Groupチーフアーキテクトを務めるMark Reinhold氏は8月17日、jdk-devメーリングリストでの「What does LTS mean for OpenJDK?」(OpenJDKにとってLTSは何を意味する?)のスレッドでの問いかけに次のように答えています

> What will Java 11 get from Oracle?
> - 6 months of public $free updates with binaries published at
> http://jdk.java.net
> - 3 years of public $free updates with binaries published at http://jdk.java.net
> - something else?

>Java 11でオラクルが提供するのは?
> - 6カ月の無料アップデート用バイナリを
> http://jdk.java.net で公開すること
> - 3年の無料アップデートバイナリを http://jdk.java.net で公開すること
> ほかにある?

この問いかけにReinhold氏は次のように答えています。

At least six months of free, GPL-licensed updates with binaries at http://jdk.java.net.

(I say “at least” because that’s the current plan. The plan could change, to a longer time period, if the situation warrants.)

少なくとも6カ月のあいだ無料でGPLライセンスのアップデート用バイナリが http://jdk.java.net. で提供される。
(“少なくとも”と書いたのは、それが現在の計画であるからだ。計画は変わり得る、長期的には、もし状況が正当ならば)

Reinhold氏はJavaのどのバージョンでも提供される6カ月間のアップデートにのみ言及し、LTSで期待される3年間のアップデートについては言及しませんでした。

また8月23日付けの別のメッセージでも、Java 12がリリースされたあとは、オラクルはOpenJDKビルドに対するセキュリティパッチの提供をJava 12に対して行うと説明しています。つまりオラクルが同社がビルドしたOpenJDK 11ビルドのサポートを行うのはJava 12が登場するまでの6カ月だけ、ということです。

Reinhold氏は昨年の時点では下記のようにOpenJDKにおけるLTS対応を期待させる発表をしていました(あるいはこれはOpenJDKのソースコードのメンテナンス期間と理解すべきだったのかもしれません)。しかし上記の発言からすれば、Java 11においてオラクルが提供するOpenJDKビルドのLTS対応は期待できません。

ただし「計画は変わり得る」と書いているように、Reinhold氏はまだあきらめてはいないのかもしれません。

何にせよ現時点では、オラクルが提供する無償のOpenJDKビルドを使う場合には6カ月ごとのJavaのバージョンアップに追随していく覚悟が必要です。

今後のJavaのバージョンアップにおいては過去のバージョンに対する互換性は保証されません。Javaの新バージョンが登場するたびに開発中や運用中のアプリケーションに対して互換性テストを行い、万が一互換性のない部分が発見された場合には修正を行う作業が発生することになります。

OpenJDKやOracle JDK以外にもJDKの選択肢はある

オラクルがビルドして提供するOpenJDK以外にも、JavaのJDKには複数の選択肢があります。

今後も無償でJava 11のLTSに対応した3年間のバグフィックスやセキュリティパッチを入手したいと考える利用者にとって、もっとも有力な候補となるのはAdoptOpenJDKを利用することでしょう。

AdoptOpenJDKはコミュニティによってビルドされ無料で配布されているJDKのディストリビューションです。コミュニティの主要なスポンサーにIBMやマイクロソフトの名前があります。

AdoptOpenJDKの現時点でのサポートポリシーによると、Java 8は少なくとも2023年9月までサポートを提供し、Java 11はリリースから少なくとも4年間、2022年9月までサポートを提供するとしています。

Java 8もJava 11もオラクルより長いサポート期間を設定することで、積極的なユーザーの取り込みをはかっているようです。

Red Hat Enterprise LinuxにバンドルされているOpenJDKは、Red Hatによってサポートされます。Red Hatが公開している「OpenJDK ライフサイクルおよびサポートポリシー」では、Red HatはOpenJDK 8のサポートを2020年10月まで行う(英語版のページではJava 8は2023年6月まで)とされていますし、OpenJDK 11についても独自のサポート期間を設定しています。

そのほかIBMもJDKを提供し独自のサポート期間を設けていますし、独自にJDKをビルドしサポートを提供するAzul Systemsのようなベンダも存在します

オラクルも新しいJavaランタイムであるGraalをオープンソースで公開していますし、IBMがオープンソース化したEclipse OpenJ9もあります。

参考:オラクル、JavaやJavaScript、Ruby、Pythonなど多言語対応を単一ランタイムで実現する「GraalVM」をオープンソースで公開。Twitterが本番環境で採用
参考:JavaVM「Eclipse OpenJ9」公開。IBMが「Java 9と同時にオープンソース化する」との約束を果たす

あるいはJavaに対応したPaaS型クラウドサービスを利用することで、今後のJava環境のアップデートはクラウドに任せてしまうという選択肢もあるかもしれません。

JavaプログラマにとってJava 11以後の世界でどのようなJava環境を構築するのか、検討する際にはOracle JDKとOpen JDK以外にも視野を広く持って検討することになるのでしょう。そしてそれはもしかしたら、Javaのエコシステムにとって新しい変化を引き起こしていくことになるのではないでしょうか。

(2018/9/26 9:15修正:Oracle JDKは無償では入手可能できないように書いていましたが、入手可能でした。お詫びして訂正します。これに合わせてタイトルと本文を修正しました)

関連記事

あわせて読みたい

Java プログラミング言語 Oracle




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本