OpenJDK 21 のインストールと設定(Windows 上)
【ライセンスに関する注意】
本記事では、Eclipse Temurinが提供するOpenJDK 21をインストールする。Eclipse Temurinは完全にオープンソースであり、商用利用を含めて無償で利用可能である。ライセンスはGPLv2 + Classpath Exceptionに基づく。利用の際は、必ず公式ライセンスを確認すること。
【概要】本記事では、Windows環境におけるOpenJDK 21(Eclipse Temurin)のインストールおよび設定手順を解説する。OpenJDK 21は2023年9月にリリースされた長期サポート(LTS)版であり、2029年12月まで無償アップデートが提供される。Eclipse Temurinは、Eclipse Foundationが提供する高品質なOpenJDKビルドで、Java SE TCK認証済みである。公式サイトからインストーラーをダウンロードし、環境変数(JAVA_HOME、Path)を設定後、コマンドプロンプトでバージョン確認とサンプルプログラムのコンパイル・実行を行い、セットアップが完了したことを確認する。
【目次】
1. Eclipse Temurin OpenJDK 21 のダウンロードとインストール
ここでは、Eclipse Temurinが提供するOpenJDK 21をインストールする。Eclipse Temurinは、旧AdoptOpenJDKの後継プロジェクトであり、Eclipse Foundationが運営している。他にもAmazon Corretto、Microsoft Build of OpenJDK、Red Hat OpenJDKなど様々なディストリビューションが存在する。
Eclipse Temurinの特徴
- 完全無償で商用利用可能
- Java SE TCK認証済みの高品質ビルド
- 長期サポート(LTS)版に対応
- 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. トラブルシューティング
複数バージョンのJavaがインストールされている場合
Windows環境で複数バージョンのJavaを共存させている場合、以下の点に注意する必要がある。
Java 8以降の自動PATH設定
Java SE 8以降のOracle JDKをインストールすると、以下の場所に自動的にファイルが配置され、JAVA_HOMEの設定より優先される場合がある:
C:\Windows\System32にjava.exe、javaw.exe、javaws.exeがコピーされる(Java 7以前)C:\ProgramData\Oracle\Java\javapathにシンボリックリンクが作成される(Java 8以降)
対処方法
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ディレクトリのパスが含まれているか - 環境変数を設定した後、新しいコマンドプロンプトを開いたか
5. サンプルプログラムの実行
サンプルプログラム
- ファイル「HelloWorld.java」を作成する。
注意:Javaでは、ファイル名(
HelloWorld.java)と public なクラス名(HelloWorld)を一致させる必要がある。public class HelloWorld { public static void main(String args[]) { System.out.println("Hello Java World !"); } } - コンパイル(ソースコードからバイトコードへの変換)を行う。
Windowsのコマンドプロンプトで
javacコマンドを使って次のように操作する。javac HelloWorld.java
これにより
HelloWorld.classファイルが生成される。エラーが表示されなければ、コンパイルは成功している。 - 実行(バイトコードの実行)を行う。
Windowsのコマンドプロンプトで
javaコマンドを使って次のように操作する(.classは付けない)。java HelloWorld
- 実行結果は次のようになる。
Hello Java World !
これでOpenJDK 21が正常にインストールされ、プログラムが実行できることが確認できた。
クラス定義の例
より複雑なJavaプログラムの例を以下に示す。
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 関連ページ】
- Java プログラミング: 別ページ »にまとめ
推奨事項
LTS版の選択について
Javaは6ヶ月ごとに新しいバージョンがリリースされるが、LTS(Long Term Support)版は長期間のサポートが提供される。現在、以下のLTS版が利用可能である:
- Java 21(2023年9月リリース): 現在広く採用されている安定版。2029年12月まで無償アップデート
- Java 17(2021年9月リリース): 依然として多くの環境で使用されている
- Java 11(2018年9月リリース): レガシーシステムで使用されている
本記事ではJava 21を推奨しているが、既存システムとの互換性を重視する場合はJava 17の選択も検討すべきである。
セキュリティに関する注意
Javaのセキュリティ脆弱性は定期的に発見され、修正される。Oracleは四半期ごと(1月、4月、7月、10月の第3火曜日)にクリティカル・パッチ・アップデート(CPU)を公開している。Eclipse Temurinもこれに追従してアップデートをリリースする。古いバージョンのJavaを使用し続けることは、セキュリティリスクを高めるため、定期的なアップデートが重要である。
他のOpenJDKディストリビューションとの比較
- Eclipse Temurin: Eclipse Foundationが提供。完全無償で商用利用可能。本記事で推奨
- Amazon Corretto: Amazonが提供する無償のOpenJDK。AWS環境での利用に最適化
- Microsoft Build of OpenJDK: Microsoftが提供する無償のOpenJDK。Azure環境での利用に最適化
- Red Hat OpenJDK: Red Hatが提供。Red Hat Enterprise Linuxとの統合に優れる
- Oracle JDK: Oracleが提供。商用サポートが必要な場合は有償ライセンスを検討
どのディストリビューションもOpenJDKをベースにしており、基本的な互換性は保たれている。用途や環境に応じて最適なものを選択すること。