Java
oracle
JDK
LTS
Zulu

JDKの長期商用サポート(LTS)の提供ベンダー比較(無償利用についても言及あり)

2018/10/11 更新

重要ドキュメント「Java is Still Free」へのリンクを無償利用の説明付近に追記しました。日本語訳へのリンクもあります。

2018/10/06 更新

ちょっと思うところがあり、 Javaの無償サポートについて の記事を最初に書くように変更しました。あと、Oracleの項目にJDK 12以降のバージョンやパブリッククラウド上での利用に関する記述を追記しました(その他こまごま表現を修正なども)。

はじめに

はじめまして、u-tanickです。今のところSIerの中の人として地味に働いてます。

で、Java 11がとうとうリリースされましたね!

2017年の9月のJava 9リリース前後から、Javaのリリースサイクルが早くなったり、Java EEがオープンコミュニティに譲渡されたりと、いろいろドタバタし続けていましたが、ひとまず区切りのJava 11が出たということで、自分が見聞きした情報を元に、Java 11以降のサポート(無償・有償) についてまとめておきたいと思います。(自分向けの備忘録にもなると思って書いてみたら長い。。。)

極力公式情報など出自のはっきりしたを情報を元にしてはいますが、間違いとかあったらご指摘ください。

あと、こんなダラダラした記事は読む気しないやって方は2018/10/09のJJUGナイトセミナーでKUBOTA Yuji氏が講演された下記のスライドが素晴らしくまとまっているので、お勧めします。

Java11:サポートとVM機能編 KUBOTAYuji(@sugarlife) JJUGNightSeminar2018/Oct
https://www.slideshare.net/YujiKubota/introduction-to-java-11-support-and-jvm-features

Javaの無償サポートについて

Javaが有償になるから使えない、見たいな意見もちらほら聞こえますが、
Javaの仕様(JEP)は、今まで通りオープンソースプロジェクトで策定されており、
その成果物としての OpenJDKは、Java11以降でもそれ以前と同じく無償で利用が可能です

「Java、タダじゃなくなったってよ。」見たいな極端な流れを危惧してか、世界のJavaチャンピオンが共同で「Java is Still Free」というJavaの開発・サポート・リリースに関するまとめを執筆されています(これはこれでタイトルが強烈なのですが)。日本語訳も最近有志の方が作成しててます(すごい)。

(英語版)Java is Still Free
(日本語版)Java is Still Free

またこれも、Java11以前からずっと同じなのですが、OracleやIBMなどのいくつかのベンダーは、それぞれの会社ごとに自前でビルドしたJavaのバイナリを提供しており、その独自バイナリに対して、無償のサポートや有償のサポートを提供しているということになります。

サポートについてJava11以前と以降で違うのは、Oracleが無償で自前のバイナリのサポートをしなくなった、ということくらいでしょうか。といってもこれのインパクトがでかいのですが。特に顧客のことを考えた場合に、サポートの有無やその体系説明がシンプルでないと理解してもらう=不安を取り除くのが大変になりますし。

そのうえで、まず、OpenJDKを極力無償で使いたい場合の選択肢 について、簡単にまとめてみます。

JDKの名称 提供元 サポート期間 サポート提供 サポートレベル
OpenJDK Javaコミュニティ ※1 半年 コミュニティ ベストエフォート
AdoptOpenJDK with HotSpot AdoptOpenJDKプロジェクト ※2 4年 コミュニティ ベストエフォート
AdoptOpenJDK with Eclipse OpenJ9 AdoptOpenJDKプロジェクト 4年 コミュニティ ベストエフォート
Zulu @ Microsoft Azure / Azure Stack ※3 Azul Systems Zulu Enterpriseに依存 Azul Systems Zulu Enterprise

※1

提供元(というか仕様の策定)はJavaコミュニティが行いますが、提供バイナリの作成はコミュニティを支援しているOracleが行うようです(これも従来通り)。

https://jdk.java.net

※2

AdoptOpenJDKプロジェクトが提供するJDKは、内蔵するJVMによって次の2種類があります。

  • AdoptOpenJDK with HotSpot
    • OpenJDK仕様に則ったJVMである HotSpot を使用
  • AdoptOpenJDK with Eclipse OpenJ9
    • IBMが支援するOSS JVMである Eclipse OpenJ9 を使用

https://adoptopenjdk.net/

どちらの種類を選択するのかについては検討が必要になります。

※3

