torutkのブログ

ソフトウェア・エンジニアのブログ

JDK 11の環境設定

JDK 11から、Oracleが提供するWindows OS向けのJDKは、Oracle JDKとOpenJDKの2種類になりました。

Oracle JDK 11は、有償で技術サポートが含まれ、LTS(長期サポート版)となる商用製品となりました。なお、開発・試験・デモ用など使用用途に制限のあるOTNライセンスでの無償提供もあります。
一方、OpenJDK 11は、無償で提供されています。

Oracle JDKもそのソースコードはOpenJDKとして開発されています。従来はOpenJDKのソースには含まれないOracle JDK独自機能(Java Flight Recorder、Application Class Data Sharing、フォント描画等)がいくつかありましたが、JDK 11に向けてOpenJDKに統合されてきています。このOpenJDKのソースはGPLであり、OpenJDKのソースをビルドしてバイナリを提供する団体がいくつか登場しています。

JDKの入手先

Oracle JDK 11

商用利用するアプリケーションをこのOracle JDKで動かす場合には、有償のライセンス契約が必要となります。開発・試験・デモ用など使用用途に制限のあるOTNライセンスは無償で提供されています。

Java SE - Downloads | Oracle Technology Network | Oracle

OpenJDK 11 Oracleビルド版

先のOracle JDK 11とは別に、OracleがOpenJDKソースをビルドしてバイナリを提供しています。
GPLv2 のクラスパス例外付きライセンスで提供されています(無償)。

JDK 11.0.1 GA Release

Zulu

Azul Systems社がOpenJDKを独自にビルドしバイナリを提供しています。Zuluの利用は無償で、技術サポートを有償で提供しています。

Download OpenJDK Java Linux Windows macOS Alpine Java 11 Java 8

AdoptOpenJDK

ロンドンJavaコミュニティが運営し、OpenJDKコミュニティの幅広いメンバーの活動によってOpenJDKをビルド・提供する団体です。

AdoptOpenJDK - Open source, prebuilt OpenJDK binaries

Windows上でのOracle JDKの環境設定バッチ

Oracle JDKインストーラーでインストールし、レジストリにインストール場所が記録されます。これまでは、レジストリからJDKの場所を調べて環境変数を設定するバッチファイルを作って環境設定をしていました。

Setting oracle jdk path using registory for Windows command prompt - Gist

OpenJDKは、zipで提供、インストールしたい場所に展開するだけのインストールなので、レジストリからOpenJDKの場所を調べることができません。そこで、自分で決めたインストールディレクトリの下にJDK-<バージョン番号>のディレクトリを探してそれを環境変数に設定するようにしました。

LTSについて

これまで、JDKは1年半〜4年半の間隔でメジャーバージョンアップをしてきました。また、マイナーバージョンアップにおいても、セキュリティアップデート、バグ修正のほか機能追加が行われたりしていました。

これからは、LTS版はセキュリティアップデートとバグ修正が続き、機能追加は半年毎にバージョンアップされるOpenJDKの方で行われるようになります。なので、JDK 12、13、14、15、16と半年毎にリリースされている間、LTS版のJDK 11はセキュリティパッチとバグ修正パッチが順次提供されます。

なので、ミッションクリティカルなシステムではこのLTS版を使うと、より頑健になります。

ミッションクリティカルでなく、これまで3ヶ月毎にリリースされるCPU(Critical Patch Updte)やPSU(Patch Set Update)のJDKに更新していない、リリース時点のJDKバージョンで固定して使っているシステムでは、OpenJDKで十分でしょう*1

また、LinuxディストリビューションにはこれまでもOpenJDKが含まれていたので、こちらを使っていたシステムはそのままLinuxディストリビューションのOpenJDKを使い続けることになると思います。

*1:3ヶ月毎にJDKをアップデートして回帰テストなんてやってられないや、というシステムなど