Java開発環境(JDK)の各OSにおけるベストプラクティス

OracleのJDKに対するライセンスが変わってから、複数からJDKが配布され利用するようになりました。ここで改めてJDKのバージョン切替方法を整理します。

JDKの現状

プログラミング言語にJavaを使って開発をするとき、必要になるのがJDKです。

Javaはインタープリタを介した言語ですが、コンパイルを必要とします。

JDKには実行環境とコンパイル環境が含まれています。

これまでに複数バージョンがリリースされています。

これから最新のバージョンと古いバージョンのJDKを両方インストールして、JDKのバージョンを切り替えながら利用したい場合はいくつか考慮すべき点があります。

現在はOracleが提供しているJDK(通称OracleJDK)はサポートが有償です。

それに伴って、GPLライセンスで配布されているOpenJDKが存在しています。

OracleJDKも個人的な利用については無償なので、学習目的の場合はこれまでのようにOracleからJDKをダウンロード&インストールして利用できます。

ですが、Oracleから最新のJDK以外をダウンロードするにはOracleプロファイル(アカウント)を作成する必要があります。

Oracleプロファイル作成のときには様々な情報の入力が必要です。

住所・氏名・会社名・勤務先電話番号など会社での利用を想定しているので個人では避けたい人も多いと思います。

このような状況になると多くの人はOpenJDKを利用することになるのかと思います。

OracleJDKとOpenJDKには大きな差異はないとされています。

この記事ではそれぞれのプラットフォームでJDKのインストールと異なったバージョンのJDKをインストールした際の切替方法を整理します。

JDKの種類

OracleJDK

まずはOracleJDKについて、これまでと同じようにOracleサイトからダウンロードしてインストールします。

・OracleJDKダウンロード

Linux、macOS、Windows用にそれぞれパッケージやインストーラーのファイルをダウンロードできます。

ですが、JDK8(LTS), JDK11(LTS)のダウンロードはオラクルのアカウントでログインする必要があります。

OpenJDK

OpenJDKは2006年にサン・マイクロシステムズがJavaをオープンソース化する意志があることを発表してできたコミュニティです。

・OpenJDKサイト

Java仮想マシン、コンパイラとGPLライセンス化できないライブラリを除いてオープンソース化されています。

なので中身はOracleJDKとほぼ同じです。

OpenJDKは以下のサイトからダウンロードしてインストールします。

・OpenJDKダウンロード

ページには最新版のリンクが表示されています。

Linux、macOS、Windowsとそれぞれのビルドが用意されていますが、インストーラー形式ではないので、個々に展開して環境を作成します。

過去のJDKバージョンは以下からダウンロードできます。

・JDKアーカイブ

ただ、JDK8以前のものは掲載していません。

AdoptOpenJDK

現在AdoptOpenJDKはEclipseファンデーションによって運営されています。JDKのインストーラーがJVMによって異なります。ですが、基本的な動作は同じなので記事の内容と同じ内容でインストール可能です。掲載している画像を現在のインストーラーの画面に置き換えてください。

AdoptOpenJDKはOpenJDKを安定して信頼できる形で配布する目的で立ち上げられたコミュニティです。

Amazon、IBM、Microsoftなどが参加しています。

AdoptOpenJDKの特徴的なところは、インストールするパッケージに含まれるJava仮想マシン(JVM)の種類を選べるところです。

OpenJDKから提供されているHotSpotか、Eclipseから提供されているOpenJ9のどちらかを選択することができます。

・AdoptOpenJDKサイト

サイトにアクセスすると自動的にプラットフォームを識別して最新版をダウンロードできるようになっています。

Other platformsページに行くと、Linux、macOS、WindowsのJDKがダウンロードできます。

・AdoptOpenJDKリリース

それぞれのプラットフォームごとにインストーラー形式のファイルもダウンロードすることができます。

バージョンはJDK8から提供されています。

AdoptOpenJDKのメリットは、JVMを選択できることです。

Oracle提供のJVMを使用できますが、OpenJ9を使用することもできます。

OpenJ9はOracle製のJVMよりメモリ消費量も低く高速であるといわれています。

おすすめのJDKインストール

Mac・Linux・Windowsそれぞれのおすすめインストール方法です。

MacとLinuxのおすすめJDKインストール方法

複数のJDKをインストールすることを前提としています。

イントール・アンイストールをよりしやすくするためにパッケージ管理ツールを使います。

MacおよびLinuxともにHomebrewでパッケージ管理を行います。

Homebrewを使うことでどちらのOSでも同じ管理と操作で作業できるようになります。

Homebrewのインストールは以下のサイトからシェルスクリプトをコピーしてターミナルで実行して行います。

https://brew.sh/index_ja

HomebrewでJDKをインストールしますが、ここではOpenJDKをインストールします。

$ brew search jdk

このコマンドを実行するとインストールされているJDKおよび、インストール可能なJDKが一覧で表示します。

一覧に表示されているFormulaのJDKはHomebrewが管理しているものです。Caskはそれぞれ公式がバイナリ提供しているものです。OpenJDKはFormula版で提供されています。

そのためオプションなしでそのままコマンドを実行してインストールします。

$ brew install openjdk@25

ここではOpenJDK25をインストールします。

Homebrewでインストール可能なJDKは基本的にLTSです。現在(2026/3時点)はJDK25が最新のLTS版です。

MacとLinuxのJDKバージョン切り替え

複数のバージョンをインストールしたときは以下の記述を.bashrcもしくは.zshrcに記述して、シェルスクリプトを実行しバージョンの切り替えを可能にします。