Java 11がリリースされた直後の発表で、Microsoft Azure自体にも利用されていることなどから、ZuluをAzure状のVMで利用する場合に対して、無償のLTS(Zulu Enterpriseと同じ扱い)が提供されることが決まりました。

https://azure.microsoft.com/en-us/blog/microsoft-and-azul-systems-bring-free-java-lts-support-to-azure/

Zulu Enterpriseとは、Azul Systemsが提供する無償のJDKであるZuluの商用サポート版です。
また、Zuluは、無償利用可能なJavaなのですが、無償利用時のサポートについては特に明言されていません。
そのため、商用利用を考えた場合は、Zulu Enterpriseとしてサポートを購入するのが必須だろうと考えます。

今後、他のパブリッククラウド(AWS、GCPなど)でもAzureと同様に何らかのJDKのLTSが提供されるかもしれません。この辺は要チェックかと思います。(2018年9月26日時点はAzureのみ)

ここから下は

商用システムをJavaで開発していて、なんらかの正規の長期サポート(5年以上くらいを想定)が必要だ、となった場合の選択肢として、JDKの有償の長期商用サポートを提供している企業ごとに、そのポリシーなどを整理した情報になります。

Javaの有償サポートについて(提供ベンダーごとの整理)

Java, JDKの長期商用サポート(以下LTS:Long Term Support)の提供元として主な選択肢になると思われる、次の4社についてまとめていきます。

  • Oracle
  • IBM
  • RedHat
  • Azul Systems

各社が提供するLTSについて、下記の観点で簡単にまとめます。
- サポート対象
- サポート期間
- 費用

長期商用サポート(LTS)の比較:サマリ

こまごまと説明する前に、ひとまず表形式でJDKの長期サポートの全体感をざっくり整理します。ここはサマリなので、各サポート対象となるJDKやサポート内容の詳細について本編(次節以降)とか、そこの参考URLの先などをお読みください。

ベンダー サポート対象JDK サポート期間 費用 ※1
Oracle Oracle JDK 5+3年 3,000円/プロセッサー
IBM IBM SDK or Java Technology ミドルウェア製品に依存 ※2 製品のサポート料金に含まれる
IBM AdoptOpenJDK with Eclipse OpenJ9 5年 54,800円/プロセッサー
RedHat OpenJDK ※3 Oracleに準ずる ※4 RHELのサポート料金に含まれる
AzulSystems Zulu Enterprise 8+2年 $13,200/25システム
  • ※1 この表では、一番基準となる金額のみ記載しています。プロセッサー数などによって金額が変わる場合があります。
  • ※2 IBMの製品購入が前提と考えられている模様。Docker Hubからのみ単独入手も可能です。サポート期間などはベンダーに要確認。
  • ※3 RedHat Enterprise Linuxの利用が前提となります。
  • ※4 Oracleのサポート期間外でも、RedHatから独自にセキュリティパッチが提供される可能性があるとのことです。ベンダーに要確認。

各ベンダーがサポートするJDKの説明については、これより下をお読みください。

Oracle

サポート対象

Oracleは、次のJDKに対してLTSを提供します。

  • Oracle JDK

Oracle JDK とは、Open JDKの特定のバージョンをOracleがビルドして提供するJDKです。Solaris対応などの独自仕様以外の、基本的な機能レベルでOpenJDKとの互換性があり、相互に差し替えが可能です。
Oracle製のミドルウェア(WebLogic, OracleDB)を利用する場合は、このJDKの利用が前提となります。

Oracle製のミドルウェアのJava11対応はまだなので、今後のOracle Open Worldなどの情報をウォッチしておく必要があります。

Java 11以降、Oracle JDKは、3年ごとの長期サポート版と、半年ごとの短期サポート版がリリースされるようです。

もともとはOracle JDKとしては長期サポート版のみがリリースされる予定でしたが、Java 11のリリース直前で短期サポート版も提供するように方針が決まったようです。

  • 長期サポート版(LTS版)
    • Java 11, Java17, Java 23,...
  • 短期サポート版(non-LTS版と呼ばれています)
    • Java 12~16, Java18~22, Java 24~,...

詳しくは、参考URL:Oracle Java SE サポート・ロードマップ を参照してください。

実際に商用システムに導入するのは、 長期サポート版(LTS版) になると思います。
DLする際などは、バージョンを間違えないように気を付ける必要があります。

Oracle JDK は、本番用途は有償ですが、開発・テスト・検証・デモの用途は無償で利用が可能です。

