macOSでJava開発キット(JDK)を入れる
JDKの提供サイトからmacOS用のdmgファイルを入手して実行するのがオーソドックスなやり方です。
他には、Homebrewと呼ばれるソフトウェアのパッケージ管理ツールを入れて、Homebrew経由でJDKを入れる方法もあります。Homebrewで管理されているパッケージであれば、個別に提供サイトを巡回して更新バージョンを確認し、更新があれば再度dmgファイルを入手してインストールするといった手間が省けます。
そこで、ここではHomebrew経由でJDKを入れる方法をメモします。
Homebrewを入れる方法は、次に記述しました。
Homebrew - ソフトウェアエンジニアリング - Torutk
Homebrewで入手できるJDK
OpenJDKディストリビューション | Homebrewパッケージ名 | リポジトリ | 備考 |
---|---|---|---|
Oracle JDK | oracle-jdk | Casks | 17.0.1 |
Oracle OpenJDK | openjdk | Formulae | 17.0.1 |
Oracle OpenJDK | openjdk@?? | Formulae | ?? には、8と11が存在 |
Eclipse Temurin | temurin | Casks | 17.0.1,12 |
Eclipse Temurin | temrin?? | cask-versions | ?? には、8と11が存在 |
Azul Zulu | zulu | Casks | 17.0.1,17.30.15-ca |
Azul Zulu | zulu?? | cask-versions | ?? には、7, 8, 11, 13, 15が存在 |
Azul ZuluFX | zulufx | Casks | JavaFX搭載、15.0.5,15.36.51-ca |
Amazon Corretto | corretto | Casks | 17.0.1.12.1 |
Amazon Corretto | corretto?? | cask-versions | ?? には、8と11が存在 |
Bellsoft Liberica | liberica-jdk?? | bell-sw/liberica | ?? には、8, 11, 12, 13, 14, 15, 16, 17が存在 |
Bellsoft Liberica | liberica-jdk??-full | bell-sw/liberica | JavaFX搭載。?? には、8, 11, 12, 13, 14, 15, 16, 17が存在 |
Microsoft Build OpenJDK | microsoft-openjdk | Casks | 17.0.1.12.1 |
Microsoft Build OpenJDK | microsoft-openjdk?? | cask-versions | ?? には、11が存在 |
SAP Machine | sapmachine-jdk | Casks | 17.0.1 |
- FormulaeとCasksは、Homebrewインストールで設定されますが、それ以外のリポジトリは、追加のtap指定が必要
通常、最新バージョンがインストールされます。本日時点であれば、2021年9月にリリースされた JDK 17の2021年10月更新版がインストールされるかと思います。
しかし、開発対象が最新バージョンではなく、例えば JDK 11であったりした場合は、そのバージョンのJDKをインストールしたくなります。そこで、上述の表で ?? とバージョン番号がパッケージ名称に付くものをインストールします。
OpenJDKディストリビューションについては、次に記載しました。
OpenJDK - ソフトウェアエンジニアリング - Torutk
Zulu11をインストール
先のLTS版であるJDKのバージョン11で、Appleシリコン(M1チップセット、ARM命令セット)に対応しているものの一つがZuluです。
zulu?? は、cask-versions リポジトリを使用するので、tapで指定します。
% brew tap homebrew/cask-versions
続いて、インストールします。
% brew install --cask zulu11
インストール後は環境設定を特にせずともjavaコマンドが使えました。/usr/bin/java コマンド他が追加されています。
liberica-jdk17-full をインストール
JavaFXを搭載し、最新LTS版(OpenJDK 17)である17を含むパッケージ名である Bell Soft社のLiberica JDKです。
% brew tap bell-sw/liberica
% brew install --cask liberica-jdk17-full
先にzulu11を入れた環境にliberica-jdk17-fullをインストールした後、javaコマンドはこのliberica-jdk17-fullを指すようになりました。
macOSで複数バージョンのOpenJDKを併用する場合の設定
macOSでは、通常 OpenJDKをインストールすると、次の場所に置かれます。
/Library/Java/JavaVirtualMachines/ +-- liberica-jdk-17-full.jdk/ +-- zulu-11.jdk/
そして、/usr/bin/java などのコマンドがどのOpenJDKを指すのかを管理しているのが @/usr/libexec/java_home@ツールです。
オプションなしで実行すると、現在アクティブなOpenJDKのパスを表示します。
% /usr/libexec/java_home /Library/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Contents/Home
オプション-Vを付けると、インストール済みのOpenJDKの一覧と、現在アクティブなOpenJDKのパスを表示します。
% /usr/libexec/java_home -V Matching Java Virtual Machines (2): 17.0.1+12-LTS (arm64) "BellSoft" - "BellSoft Liberica JDK 17.0.1+12" /Libray/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Contents/Home 11.0.13 (arm64) "Azul Systems, Inc." - "Zulu 11.52.13" /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home /Library/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Contents/Home
オプション-v <バージョン番号>を付けると、指定したバージョンのOpenJDKのパスを表示します。
% /usr/libexec/java_home -v 11 /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
環境変数JAVA_HOMEに、このjava_homeコマンドの結果を設定します。
% export JAVA_HOME=`/usr/libexec/java_home -v 11` % echo $JAVA_HOME /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home % java --version openjdk 11.0.13 2021-10-19 LTS OpenJDK Runtime Environment Zulu11.52+13-CA (build 11.0.13+8-LTS) OpenJDK 64-Bit Server VM Zulu11.52+13-CA (build 11.0.13+8-LTS, mixed mode)
/usr/bin/java などのJDKコマンドは、デフォルトでは最新のOpenJDKバージョンを実行しますが、環境変数JAVA_HOMEが設定されていると、それが示すパスのOpenJDKを実行します。
- 異なるディストリビューションで同じバージョンを入れている場合、指定が困難です。その時は、JEnvを導入すると解決できるようです。