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) and in Windows distributions. It does ...

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
View information for IBM SDK, Java Technology Edition, Version 8.

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

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は今も無償です

コメント