無償利用が可能であっても、セキュリティパッチの提供はリリース後の半年間以降(※) は有償契約しないと取得できないのではないかと考えられます(あくまで予想ですが、たぶんそうなんじゃないかな)。

※ OpenJDKのバージョンアップサイクルが半年間なので。

Oracle JDK は、次のパブリッククラウド上の仮想環境での利用が許可されています。許可されていないパブリッククラウド環境で利用する場合は、商用サポートが受けられないと思われるので、ご注意ください。

  • Oracle Cloud
  • Amazon EC2 and RDS
  • Microsoft Azure

詳しくは、参考URL:クラウド・コンピューティング環境における Oracle ソフトウェアのライセンス を参照してください。

サポート期間

Oracle JDK のLTSは、下記2種類のサポート期間の合計となる8年間となります。(※)

  • Premier Support 5年
  • Extended Support 3年

時系列で表現した図としては、参考URL:Java SE の新しいリリースモデル:p.17 をご参照ください。
参考URLは、ベンダー毎のまとめ単位で記載しています。

※ Oracleの有償サポートには、Sustaining Supportという無期限のサポートもありますが、現実的には期限の決められている上記サポートの期間内にバージョンアップ対応をすることが多いのではと考えたため、ここではあえて外しました。

費用

Oracle JDK のサポート費用は、Java SE Subscription (2018年6月策定)に従います。Java SE Subscription は、サーバーサイドでの利用と、クライアントサイドでの利用で料金テーブルが分かれています。多くのWebシステムやバッチシステムでは、サーバーサイドでの利用の料金テーブルを意識することになると思いますので、ここではサーバーサイドの表のみを記載します。

サーバーサイドでの利用
<料金表>

単位 月額
1-99 プロセッサー 3,000円
100-249 プロセッサー 2,850円
250-490 プロセッサー 2,700円
500-999 プロセッサー 2,400円
1,000-2,999 プロセッサー 2,100円
3,000-9,999 プロセッサー 1,800円
10,000-19,999 プロセッサー 1,500円
20,000+ 個別問合せ 個別問合せ

参考URL:Java有償保守サービス Java SE Subscription(NTTデータ先端技術株式会社)より

参考URL

IBM

サポート対象

IBMは、次の2種類のJDKに対してLTSを提供します。

  • IBM SDK or Java Technology
  • AdoptOpenJDK with Eclipse OpenJ9

IBM SDK or Java Technology とは、IBMの製品(WebSphere, DB2)に含めて提供されるIBM謹製のJDKです。開発用途は無償で利用可能のようです。

AdoptOpenJDK with Eclipse OpenJ9 とは、AdoptOpenJDKというオープンソースプロジェクトから提供されるJDKです。これは、OpenJDKのJVMを、IBMが開発してきた技術であるEclipse OpenJ9(現在はこれもオープンソース化された)に差し替えてビルドされたJDKになります。

IBMは、上記2種類のJDKについて、Oracle JDKと同じバージョン(Java 11, Java 17, ...)に対してLTSを提供する方針のようです。

これらのJDKは、サーバーサイドでの利用のみが想定されているため、それ以外の用途(クライアントサイド、組み込み)においては、サポート外となるようです。

Javaの無償利用の項目にも書いていますが、AdoptOpenJDK with HotSpot という、JVMをOpenJDKの本来仕様のままビルドしたJDKも提供されていますが、そちらについては、IBMのLTSは提供されません。

サポート期間

IBMが提供するLTSの期間は、JDKにより異なります。

IBM SDK or Java Technology
IBMの製品(WebSphere, DB2)とセットで利用することがほぼと考えらることから、8年以上のサポートが提供される見込みです。

AdoptOpenJDK with OpenJ9
IBM Support for Runtimes という枠で 5年間の商用サポートが提供されます。

IBMが提供するサポート期間を時系列で表現した図としては、参考URL:オープンソースで提供される第二のJVM:OpenJ9とIBM Javaについて:p.18 をご参照ください。

AdoptOpenJDKについては、もともとオープンソースプロジェクトということもあり、コミュニティサポートとして無償で4年間のサポートがあるようです。

費用

サポート費用は、2種類のJDKともに同じ料金テーブルが適用されます。

年額 単位
54,800円 プロセッサー数

単位のプロセッサー数は、実環境ではCPUのコア数。仮想化環境では、割り当てたCPU数となります。

参考URL

RedHat

サポート対象

RedHatは、次のJDKに対してLTSを提供します。

  • OpenJDK(ただし、RedHat Enterprise Linuxでの利用に限る)

