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

重要な注意事項

OpenJDK 17は2021年9月にリリースされた長期サポート(LTS)版であるが、OpenJDKプロジェクトからの新しいビルドは既に提供されていない(superseded)。アーカイブから入手可能だが、最新のセキュリティ脆弱性修正が含まれていないため、本番環境での使用は推奨されない。本記事は主に学習目的でのインストール手順を解説する。

本番環境や商用利用の場合、以下のいずれかを推奨する:

ライセンスに関する注意

Oracle JDK 17のライセンス状況は複雑である。2024年10月以降、ライセンス条件が変更されている:

OpenJDK(GPL v2 + Classpath Exception)とOracle JDKではライセンスが異なる。利用の際は、必ず公式ライセンスを確認すること。

OpenJDK のライセンスについては、利用前に必ず公式サイトで確認すること。

【概要】本記事では、Windows環境におけるOpenJDK 17のインストールおよび設定手順を解説する。OpenJDKは、オープンソースで開発されているJava Development Kitである。公式ウェブサイトまたはアーカイブから最新版のzipファイルをダウンロード・展開し、環境変数(JAVA_HOME、Path)を設定後、コマンドプロンプトでバージョン確認とサンプルプログラムのコンパイル・実行を行い、セットアップが完了したことを確認する。

【目次】

  1. OpenJDK (Oracleビルド) のダウンロードと展開
  2. 環境変数の設定
  3. 設定の確認
  4. トラブルシューティング
  5. サンプルプログラムの実行

1. OpenJDK (Oracleビルド) のダウンロードと展開

ここでは、Oracleが提供するOpenJDK 17のビルドをインストールする。OpenJDKには他にも様々なディストリビューションが存在する(例: Eclipse Temurin、Amazon Corretto)。

  1. 公式サイトまたはアーカイブへアクセスする。

    https://jdk.java.net/ を開く。JDK 17は既にsupersededとなっているため、OpenJDK Archiveからダウンロードする必要がある場合がある。

    注意:サイト構成は変更される可能性があるため、実際のページで確認すること。

  2. JDK 17 のセクションを探し、Windows/x64 用の zip アーカイブのリンクをクリックしてダウンロードする。

    注意:バージョン番号(例: 17.0.10)は、アーカイブ内で入手可能な最新のものを選ぶこと。ただし、最新のセキュリティパッチは含まれていない可能性がある。

    JDK 17ダウンロードページのスクリーンショット

    zip 形式のファイルのダウンロードが始まる。

    ダウンロード中の画面
  3. zipファイルの展開を行う。

    ダウンロードしたzipファイル(例: openjdk-17.x.y_windows-x64_bin.zip)を展開する。

    Windows標準機能でも展開できるが、ファイルパスが長くなる場合に備え、7-Zip: 別ページ »などのツール利用も有効である。

    展開すると jdk-17.x.y(バージョン番号はダウンロードしたものに依存)のような名前のディレクトリが生成される。

    展開されたJDKディレクトリ
  4. ディレクトリの移動を行う。

    展開してできた jdk-17.x.y ディレクトリを、分かりやすい場所に移動する。

    推奨: C:\jdk-17.x.y のように、パス名に日本語や空白文字を含まない C:ドライブ直下などが、後の設定やツール連携でトラブルを避けやすいため推奨される。

    C:\の直下以外に移動してもよいが、分かりやすいディレクトリに置くこと、ディレクトリ名に日本語を含まないことが推奨される。

    JDKディレクトリをC:\直下に移動した画面

2. 環境変数の設定

Javaコンパイラ(javac)や実行環境(java)をどの場所からでも実行できるように、また、他の開発ツールがJDKの場所を見つけられるように、環境変数を設定する。ここではシステム環境変数を設定するため、管理者権限が必要である。

設定内容:

設定手順(PowerShellを使用)

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

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

  2. JAVA_HOME の設定を行う。

    以下のコマンドを実行する。C:\jdk-17.x.y の部分は、実際にJDKを配置したディレクトリパスに置き換えること。

    powershell -command "[System.Environment]::SetEnvironmentVariable('JAVA_HOME', 'C:\jdk-17.x.y', 'Machine')"
    

    このコマンドは、システム(Machine)環境変数として JAVA_HOME を設定する。

  3. Path への追加を行う。

    以下のコマンドを実行する。C:\jdk-17.x.y\bin の部分は、実際の bin ディレクトリのパスに置き換えること。

    powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable('Path', 'Machine'); $newpath = $oldpath + ';C:\jdk-17.x.y\bin'; [System.Environment]::SetEnvironmentVariable('Path', $newpath, 'Machine')"
    

    このコマンドは、既存のシステムPath環境変数の末尾に JDKのbinディレクトリを追加する。

  4. 設定の反映を行う。

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

3. 設定の確認

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

  1. 新しいコマンドプロンプトを開く。(管理者権限は不要)
  2. 以下のコマンドを実行する。
    java -version
    
  3. 次のように、インストールしたOpenJDKのバージョン情報が表示されれば成功である。
    openjdk version "17.x.y" 20xx-xx-xx
    OpenJDK Runtime Environment (build 17.x.y+...)
    OpenJDK 64-Bit Server VM (build 17.x.y+..., mixed mode, sharing)
    

    表示されない場合や、異なるバージョンが表示される場合は、環境変数の設定(パスの正確さ、JAVA_HOMEPathの変数名、設定の反映)を再確認すること。

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. set JAVA_HOMEコマンドで環境変数が正しく設定されているか確認する
  3. echo %PATH%でPATHの順序を確認し、JAVA_HOME\binが最初に評価されるか確認する
  4. それでも解決しない場合は、Windowsへの再サインインまたは再起動を試す

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

サンプルプログラム

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

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

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

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

    javac HelloWorld.java
    

    これにより HelloWorld.class ファイルが生成される。

    javacコマンドでコンパイル中
  3. 実行(バイトコードの実行)を行う。

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

    java HelloWorld
    
  4. 実行結果は次のようになる。
    プログラムの実行結果

    これでOpenJDK 17が正常にインストールされ、プログラムが実行できることが確認できた。


クラス定義の例

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 関連ページ

推奨事項

本番環境・商用利用の場合

OpenJDK 17はアーカイブ版であり、セキュリティアップデートが提供されていないため、本番環境や商用利用には以下のいずれかを推奨する:

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

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

代替ディストリビューションの特徴