OpenJDK 21 のインストールと設定(Windows 上)

ライセンスに関する注意

本記事では、Eclipse Temurinが提供するOpenJDK 21をインストールする。Eclipse Temurinは完全にオープンソースであり、商用利用を含めて無償で利用可能である。ライセンスはGPLv2 + Classpath Exceptionに基づく。利用の際は、必ず公式ライセンスを確認すること。

Eclipse Temurin 公式サイト

【概要】本記事では、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 のダウンロードとインストール
  2. 環境変数の確認
  3. 設定の確認
  4. トラブルシューティング
  5. サンプルプログラムの実行

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の特徴

ダウンロードとインストール手順

  1. 公式サイトへアクセスする。

    https://adoptium.net/temurin/releases を開く。

  2. ダウンロードオプションを選択する。

    以下の項目を選択する:

    • Operating System: Windows
    • Architecture: x64(64ビット版Windows)
    • Package Type: JDK
    • Version: 21 - LTS

    注意:Architectureは使用しているWindowsのビット数に合わせて選択すること。現在のWindowsはほとんどがx64(64ビット)である。

  3. .msi形式のインストーラーをダウンロードする。

    .msiボタンをクリックしてインストーラーをダウンロードする。ファイル名はOpenJDK21U-jdk_x64_windows_hotspot_21.x.x_x.msiのような形式になる。

  4. インストーラーを実行する。

    ダウンロードした.msiファイルをダブルクリックしてインストーラーを起動する。

  5. インストールウィザードに従う。

    「Install for all users of this machine」(このマシンの全ユーザー用にインストール)を選択することを推奨する。

  6. カスタムセットアップで環境変数を設定する。

    カスタムセットアップ画面で、以下の項目を確認する:

    • Set JAVA_HOME variable: この項目のアイコンを右クリックし、「ローカル ハード ドライブにすべてインストール」を選択する。これにより、JAVA_HOME環境変数が自動的に設定される。
    • Add to PATH: この項目も同様に有効化することで、PATH環境変数に自動的に追加される。

    注意:これらの設定により、手動での環境変数設定が不要になる。

  7. インストールを完了する。

    「インストール」ボタンをクリックし、完了まで待つ。インストール先のデフォルトはC:\Program Files\Eclipse Adoptium\jdk-21.x.x.x-hotspotとなる。

2. 環境変数の確認

msiインストーラーで「Set JAVA_HOME variable」と「Add to PATH」を有効化した場合、環境変数は自動的に設定される。ここでは設定が正しく行われたかを確認する。

環境変数の確認手順

  1. コマンドプロンプトを開く。

    Windowsキーを押し、「cmd」と入力して、「コマンド プロンプト」を起動する。管理者権限は不要である。

  2. JAVA_HOMEを確認する。

    以下のコマンドを実行する:

    echo %JAVA_HOME%
    

    正しく設定されている場合、C:\Program Files\Eclipse Adoptium\jdk-21.x.x.x-hotspotのようなパスが表示される。

  3. PATHを確認する。

    以下のコマンドを実行する:

    echo %PATH%
    

    表示される文字列の中に、C:\Program Files\Eclipse Adoptium\jdk-21.x.x.x-hotspot\binが含まれていることを確認する。

手動で環境変数を設定する場合

インストール時に環境変数の自動設定を行わなかった場合、または設定を変更したい場合は、以下の手順で手動設定を行う。

  1. コマンドプロンプトを管理者として実行する。

    Windowsキーを押し、「cmd」と入力し、表示された「コマンド プロンプト」を右クリックして「管理者として実行」を選択する。

  2. JAVA_HOME を設定する。

    以下のコマンドを実行する。パスは実際のインストール先に置き換えること:

    powershell -command "[System.Environment]::SetEnvironmentVariable('JAVA_HOME', 'C:\Program Files\Eclipse Adoptium\jdk-21.x.x.x-hotspot', 'Machine')"
    
  3. 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')"
    
  4. 設定を反映させる。

    環境変数の変更を有効にするため、開いている全てのコマンドプロンプトを一度閉じ、再度開く。場合によっては、Windowsへの再サインインやPCの再起動が必要になることもある。

3. 設定の確認

