OpenJDK 21 のインストールと設定(Windows 上)
本記事では、Eclipse Temurinが提供するOpenJDK 21をインストールする。Eclipse Temurinは完全にオープンソースであり、商用利用を含めて無償で利用できる。ライセンスはGPLv2 + Classpath Exceptionに基づく。利用の際は、必ず公式ライセンスを確認すること。
【目次】
1. Eclipse Temurin OpenJDK 21 のダウンロードとインストール
ここでは、Eclipse Temurinが提供するOpenJDK 21をインストールする。Eclipse Temurinは、旧AdoptOpenJDKの後継プロジェクトであり、Eclipse Foundationが運営している。
Eclipse Temurinの特徴
- Java SE Technology Compatibility Kit(TCK)認証済みの高品質ビルド
- 長期サポート版に対応
- msiインストーラーによる簡単なインストール
- JAVA_HOME環境変数の自動設定が可能
ダウンロードとインストール手順
- 公式サイトへアクセスする。
- ダウンロードオプションを選択する。
以下の項目を選択する。
- Operating System: Windows
- Architecture: x64(64ビット版Windows)
- Package Type: JDK
- Version: 21 - LTS
Architectureは使用しているWindowsのビット数に合わせて選択する。現在のWindowsはほとんどがx64(64ビット)である。
- .msi形式のインストーラーをダウンロードする。
.msiボタンをクリックしてインストーラーをダウンロードする。ファイル名は
OpenJDK21U-jdk_x64_windows_hotspot_21.x.x_x.msiのような形式になる。 - インストーラーを実行する。
ダウンロードした.msiファイルをダブルクリックしてインストーラーを起動する。
- インストールウィザードに従う。
「Install for all users of this machine」(このマシンの全ユーザー用にインストール)を選択することを推奨する。
- カスタムセットアップで環境変数を設定する。
カスタムセットアップ画面で、以下の項目を確認する。
- Set JAVA_HOME variable: この項目のアイコンを右クリックし、「ローカル ハード ドライブにすべてインストール」を選択する。これにより、JAVA_HOME環境変数が自動的に設定される。
- Add to PATH: この項目も同様に有効化することで、PATH環境変数に自動的に追加される。
これらの設定により、手動での環境変数設定が不要になる。
- インストールを完了する。
「インストール」ボタンをクリックし、完了まで待つ。インストール先のデフォルトは
C:\Program Files\Eclipse Adoptium\jdk-21.x.x.x-hotspotである。
2. 環境変数の確認
msiインストーラーで「Set JAVA_HOME variable」と「Add to PATH」を有効化した場合、環境変数は自動的に設定される。ここでは設定が正しく行われたかを確認する。
環境変数の確認手順
- コマンドプロンプトを開く。
Windowsキーを押し、「cmd」と入力して、「コマンド プロンプト」を起動する。管理者権限は不要である。
- JAVA_HOMEを確認する。
以下のコマンドを実行する。
echo %JAVA_HOME%正しく設定されている場合、
C:\Program Files\Eclipse Adoptium\jdk-21.x.x.x-hotspotのようなパスが表示される。 - PATHを確認する。
以下のコマンドを実行する。
echo %PATH%表示される文字列の中に、
C:\Program Files\Eclipse Adoptium\jdk-21.x.x.x-hotspot\binが含まれていることを確認する。
手動で環境変数を設定する場合
インストール時に環境変数の自動設定を行わなかった場合、または設定を変更したい場合は、以下の手順で手動設定する。
- コマンドプロンプトを管理者として実行する。
Windowsキーを押し、「cmd」と入力し、表示された「コマンド プロンプト」を右クリックして「管理者として実行」を選択する。
- JAVA_HOME を設定する。
以下のコマンドを実行する。パスは実際のインストール先に置き換えること。
powershell -command "[System.Environment]::SetEnvironmentVariable('JAVA_HOME', 'C:\Program Files\Eclipse Adoptium\jdk-21.x.x.x-hotspot', 'Machine')" - PATH に追加する。
以下のコマンドを実行する。
powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable('Path', 'Machine'); $newpath = $oldpath + ';C:\Program Files\Eclipse Adoptium\jdk-21.x.x.x-hotspot\bin'; [System.Environment]::SetEnvironmentVariable('Path', $newpath, 'Machine')" - 設定を反映させる。
環境変数の変更を有効にするため、開いているすべてのコマンドプロンプトを閉じ、再度開く。場合によっては、Windowsへの再サインインやPCの再起動が必要になることもある。
3. 設定の確認
設定が正しく反映されたかを確認する。
- 新しいコマンドプロンプトを開く。(管理者権限は不要)
- 以下のコマンドを実行する。
java -version - 次のように、インストールしたOpenJDKのバージョン情報が表示されれば成功である。
openjdk version "21.0.x" 20xx-xx-xx LTS OpenJDK Runtime Environment Temurin-21.0.x+x (build 21.0.x+x) OpenJDK 64-Bit Server VM Temurin-21.0.x+x (build 21.0.x+x, mixed mode, sharing)表示されない場合や、異なるバージョンが表示される場合は、環境変数の設定(パスの正確さ、
JAVA_HOMEとPathの変数名、設定の反映)を再確認すること。 - コンパイラも確認する。
javac -version以下のように表示されれば、Java開発環境が正しくインストールされている。
javac 21.0.x
4. サンプルプログラムの実行
Hello Worldプログラム
- ファイル「HelloWorld.java」を作成する。
Javaでは、ファイル名(
HelloWorld.java)とpublicなクラス名(HelloWorld)を一致させる必要がある。public class HelloWorld { public static void main(String args[]) { System.out.println("Hello Java World !"); } } - コンパイル(ソースコードからバイトコードへの変換)を行う。
コマンドプロンプトで
javacコマンドを使って次のように操作する。javac HelloWorld.javaこれにより
HelloWorld.classファイルが生成される。エラーが表示されなければ、コンパイルは成功である。 - 実行(バイトコードの実行)を行う。
コマンドプロンプトで
javaコマンドを使って次のように操作する(.classは付けない)。java HelloWorld - 実行結果は次のようになる。
Hello Java World !この結果が表示されれば、OpenJDK 21が正常にインストールされ、プログラムの実行環境が整っている。
クラス定義の例
より複雑なプログラムも同様の手順でコンパイル・実行できる。以下に、フィールドとメソッドを持つクラスの例を示す。
public class MyClass
{
private int x;
public static void main(String[] args) {
System.out.println("hello");
}
public MyClass()
{
x = 0;
}
public int sampleMethod(int y)
{
return x + y;
}
}
- Java プログラミング: 別ページ »にまとめ
5. トラブルシューティング
複数バージョンのJavaがインストールされている場合
Windows環境で複数バージョンのJavaを共存させている場合、PATH環境変数の競合に注意する必要がある。
Oracle JDKのPATH自動設定
Oracle JDKをインストールすると、バージョンによって以下の場所にファイルが配置され、JAVA_HOMEの設定より優先される場合がある。
- Java 7以前:
C:\Windows\System32にjava.exe、javaw.exe、javaws.exeがコピーされる - Java 8以降:
C:\ProgramData\Oracle\Java\javapathにシンボリックリンクが作成される
対処方法
JAVA_HOMEによるバージョン切り替えを確実に機能させるには、以下の対処を行う。
- System32内のjava.exeを無効化する:
C:\Windows\System32内のjava.exe、javaw.exe、javaws.exeをリネームまたは削除する(管理者権限が必要)。
64ビット版Windowsの場合、C:\Windows\SysWOW64内にも同様のファイルがあれば同じ処理を行う。 - javapathのPATH優先順位を下げる:
環境変数PATHの中で、C:\ProgramData\Oracle\Java\javapathが存在する場合、これを最後尾に移動させる。 - JAVA_HOME\binを最優先にする:
環境変数PATHの先頭に%JAVA_HOME%\binを配置する。
レジストリの影響
System32にコピーされたjava.exeは、レジストリに記録されたバージョン情報と自身のバージョンを比較し、異なる場合は実行を中止する仕様になっている。このため、JAVA_HOMEを変更するだけでは正常に動作しない場合がある。
環境変数設定後もバージョンが変わらない場合
環境変数を設定してもjava -versionで期待したバージョンが表示されない場合、以下を確認する。
- コマンドプロンプトを完全に閉じて、新しいウィンドウで再度確認する
echo %JAVA_HOME%コマンドで環境変数が正しく設定されているか確認するecho %PATH%でPATHの順序を確認し、JAVA_HOME\binが最初に評価されるか確認する- それでも解決しない場合は、Windowsへの再サインインまたは再起動を試す
「'java' は、内部コマンドまたは外部コマンド...として認識されていません」と表示される場合
このエラーは、PATH環境変数が正しく設定されていないことを示している。以下を確認する。
- インストール時に「Add to PATH」を有効化したか
- 手動設定の場合、PATHに
%JAVA_HOME%\binまたは実際のbinディレクトリのパスが含まれているか - 環境変数を設定した後、新しいコマンドプロンプトを開いたか
6. 補足情報
長期サポート版の選択について
Javaは6か月ごとに新しいバージョンがリリースされるが、長期サポート版は長期間のサポートが提供される。主な長期サポート版は以下のとおりである。
- Java 21(2023年9月リリース):本記事で解説。2029年12月まで無償アップデート
- Java 17(2021年9月リリース):多くの環境で使用されている
- Java 11(2018年9月リリース):レガシーシステムで使用されている
既存システムとの互換性を重視する場合はJava 17の選択も検討すべきである。
セキュリティに関する注意
Javaのセキュリティ脆弱性は定期的に発見され、修正される。Oracleは四半期ごと(1月、4月、7月、10月の第3火曜日)にクリティカル・パッチ・アップデートを公開しており、Eclipse Temurinもこれに追従してアップデートをリリースする。古いバージョンのJavaを使用し続けることはセキュリティリスクを高めるため、定期的なアップデートが重要である。
他のOpenJDKディストリビューションとの比較
OpenJDKには複数のディストリビューションが存在する。主なものは以下のとおりである。
- Eclipse Temurin:Eclipse Foundationが提供。完全無償で商用利用可能。本記事で推奨
- Amazon Corretto:Amazonが提供。AWS環境での利用に最適化
- Microsoft Build of OpenJDK:Microsoftが提供。Azure環境での利用に最適化
- Red Hat OpenJDK:Red Hatが提供。Red Hat Enterprise Linuxとの統合に優れる
- Oracle JDK:Oracleが提供。商用サポートが必要な場合は有償ライセンスを検討
どのディストリビューションもOpenJDKをベースにしており、基本的な互換性は保たれている。用途や環境に応じて選択すること。