Javaのサポートについてのまとめ

Javaのサポート状況について混乱が発生しているように思います。Javaのサポートを各団体がどのように行なっているかをまとめてみます。

Javaのリリースサイクル

これまで、Javaは3年ごとを目標に結局5年くらいかけて次のバージョンを出したりしていましたが、それでJavaはなかなかバージョンアップしなくて古いと言われていました。それが2017年9月、今後は6ヶ月ごとにフィーチャーリリースを行うというリリースモデルに変更されました。Java9が2017年9月に出た6ヶ月後の2018年3月、実際に計画通りJava10がリリースされています。
この6ヶ月サイクルの中でリリースされるJava10やJava11での変更は、これまででいうとJava 8 update 20やJava 8 update 40のような機能リリースに相当するとのことです。
(ここのQ1)
https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence

問題になるのは、そのサポート期間です。この次の項から、それぞれの団体のサポートポリシーをまとめます。

OpenJDK

Javaの開発コミュニティで、OracleがメインスポンサーとしてJavaの開発を行なっています。実質的にすべてのJavaの実装の中心となります。OpenJ9など独自のJVMやAndroidのようなJava言語互換のプラットフォームはありますが、Java標準APIやコンパイラはOpenJDKのものを使っています。
http://openjdk.java.net/projects/jdk/

サポートポリシーとしては、半年ごとのリリースで次のバージョンが出るまでというのが公式発表です。確かに、これまでもJava 8 update20などは次のupdate40が出ればサポートは終了していたわけなので、これはこれで自然ですね。
問題はLTSです。Oracleの公式の発表ではOpenJDKにLTSは設定されていません。JavaのチーフアーキテクトであるMark Reinhold氏がいくつかのイベントでOpenJDKでも3年ごとのLTSを行うと話していますが、いまのところ公式発表にはいたっていません。また、Mark Reinhold氏の言う通りのLTSが行われるとしても、LTS間のオーバーラップはないので厳しいものがあります。
https://youtu.be/x7pkWlost64?t=5m39s

後述するようにIBMはOpenJDKでの4年間のサポートの意向を示していて、動向については注意する必要がありそうです。

Oracle JDK

Oracle様です。
Java11からは、Oracleと契約した顧客だけに提供されることになります。3年ごとにLTSとして5年間のサポートが行われます。追加のサポートとしてさらに3年、無期限サポートもあります。
http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html

Java8については、2019年1月までのサポート継続を表明しています。デスクトップ利用に関しては2020年まで。顧客向けには2022年3月と3年の追加サポートを予定しています。

金額は仮想マシン100台で1億2000万円という噂も
https://twitter.com/shun_tak/status/988256213379956738

IBM

IBMのJava SDKは2022年4月までJava8をサポートするようですね。
https://developer.ibm.com/javasdk/support/lifecycle/
JVMがJ9だと思うので注意が必要ですけど。

IBMは自社顧客向けのJava8サポートを少なくとも2025年まで行うとしています。
https://developer.ibm.com/javasdk/2018/04/26/java-standard-edition-ibm-support-statement/

また、この文章の中で、OpenJDKでも4年のLTSサポートを行いたいということが書いてあります。それとAdoptOpenJDKというプロジェクトを行なってることも書いていますね。これについては次の項で。

AdoptOpenJDK

AdoptOpenJDKは、OpenJDKのビルドを提供するコミュニティでIBMなどがスポンサーしています。
https://adoptopenjdk.net/index.html

LTSについて4年間のサポートを表明しています。また、Java8についても2022年9月までのサポートが予定されています。
https://adoptopenjdk.net/support.html

ということで、今後はAdoptOpenJDKのビルドを使うのが本命になりそう。

Zulu/Zulu Enterprise

ZuluはAzul Systemsが提供しているOpenJDKビルドです。Azul Systemsは OpenJDKのサポートを行う企業で元OracleのSimon Ritter氏が属している会社です。
CustomerにMicrosoftもあるので、たぶんMicrosoft Azureもzuluを使っているんではなかろうか。

ここでOpenJDKの独自ビルドを配布しています。
https://www.azul.com/products/zulu-and-zulu-enterprise/
JDK6もu107とかを提供しています。今後はどんな感じになるんだろう?

Zulu Enterpriseは商用サポートを提供していて、無制限の一番高いサポートでも$310,500です。Oracleのサポートに比べると断然お安い!
LTSに関しては8年のサポートを行うようです。また3年ごとのLTSだけではなく毎年9月のリリースについてMTS(Middle Term Support)を提供していて次のLTSが出てから2年のサポートを行なっていたり、それ以外の各リリースについても1年間の追加サポートを提供していたりします。
https://www.azul.com/products/zulu-and-zulu-enterprise/zulu-enterprise-java-support-options/

RedHat

RedHatはRed Hat Enterprise Linux上で動かすJDKについてサポートを提供していて、OpenJDK8の場合は2020年10月までサポートを行なっています。Java 11についての記述はありませんが、おそらくそれなりに長い期間のサポートを提供すると思います。
https://access.redhat.com/articles/1299013