設定が正しく反映されたかを確認する。

  1. 新しいコマンドプロンプトを開く。(管理者権限は不要)
  2. 以下のコマンドを実行する。
    java -version
    
  3. 次のように、インストールした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_HOMEPathの変数名、設定の反映)を再確認すること。

  4. コンパイラも確認する。
    javac -version
    

    以下のように表示されれば、Java開発環境が正しくインストールされている。

    javac 21.0.x
    

4. トラブルシューティング

複数バージョンのJavaがインストールされている場合

Windows環境で複数バージョンのJavaを共存させている場合、以下の点に注意する必要がある。

Java 8以降の自動PATH設定

Java SE 8以降のOracle JDKをインストールすると、以下の場所に自動的にファイルが配置され、JAVA_HOMEの設定より優先される場合がある:

対処方法

JAVA_HOMEによるバージョン切り替えを確実に機能させるには、以下の対処を行う:

  1. System32内のjava.exeを無効化する:
    C:\Windows\System32内のjava.exejavaw.exejavaws.exeをリネームまたは削除する(管理者権限が必要)。
    64ビット版Windowsの場合、C:\Windows\SysWOW64内にも同様のファイルがあれば同じ処理を行う。
  2. javapathのPATH優先順位を下げる:
    環境変数PATHの中で、C:\ProgramData\Oracle\Java\javapathが存在する場合、これを最後尾に移動させる。
  3. JAVA_HOME\binを最優先にする:
    環境変数PATHの先頭に%JAVA_HOME%\binを配置する。

レジストリの影響

System32にコピーされたjava.exeは、レジストリに記録されたバージョン情報と自身のバージョンを比較し、異なる場合は実行を中止する仕様になっている。このため、単にJAVA_HOMEを変更するだけでは正常に動作しない場合がある。

環境変数設定後もバージョンが変わらない場合

環境変数を設定してもjava -versionで期待したバージョンが表示されない場合:

  1. コマンドプロンプトを完全に閉じて、新しいウィンドウで再度確認する
  2. echo %JAVA_HOME%コマンドで環境変数が正しく設定されているか確認する
  3. echo %PATH%でPATHの順序を確認し、JAVA_HOME\binが最初に評価されるか確認する
  4. それでも解決しない場合は、Windowsへの再サインインまたは再起動を試す

「'java' は、内部コマンドまたは外部コマンド...として認識されていません」と表示される場合

このエラーは、PATH環境変数が正しく設定されていないことを示している。以下を確認する:

  1. インストール時に「Add to PATH」を有効化したか
  2. 手動設定の場合、PATHに%JAVA_HOME%\binまたは実際のbinディレクトリのパスが含まれているか
  3. 環境変数を設定した後、新しいコマンドプロンプトを開いたか

5. サンプルプログラムの実行

サンプルプログラム

  1. ファイル「HelloWorld.java」を作成する。

    注意:Javaでは、ファイル名(HelloWorld.java)と public なクラス名(HelloWorld)を一致させる必要がある。

    public class HelloWorld
    {
        public static void main(String args[])
        {
            System.out.println("Hello Java World !");
        }
    }
    
  2. コンパイル(ソースコードからバイトコードへの変換)を行う。

    Windowsのコマンドプロンプトで javac コマンドを使って次のように操作する。

    javac HelloWorld.java
    

    これにより HelloWorld.class ファイルが生成される。エラーが表示されなければ、コンパイルは成功している。

  3. 実行(バイトコードの実行)を行う。

    Windowsのコマンドプロンプトで java コマンドを使って次のように操作する(.class は付けない)。

    java HelloWorld
    
  4. 実行結果は次のようになる。
    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 関連ページ

推奨事項

LTS版の選択について

Javaは6ヶ月ごとに新しいバージョンがリリースされるが、LTS(Long Term Support)版は長期間のサポートが提供される。現在、以下のLTS版が利用可能である:

本記事ではJava 21を推奨しているが、既存システムとの互換性を重視する場合はJava 17の選択も検討すべきである。

セキュリティに関する注意

Javaのセキュリティ脆弱性は定期的に発見され、修正される。Oracleは四半期ごと(1月、4月、7月、10月の第3火曜日)にクリティカル・パッチ・アップデート(CPU)を公開している。Eclipse Temurinもこれに追従してアップデートをリリースする。古いバージョンのJavaを使用し続けることは、セキュリティリスクを高めるため、定期的なアップデートが重要である。

他のOpenJDKディストリビューションとの比較

どのディストリビューションもOpenJDKをベースにしており、基本的な互換性は保たれている。用途や環境に応じて最適なものを選択すること。