Java11リリースにあたって、OpenJDKとかOracleJDKの違いについて調べたメモ

Java
スポンサーリンク

初めに

Java11リリースでOracle JDKが有償化のニュースが話題になっているので、自分用の備忘の意味で調べた内容をメモ書きです。

そもそもJavaとは

Oracle社によって開発されているオープンソースのプログラミング言語です。(元々はSun Microsystemsが開発していました)

https://java.com/ja/download/faq/whatis_java.xml

Java SE と Java EEの違い

Java SE・・・Javaの標準仕様をまとめたもの
Java EE・・・Java SEに加えて、サーバサイドの拡張機能を加えたもの

ポイントは「仕様」というところでしょうか。
正確には Java8 とか Java10 というものは無く、それぞれ Java SE 8だったりJava SE 10の略称だったりします。
なお、Java EE はJakarta EEに移管(Oracle社からEclipse Foundationに移管したので「Java」と名乗れない?)することになっているので、今後は、Java SE = Java という理解で良いのかな、と。

JRE と JDKの違い

JRE・・・Javaを動作させるための環境
JDK・・・JRE に加えて、開発に必要な環境を含めたもの

JDKでないと開発(ソースをコンパイル)できないので、開発にあたってはJDKが必要ということになります。

OpenJDK と OracleJDKの違い

やっと本題です。そもそもの OpenJDK とは、Java SEの仕様に基づいたソフトウェアを開発するためのオープンソースプロジェクトです。
Javaを動かすためのJavaVMやJavaコンパイラなどの実行環境や開発環境のソースコードを提供しています。

ポイントは「ソースコード」という点で、実はOpenJDKのオープンソースプロジェクトではバイナリを提供していません。

OpenJDKのソースコードを元に、OracleがビルドしたバイナリがOracle JDKとなります。他にもRedhatやGoogleがビルドしているOpenJDKのバイナリが存在しています。

OpenJDK、OracleJDKのサポート期間

Java9以降、基本的に半年毎にバージョンアップを実施することに決まったようです。つまり、無償で利用するには半年に一度はバージョンアップをしないとバグ修正等のアップデートが提供されなくなってしまうことになります。

商用環境で利用する場合、半年に一度のバージョンアップに追随するのは難しいケースが多々あるので、Oracleが有償での長期サポートとして、LTSサポート版を用意しています。(RedhatなどもOracleのLTSに追随する予定とのこと)

長期サポートは3年に一度のリリース毎に設定され、既にリリース済みのJava8と、今回リリースされたJava11、その後はJava17がLTSサポートバージョンになる予定です。
※ Oracle JDKは、Java11からライセンス形態が変わり、非商用・開発用途のみ無償利用可能となっています。

 

各社の商用サポート状況について

Oracle社がJava11以降のOracleJDKの商用サポートを有償化したことがニュースになっていますが、商用サポートが提供されているJDKは主に次の4つでしょうか。

Oracle:OracleJDK

サーバ側の1CPUあたり3000円/月額がサポート費用となります。
Java8を利用している場合、有償サポートのOracle Java Subscriptionを契約することで2025年までJava8を利用可能です。

http://www.intellilink.co.jp/solutions/oracle/java.html
http://otndnld.oracle.co.jp/ondemand/javaday2018/JSE-3
Oracle Java SE Supportロードマップ | Oracle 日本
Oracle Java SE Supportロードマップ

Redhat:OpenJDK

Redhatのサブスクリプションを契約していれば、OpenJDKのサポートも含まれます。(=実質無料ということになりますかね)
Redhatの場合、Java8は2023年まで利用可能です。

OpenJDK Life Cycle and Support Policy - Red Hat Customer Portal
This article is an explanation of the OpenJDK Life Cycle and Support Policy as shipped in Red Hat Enterprise Linux (RHEL...

Azul System:Zulu

独自にビルドしたJDKをZuluとしてサポートしています。サポート期間は最長10年間。費用は年間12,000ドル〜(システム数に応じて増額)です。現状、問合せは英語での受付になるようで、ちょっとハードル高いかな、、、と。

https://jp.azul.com/products/zulu-and-zulu-enterprise/

IBM:OpenJDK

IBMも独自にJDKを提供しています。こちらのサポート期間は5年間。費用はプロセッサあたり年額54800円です。
ベースになっているAdoptOpenJDK自体が無償で4年間のサポートがあります(後述)

IBM Documentation
This information applies to all editions of IBM SDK, Java Technology Edition, Version 8, for all supported operating sys...

で、無償で利用するには・・・?

OpenJDKとAdoptOpenJDKの2択になるのでしょうか。
ただ、サポート期間が半年と短いOpenJDKよりも、サポート期間が4年と長めのAdoptOpenJDKを利用する方が現実的なのかなー、というところです。

まとめ

個人的に普段の業務ではRedhat Enterprise Linuxを利用することが大半なので、実質無料で利用可能なRedhat版のOpenJDKを利用することになりそうです。
また、無償で利用する場合は長期サポートのある AdoptOpenJDK を利用する感じでしょうか。

なお、Redhatと互換のあるCentOSについては調べられていませんが、RedhatがリリースするOpenJDKを取り込んでくれれば無償で利用可能なのかな?

今回、Oracle社によってJavaが有償化されたとなると、Oracle社が持っているMySQLも有償化の流れになるのでしょうか・・・?(どうでしょうか?)

 

※2018/10/10追記

Googleから「Javaは今も無償です」といった情報が出ていたので補足です。要は、Java自体は無償で使えるけど、Java11以降のOracleJDKは有償だよってことは変わらないですね。

Javaは今も無償です

コメント