初めに
Java11リリースでOracle JDKが有償化のニュースが話題になっているので、自分用の備忘の意味で調べた内容をメモ書きです。
そもそもJavaとは
Oracle社によって開発されているオープンソースのプログラミング言語です。(元々はSun Microsystemsが開発していました)
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を利用可能です。
Redhat:OpenJDK
Redhatのサブスクリプションを契約していれば、OpenJDKのサポートも含まれます。(=実質無料ということになりますかね)
Redhatの場合、Java8は2023年まで利用可能です。
Azul System:Zulu
独自にビルドしたJDKをZuluとしてサポートしています。サポート期間は最長10年間。費用は年間12,000ドル〜(システム数に応じて増額)です。現状、問合せは英語での受付になるようで、ちょっとハードル高いかな、、、と。
IBM:OpenJDK
IBMも独自にJDKを提供しています。こちらのサポート期間は5年間。費用はプロセッサあたり年額54800円です。
ベースになっているAdoptOpenJDK自体が無償で4年間のサポートがあります(後述)
で、無償で利用するには・・・?
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は有償だよってことは変わらないですね。
コメント