OpenJDK自体は、無償利用可能で、そのサポートは本来はリリース後の半年間のみとされていますが、RedHatが、RedHat Enterprise Linux上で動かす場合に限り、OSのサポートの範疇に含めると言っています。

サポート対象となるOpenJDKは、RHELのパッケージとして提供されているものであり、RHEL上でyumを利用してインストールすることになります。

RedHatもIBMと同じく、Oracle JDKと同じバージョン(Java 11, Java 17, ...)に対してLTSを提供する方針のようです。

サポート期間

RedHatが提供するOpenJDKのLTSは、RHEL自体のサポートサブスクリプションに含まれますが、そのサポート期間については、Oracle社の影響を受け、RHELのサポート期間とは異なる期間が適用されます。
これについては、参考URL:OpenJDK Life Cycle and Support Policy をご覧ください。

費用

OpenJDKのサポート費用は、RHELのサポート費用に含まれるようです。

参考URL

Azul Systems

サポート対象

Azul Systemsは、次のJDKに対してLTSを提供します。

  • Zulu Enterprise
  • Zulu Embeded

Zulu とは、Azul Systemsが独自にビルドして提供するOpenJDKです。

Zulu Enterprise とは、Zuluに対して、LTSオプションを付与した名称です。ZuluZulu Enterprise はバイナリとしては同じものになります。

Zulu Embeded とは、Azul Systemsが独自にビルドして提供する組み込み向けのJDKです。

Zuluは、Microsoft Azureのクラウド基盤で利用されているJDKでもあるようです。

Azul Systemsも他社と同じく、Oracle JDKと同じバージョン(Java 11, Java 17, ...)に対してLTSを提供する方針のようです。

Azul Systemsのエンジニア部隊は、海外のみのため、現時点での問い合わせは英語で行う必要があるようです。
(利用相談などは日本法人で対応されそうです)

Javaの無償サポートの項目にも書きましたが、Microsoft Azure, Azure Stack上でZuluを利用する場合に限って、Zulu Enterpriseレベルのサポートが無償で提供されるようです。

Azul Systemsは、Zuluの他に、Zingという低レイテンシ高速処理向けの独自JVMも提供しています。ただし、本投稿では、OpenJDKの近傍製品を整理対象とするため、Zingについては記述していません。

サポート期間

Azul Systemsが提供するLTSの期間は、下記合計の10年間となります。

  • Production Support 8年
  • Extended Support 2年

Azul Systemsの独自サポートとしては、LTS以外のバージョンについても、1年ごとにリリースされるもの(Java 13 Java 15, ...)に対して中期サポート(以下、MTS:Middle Tarm Support)を提供する、というものがあります。MTSのサポート種別ごとの期限は下記となります。

  • Production Support 次のLTS版リリースの1年半後まで(3年半 or 2年半)
  • Extended Support 1年

時系列で表現した図としては、参考URL:Zulu Enterprise Java Support Options:2枚目の図 をご参照ください。

費用

JDKの種類や、サーバーサイド・クライアントサイドで料金テーブルは分かれていないようです。料金テーブルの適用単位は、Javaアプリケーションが稼働しているシステム数となっています。また、サポートレベルによって、StandardとPremiumの2つのテーブルが用意されています。

最大システム数 年額(Standard Support) 年額(Premium Support)
25 $13,200 N/A
100 $31,600 $37,900
1,000 $94,900 $113,900
無制限 $284,600 $341,500

参考URL

以下、個人的な感想(超雑記)

RedHat Enterprise Linux 使ってる場合、OSサポート買えばOKで楽やね。

ただそん時に、OracleとかIBMとかの製品を使ってると、製品サポートが各ベンダー提供のJDKサポートを含んでるので、OSのサポートとは別に金がかかってしまうね。クラウド環境上とかだと計算式が変わってくる場合もあるとか聞くし、あたりまえやけど見積もり時点からちゃんと抑えとくのが大切やね。

CentOS × Tomcat/Nginx みたいな低コスト重視の場合は、OpenJDKで半年に一回アップデートするか、AdoptOpenJDKの無償サポート4年が一番金がかからない感じやね。それでもちょっと不安ならAdoptOpenJDKのIBMサポートとかZulu EnterpriseとかのLTSを買えばいいんじゃないかってとこか。個人的にはZulu Enterpriseが安い長いでいい塩梅な印象を受けるね。

みたいな感じかなぁ。

長々とお読みいただきありがとうございます。
以上です。