Java
OpenJDK
iBM
adoptopenjdk
zule

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

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

Javaのサポート状況について混乱が発生しているように思います。Javaのサポートを各団体がどのように行なっているかをまとめてみます。
知っておいてほしいのは、Javaの実装やサポートはOracle JDKかOpenJDKの二択、ではないということです。
ここでサポートはバグやセキュリティに対応したパッチがリリースされることを表しています。

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
(日本語訳)
https://orablogs-jp.blogspot.jp/2018/05/update-and-faq-on-java-se-release.html

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

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様のJDKです。
Java11からは、実運用に使えるのはOracleと契約した顧客だけになります。3年ごとにLTSとして5年間のサポートが行われます。追加のサポートとしてさらに3年、無期限サポートもあります。
http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html

当初、バイナリを入手できるのは顧客だけとのことでしたが、2018/6/21に更新されたサポートロードマップでは、Java SE 11から開発やデモ用途では引き続きOracle JDKが使えるということになりました。
上記 日本語訳は3月時点のものなので、英語版を確認してください。
Oracle Java SE Support Roadmap

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

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

ここに価格表がありました。
https://www.oracle.com/jp/corporate/pricing/price/index.html
プロセッサあたり60万円で、そこにプロセッサコアファクタとして0.5という料率が設定されています。ただしAzureとAWSではこの料率は適用されません。また、ハイパースレッドの場合、2CPUを1CPUとして計算するようです。
ということで、自前のサーバーやOracle Cloudでハイパースレッド有効の4CPU仮想マシン100台なら2CPUx.5x100台x60万=6000万だけどAWSやAzureなら1億2000万ということになりそう。

しかしながら、2018/6/21に新しいJava SE Subscriptionが公開されています。
Oracle Introduces New Java SE Subscription Offering for Broader Enterprise Java Support
デスクトップの場合は$2.5/人・月かそれ以下、サーバーの場合は$25/プロセッサ・月かそれ以下、そしてボリュームディスカウントがある、というようなことが書かれています。
Java SE Subscription FAQ

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
コミュニティのOpenJDKビルドファームが稼働

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

ということで、公式発表ベースで考えるなら今後はAdoptOpenJDKのビルドを使うのが本命になりそう。
しかし、大変そう。
https://github.com/AdoptOpenJDK/openjdk-build/issues

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は無償で使えますが、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/

Red Hat

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