OpenJDK 17 のインストールと設定(Windows 上)
【重要な注意事項】
OpenJDK 17は2021年9月にリリースされた長期サポート(LTS)版であるが、OpenJDKプロジェクトからの新しいビルドは既に提供されていない(superseded)。アーカイブから入手可能だが、最新のセキュリティ脆弱性修正が含まれていないため、本番環境での使用は推奨されない。本記事は主に学習目的でのインストール手順を解説する。
本番環境や商用利用の場合、以下のいずれかを推奨する:
- 最新のLTS版(JDK 21またはJDK 24以降)を使用する
- Oracle JDK(ライセンス条件を要確認)を使用する
- 他のディストリビューション(Eclipse Temurin、Amazon Corretto等)を使用する
【ライセンスに関する注意】
Oracle JDK 17のライセンス状況は複雑である。2024年10月以降、ライセンス条件が変更されている:
- 17.0.12以前:NFTC(Oracle No-Fee Terms and Conditions)ライセンスにより、商用利用を含め無償で利用可能
- 17.0.13以降:OTN(Oracle Technology Network License Agreement)に変更され、個人使用・開発用途は無償だが、本番環境での利用には条件がある
OpenJDK(GPL v2 + Classpath Exception)とOracle JDKではライセンスが異なる。利用の際は、必ず公式ライセンスを確認すること。
OpenJDK のライセンスについては、利用前に必ず公式サイトで確認すること。
【概要】本記事では、Windows環境におけるOpenJDK 17のインストールおよび設定手順を解説する。OpenJDKは、オープンソースで開発されているJava Development Kitである。公式ウェブサイトまたはアーカイブから最新版のzipファイルをダウンロード・展開し、環境変数(JAVA_HOME、Path)を設定後、コマンドプロンプトでバージョン確認とサンプルプログラムのコンパイル・実行を行い、セットアップが完了したことを確認する。
【目次】
1. OpenJDK (Oracleビルド) のダウンロードと展開
ここでは、Oracleが提供するOpenJDK 17のビルドをインストールする。OpenJDKには他にも様々なディストリビューションが存在する(例: Eclipse Temurin、Amazon Corretto)。
- 公式サイトまたはアーカイブへアクセスする。
https://jdk.java.net/ を開く。JDK 17は既にsupersededとなっているため、OpenJDK Archiveからダウンロードする必要がある場合がある。
注意:サイト構成は変更される可能性があるため、実際のページで確認すること。
- JDK 17 のセクションを探し、Windows/x64 用の zip アーカイブのリンクをクリックしてダウンロードする。
注意:バージョン番号(例: 17.0.10)は、アーカイブ内で入手可能な最新のものを選ぶこと。ただし、最新のセキュリティパッチは含まれていない可能性がある。
zip 形式のファイルのダウンロードが始まる。
- zipファイルの展開を行う。
ダウンロードしたzipファイル(例:
openjdk-17.x.y_windows-x64_bin.zip)を展開する。Windows標準機能でも展開できるが、ファイルパスが長くなる場合に備え、7-Zip: 別ページ »などのツール利用も有効である。
展開すると
jdk-17.x.y(バージョン番号はダウンロードしたものに依存)のような名前のディレクトリが生成される。
- ディレクトリの移動を行う。
展開してできた
jdk-17.x.yディレクトリを、分かりやすい場所に移動する。推奨:
C:\jdk-17.x.yのように、パス名に日本語や空白文字を含まないC:ドライブ直下などが、後の設定やツール連携でトラブルを避けやすいため推奨される。C:\の直下以外に移動してもよいが、分かりやすいディレクトリに置くこと、ディレクトリ名に日本語を含まないことが推奨される。
2. 環境変数の設定
Javaコンパイラ(javac)や実行環境(java)をどの場所からでも実行できるように、また、他の開発ツールがJDKの場所を見つけられるように、環境変数を設定する。ここではシステム環境変数を設定するため、管理者権限が必要である。
設定内容:
設定手順(PowerShellを使用)
- コマンドプロンプトを管理者として実行する。
Windowsで、コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し、「cmd」と入力し、表示された「コマンド プロンプト」を右クリックして「管理者として実行」を選択)。
- JAVA_HOME の設定を行う。
以下のコマンドを実行する。
C:\jdk-17.x.yの部分は、実際にJDKを配置したディレクトリパスに置き換えること。powershell -command "[System.Environment]::SetEnvironmentVariable('JAVA_HOME', 'C:\jdk-17.x.y', 'Machine')"このコマンドは、システム(Machine)環境変数として JAVA_HOME を設定する。
- 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ディレクトリを追加する。
- 設定の反映を行う。
環境変数の変更を有効にするため、開いている全てのコマンドプロンプトを一度閉じ、再度開く。 場合によっては、Windowsへの再サインインやPCの再起動が必要になることもある。
3. 設定の確認
設定が正しく反映されたかを確認する。
- 新しいコマンドプロンプトを開く。(管理者権限は不要)
- 以下のコマンドを実行する。
java -version
- 次のように、インストールした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_HOMEとPathの変数名、設定の反映)を再確認すること。
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で期待したバージョンが表示されない場合:
- コマンドプロンプトを完全に閉じて、新しいウィンドウで再度確認する
set JAVA_HOMEコマンドで環境変数が正しく設定されているか確認するecho %PATH%でPATHの順序を確認し、JAVA_HOME\binが最初に評価されるか確認する- それでも解決しない場合は、Windowsへの再サインインまたは再起動を試す
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
- 実行結果は次のようになる。
これで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 関連ページ】
- Java プログラミング: 別ページ »にまとめ
推奨事項
本番環境・商用利用の場合
OpenJDK 17はアーカイブ版であり、セキュリティアップデートが提供されていないため、本番環境や商用利用には以下のいずれかを推奨する:
- 最新のLTS版を使用: JDK 21またはJDK 24以降の最新版を使用する
- サポート付きディストリビューション: Eclipse Temurin、Amazon Corretto、Microsoft Build of OpenJDK、Red Hat OpenJDKなど、継続的なセキュリティアップデートが提供されるディストリビューションを使用する
- 商用サポート: Oracle Java SE Subscription(有償)などの商用サポートを利用する
セキュリティに関する注意
Javaのセキュリティ脆弱性は定期的に発見され、修正される。Oracleは四半期ごと(1月、4月、7月、10月)にクリティカル・パッチ・アップデート(CPU)を公開している。古いバージョンのJavaを使用し続けることは、セキュリティリスクを高めるため、定期的なアップデートが重要である。
代替ディストリビューションの特徴
- Eclipse Temurin(旧AdoptOpenJDK): Eclipse Foundationが提供する無償のOpenJDK。商用利用可能で、長期サポートあり
- Amazon Corretto: Amazonが提供する無償のOpenJDK。AWS環境での利用に最適化
- Microsoft Build of OpenJDK: Microsoftが提供する無償のOpenJDK。Azure環境での利用に最適化