jdk() {
    version=$1
    export JAVA_HOME=$(/usr/libexec/java_home -v "$version");
    java -version
}

記述した直後は以下のコマンドでこの記述を有効にします。

$ source ~/.bashrc
or
$ source ~/.zshrc

Homebrewでインストールすると、JDKはここに(/opt/homebrew/opt/openjdk@25)インストールされます。これはJDK25の例です。JDK21だと(/opt/homebrew/opt/openjdk@21)となります。

先程のシェルスクリプトはJAVA_HOME環境変数を使って切り替えますが、java_homeはこのパス(
/Library/Java/JavaVirtualMachines/)にあるJDKを切り替えます。そうするとJDKがインストールされた場所と切り替えのために参照する場所が合わないので、このままでは正しく動作しません。

この問題を解消するためにシンボリックリンクをjava_homeが参照するパスに作成します。

sudo ln -sfn /opt/homebrew/opt/openjdk@25/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-25.jdk

これで上記スクリプトを実行してJDKバージョンを切り替えることができます。

バージョンを切り替えるには以下のようにコマンドを入力します。

$ jdk 21
$ jdk 25

Macでは基本的に「/Library/Java/JavaVirtualMachines」配下にJDKがインストールされます。

ここにある各JDKのパスをJAVA_HOME環境変数に設定することで実行環境を切り替えます。

HomebrewでインストールしたOpenJDKはここと違う場所にインストールされるので、シンボリックリンクをここに置くことで動作するのですね。

WindowsのおすすめJDKインストール方法

ここではWindowsに直接インストールする方法を説明しますが、WSL2の環境がある場合はMac・Linuxと同様にHomebrewを使ってJDKをインストールすることができます。

Windowsに直接インストールするときもMac・Linuxと同じくOpenJDKを使うのがシンプルです。

OpenJDKサイトから目的のバージョンのJDKをダウンロードします。以下はJDK25です。

https://jdk.java.net/java-se-ri/25

Windowsの場合はページにある「Windows 11 x64 Java Development Kit (sha256) 212 MB」をクリックしダウンロードします。

ダウンロードしたZIPファイルを展開し、C:ドライブ直下に移動します。その際、フォルダ名を以下のようにします。

C:\jdk-25

「C:\jdk-◯◯」として、◯◯にはJDKのバージョンが入ります。

これでインストールは完了です。javaコマンドなどがどこからでも使えるようにするためPATH環境変数を設定しますが、次のJDKバージョン切り替えでまとめて説明します。

WindowsのJDKバージョン切り替え

WSL2にインストールした場合は、Mac・Linuxと同じ方法で切り替えることができます。

ここではOpenJDKをWindowsにインストールした場合の方法について説明します。

まずはシステム環境変数に以下のようにJAVA_HOME環境変数とPATH環境変数を設定します。

Windowsメニューをクリックしたら、検索欄に「システムの詳細設定」と入力して表示されるシステムの詳細設定をクリックします。すると以下の画面が表示されます。

この画面の環境変数ボタンをクリックして以下の画面を表示して環境変数を設定します。

まずはJAVA_HOME環境変数を設定します。システム環境変数の新規ボタンをクリックして、環境変数名に「JAVA_HOME」、変数値にインストールしたJDKのパスを入力します。

ここではOpenJDK25のインストールパスを記述しています。

そして同じくシステム環境変数のPathをダブルクリックしてJDKのインストールパスを追加します。

追加するパスは以下のように先程のJAVA_HOMEの値を使います。

%JAVA_HOME%\bin

設定できたら、変更したシステム環境変数を有効にするためWindowsを再起動します。

次に、Powershellスクリプトを作成してJDKのバージョンを切り替えれるようにします。

複数JDKがインストールされているものとします。

JDKのインストールされているパスは先程の方法に従って「c:\jdk-21」や「c:\jdk-25」という名前で「c:\jdk-○○」となっていることとします。

まずPowershellで動作するスクリプトを記述します。

VSCodeなどのエディタを使って次のスクリプトを書いてください。

param ($Version = $(throw "Version parameter is required."))
setx JAVA_HOME "c:\jdk-$Version" /m

そして、ファイル名を「jdk.ps1」としてホームディレクトリーに保存します。

このスクリプトは、1行目のコードでパラメターにバージョン番号を受け取るようにしています。

なので実行するときはパラメーター付けて実行します。例えば、「./jdk.ps1 -Version 11」とコマンド入力します。

そして2行目のコードで1行目で受け取ったバージョンでパスを作成して、そのパスをJAVA_HOME環境変数に設定します。

Windowsでは独自のシェルスクリプトを実行するには、はじめにシステムに許可を設定する必要があります。

次のコマンドをPowershellで実行してください。

Set-ExecutionPolicy RemoteSigned

変更はすぐに有効になります。

このコマンドは1度実行するだけでいいので、以降は必要ありません。

あとは先程作成したスクリプトを実行するだけなのですが、JAVA_HOME環境変数を書き換えて有効にためにスクリプトの2行目はレジストリの内容を変更します。

なのでこのスクリプトは管理者権限で実行する必要があります。

そのためjdk.ps1スクリプトを実行するときはPowershellを管理者権限で起動してください。

そしてスクリプトを実行して正しく動作すると「成功」と表示されます。

バージョンが切り替わったことを確認するには新しくPowershellを起動してコマンドを実行します。

java --version

openjdk 19 2022-09-20
OpenJDK Runtime Environment (build 19+36-2238)
OpenJDK 64-Bit Server VM (build 19+36-2238, mixed mode, sharing)

スクリプトを使えばバージョンを簡単に切り替えることができます。