2018年9月25日、Javaの最新版である「Java 11」およびその開発ツールキットである「JDK 11」がリリースされました。このバージョンは、新しいリリースサイクルが採用されて初めてのLTS(Long Term Support)版であり、今後どのような方針でJavaシステムのバージョン管理を行なっていくかを見極めなくてはならない重要なターニングポイントになります。
そこでこのリリースに先立って、GlassFishユーザ会がAzul Systems社(以下、Azul)と日本IBM社からスピーカーを招いて「【JDK 11 リリース直前】各ベンダのJDKリリースモデル特集! 」と題した勉強会を開催しました。本レポートではJDKのリリースモデル変更についての復習も交えながら、この勉強会の様子をレポートします。
Javaは有償化されない
Javaの開発および実行環境であるJDKは、2017年9月にリリースされたJDK 9からリリースモデルが変更され、6ヵ月に1度メジャーバージョンアップされることになりました。それに併せてOracleは、同社製のJDKビルドである「Oracle JDK」の無償提供を停止し、JDK 11以降は3年ごとにLTS(Long Term Support)版を有償提供していくという方針を発表しました。
この発表は、「 Javaが有償化される」という誤解を伴って広まり業界に衝撃を与えました。結論から言ってしまえば、今回明確に有償化が発表されたのはOracleが提供する「Oracle JDK」であり、すべてのJDKが有償になるわけではありません。Oracle JDK以外のJDKで代表的な例としては「OpenJDK」があります。これは、Oracleがオープンソースコミュニティに提供したリソースをベースとしてオープンソースで開発されているJDKであり、コア部分はOracle JDKとほぼ同一のものです。
AzulやIBMではOpenJDKをベースとしてビルドしたJDKバイナリの提供を行なっています。そしてOracle自身も、無償版Oracle JDKの提供をやめる代わりに、OpenJDKの独自ビルド(以下、Oracleビルド)を無償提供するようになりました。さらに、これまでOracle JDKにのみ搭載されていた独自の機能やツールがOpenJDKプロジェクトに寄贈されており、Oracle JDK自身もJDK 11以降はOpenJDKをベースに商用サポートを追加したものになります。
OpenJDKを選択した場合に大きな問題となるのはそのサポート期間です。OpenJDKの公式サポート期間は、各バージョンごとに次のバージョンがリリースされるまでとなっているため、実質的には6ヵ月のみです。サポート期間が終了したバージョンには、原則として修正パッチ等は提供されません。
Oracle JDKについては、前述のように3年ごとに長期のサポートが付いたLTS版をリリースする方針となっています。OracleによるJDKのサポート・ロードマップについては、以下のページを参照してください。
AzulやIBMをはじめとするOracle以外のJDKベンダでもそれぞれLTS版のJDKを提供しています。それぞれ価格帯やサポート方針が異なるため、Oracle JDKに代わる選択肢として検討する価値があります。その選択の参考にして欲しいというのが、今回の勉強会の開催趣旨となっています。
Azul Systemsは「Zing」と「Zulu」の2つのJavaランタイムを長期サポート付きで提供
Azulは、同社のJavaポートフォリオについて紹介しました。Azulは、JavaとJVMにフォーカスしたサービスを提供している会社であり、Javaポートフォリオとしては以下の3つが展開されているとのことです。
Zing - 優れたワークロードを実現した独自の高性能Javaランタイム
Zulu Enterprize - 長期間のサポートを提供するOpenJDKベースのJDKビルド
Zulu Embedded - OpenJDKベースで100%オープンソースの、組込み製品とIoTのためのカスタムJava SE
このうちZulu Enterpriseで使用されているJDK「Zulu」は、OpenJDKをベースとしてAzulがビルドして配布しているJDKバイナリです。Zuluそのものは無償でダウンロードおよび使用することができ、そこに有償のサポートを加えた製品がZulu Enterpriseという位置づけになっているそうです。
特徴的なのはサポート期間の長さで、JDK 8以前のバージョンでは10年以上、今後のLTSであるJDK 11や17では9年の有償サポート期間が設けられています。さらに、非LTSであるJDK 9や13、15といった中間バージョンでも、MTS(Mid Term Supoprt)として中期間のサポートが提供されるというのも、Oracle JDKをはじめとする他の主要なJDKとは異なる点です。
ZuluおよびOracle JDKのライフサイクルの比較
AzulによるJDKのサポート・ロードマップについては、次のページも参照してください。
IBMは独自JVM「OpenJ9」をバンドルしたJDKをAdoptOpenJDKを通じて配布
田中孝清氏
IBMも、OracleやAzulと並んで独自にJDKビルドを提供しているベンダの1つです。IBMからはクラウドソフトウェア事業部の田中孝清氏が登壇し、同社によるJDKの提供方針について紹介しました。
IBMでは、もともと「IBM SDK for Java Technology」という名称でJava SE仕様に準拠したJava開発・実行環境を提供してきました。田中氏によれば、これはJava EEをはじめとするサーバ用途のJavaにターゲットを絞ったもので、2017年(Java SE 8)までは同社のプロダクトに同梱される形でのみ提供されていました。
IBM SDK for Javaの特徴は、「 J9 VM」と呼ばれる独自実装のJVMを搭載している点です。J9 VMはIBMが一から開発したJVMであり、早い時期から先進的な機能を率先して取り入れてきたという特徴があります。また、Dumpエージェントなどの多彩な問題判別機能を有しているという強みもあるそうです。
2016年に、IBMはJ9 VMの実行環境のJavaに依存しないコア機能をEclipse OMRとしてオープンソース化しました。そして2017年、OMRベースで実装されたJ9 VMを「OpenJ9 」として公開しました。2018年からは、このOpenJ9をJVMとして採用し、そこにOpenJDKの成果物であるクラスライブラリ・ツールを同梱したJDKをOSSで提供しています。
2018年以降のIBM SDK for Java
OSS版JDK(OpenJ9+OpenJDK)に関しては、AdoptOpenJDK を通じてダウンロードできるようになっています。AdoptOpenJDKはOpenJDKベースのJDKビルドを提供する複数ベンダやコミュニティの共同プロジェクトです。無償サポートの期間はリリースから5年で、対象バージョンはJDK 8とJDK 11です。そのほかに有償サポートプランも用意されており、パッチ提供のほかに、障害時の調査やダンプ解析などのサービスが提供されるとのことです。
IBMのJavaサポート・ロードマップ
Red HatはRHELの商用サポートプランでOpenJDKをカバー
今回の勉強会にあわせて、Red Hat社のSenior Software Maintenance Engineerである木村貴由氏が、同社のOpenJDKのサポートプランについてブログにまとめてくれています。それによると、Red Hat Enterprise Linux(RHEL)にはOpenJDKも含まれており、サブスクリプションに加入していれば追加料金なしでOpenJDKのサポートを受けることができるとのことです。
サポート期間はOpenJDK 8が2020年6月まで、OpenJDK 11はリリース後に発表予定となっています。OpenJDK 9や10などの非LTSリリースに対しては商用サポートの予定はないそうです。詳しくは当該ブログ記事を参照してください。
Javaコミュニティリーダー陣によるオープンレター「Java Is Still Free」
一連のJavaのリリースモデルおよびOracleによるサポートプランの変更は、日本だけでなく、世界中のJava市場で同じように誤解と混乱を生んだようです。そこで、先日Javaコミュニティを牽引するリーダー達が共同で「Java Is Still Free 」というオープンレターを公開しました。この文書では、Oracleおよびその他のベンダから利用できるJDKに関して、無償および有償サポートの選択肢が詳細に解説されています。非常にわかりやすくまとまっているので、こちらも一読をお勧めします。
(2018年10月10日追記)
「Java Is Still Free」の日本語訳「Javaは今も無償です 」が公開されました。