調べる前「え、Java?プログラミング言語の一種でしょ?JRE?JDK?SE?なにそれ?」
今「EEのJDK > SEのJDK > JRE」「個人開発者がJDKと言えばSEのJDK」「JDKをインストールすればJavaの開発ができる」「Javaで書かれたプログラムを動かすためだけならJREを入れればよい」「タダじゃないらしい」←どういうこと!?
Java
プログラミング言語の一種。Java語。
「どんなマシンでも動く!」で有名。実際はOSごとに仮想マシン(virtual machine、VM)が作られて、Javaのプログラムはその仮想マシン上で動く。JavaのVMなのでJVM。
JRE
Javaの実行環境。
OSは仮想マシンを作らないといけないが、どうやって?→JREをインストールすれば作れる(OSが勝手に作ってくれる)!
でも実行環境(誰かが作ったアプリをダウンロード等して自分のPCで実行する)を提供するだけで、開発(自分でコードを書き、コンパイルしてアプリを作る)ことはできない。
Javaバージョン9以降、JREのみの配布はされていない。数年前に「MinecraftのためにJRE入れたことあるよ」みたいな人はおそらくJavaバージョン8のJREの可能性あり。
JDK(SE)
Javaの開発環境。
開発するけどテストできない、なんてことはあり得ないので、JDKをインストールしたらJREも付いてくる。
SEは「Standard Edition」の略。普通の開発用のAPIが提供される。
JDK(EE)
Javaの開発環境。SEの上位版。
サーバー向けの機能を付けた拡張版。SEを拡張しているので、SEでできることはEEでもできる。
JREのEE版とかSE版とかあるのかないのかは気になるけど、もし仮にJREだけでは配布されないということなら、JDK(SE)をインストールしたらSE版のJREが、JDK(EE)をインストールしたらEE版のJREがインストールされる、ということなのかな?よく分からん。
8とか11とかのバージョン
Java SE – Downloadsによると2020年5月現在のSEの最新バージョンは14。
基本的に半年に一回メジャーバージョンアップをするらしく、半年ごとにバージョンが1つずつ上がっていく。
でも半年ごとにバージョンアップしてたら整合性チェックとか大変だから長期保証バージョンもある。それが8と11。
でもタダじゃない。
どういうこと?Javaって有償なの?
ここから少し話が深くなる。
Javaはサン・マイクロシステムズという会社によって開発されたんだけど、サン社はOracleという会社に買収されて、今ではOracleがJDKを提供している。
そのOracleが提供するJDKには2種類あって、OracleJDKと(Oracle)OpenJDKがある。
OracleJDKは商用で使わなければ無償、商用で使うならライセンス契約が必要とのこと。半年ごとのバージョンアップがあって今はバージョン14(サポートは半年で終了)だけど、バージョン11は8年のサポート付き。問い合わせると返事が返ってくるし、セキュリティアップデートもある。
ちなみにバージョン7やバージョン8も有償提供してきた分に関しては今もサポートがある。7は22年7月まで、8は25年3月まで。
OpenJDKは無償だけど、半年でアップデート。同じ会社が提供しているから、バージョンもOracleJDKと同じ14。でもこっちは11は長期サポート無し。セキュリティアップデートも無し。
以下の図が分かりやすい。

白いところは今まで無償で提供していた部分、青いところはこれから無償で提供していく部分、赤いところは有償サポートで提供する部分。
- 青 ・・・ OpenJDK
- 赤 ・・・ OracleJDK
とみれば分かりやすいかな?
Oracleにしてみれば「半年でメジャーアップデートすることにしたよ。これまで通り無償だよ。だからこれからはみんなも半年ごとにJavaをアップデートしてね。最新バージョンしかセキュリティアップデートしないよ。でも有償のサポートを受けながら使っていきたい人やバージョンを変えたくない人がいることも知ってる。だからバージョン11の長期有償サポート制度、作っといたよ。最新バージョンでも有償サポート登録してくれた人はちゃんとサポートするよ。また今までの7とか8の有償サポート受けてた人もしばらくはサポート打ち切らないよ。」ってこと。
結局、ちょっと勉強したいという程度ならOpenJDK、商用には使いませんというのであればOracleJDKでも可?なのかな?
ちなみにJDKは他の会社が出しているものもあるけど、もうこれ以上は触れない。気になる人は自分で探して。
まとめ
「EEのJDK > SEのJDK > JRE」
「個人開発者がJDKと言えばSEのJDK」
「JDKをインストールすればJavaの開発ができる」
「Javaで書かれたプログラムを動かすためだけならJREを入れればよい」
「半年に一回アップデートせよ」
ちなみにこの記事書いた後にちょっと使う用事があったので、OracleJDK14入れました。特にややこしいことは言ってこず、普通にインストールできたので、ちゃんと気を付けておかないと本番で使ったら大変なことになりそう・・・
参考
Java JREとJDKの違いと関係性は!?環境変数設定と確認までの手順解説!!Javaマスターへの道 | Javaマスターへの道
Java SEとJDK、JRE、JVMの違いに関する解説 | Java入門
Java – Wikipedia
JDKの新しいリリース・モデル、および提供ライセンスについて
Java有償化とは?無償で利用できない?いや、できます。 | 30代後半、未経験からwebプログラマーに転職(実体験)
第1回:「Java」は昔も今もオープンです – 株式会社システムエグゼ
個人開発ユーザーのJAVA有償化への対応方法をまとめてみる – ジャズとエンジニア