Mac上でOpenJDKをインストール
はじめに
タイトル通り、Mac 上で OpenJDK のインストールする方法を紹介します。
OpenJDKとは
- OpenJDK とは、オープンソースの Java 実装です。
- Java の実装は、Oracle 社が提供しているものと、OpenJDK が提供しているものがあります。
- Oracle 社が提供しているものは有料ですが、OpenJDK は無料で利用できます。よって商用サービスの開発など商用利用する場合には OpenJDK を利用することが多いです。
- OpenJDK は、Oracle 社が提供しているものと同等の機能を持っています。多くの場合は OpenJDK で問題なく利用できます。
前提条件
以降でHomebrewがインストールされていることを前提として、OpenJDK をインストールする方法を紹介します。
バージョンを確認
インストール可能な OpenJDK のバージョンを確認します。
$ brew search openjdk
==> Formulae
openjdk openjdk@11 openjdk@17 openjdk@8 openj9 openvdb
==> Casks
adoptopenjdk microsoft-openjdk openkey
openjdk
をインストールします。バージョン固定する場合は、openjdk@17
のようにバージョンを指定します。
パッケージ情報を確認
openjdk
のパッケージ情報を確認します。バージョンを指定している場合は、openjdk@17
のようにバージョンを指定します。
$ brew info openjdk
==> openjdk: stable 19.0.2 (bottled) [keg-only]
Development kit for the Java programming language
https://openjdk.java.net/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/openjdk.rb
License: GPL-2.0-only with Classpath-exception-2.0
==> Dependencies
Build: autoconf ✔, pkg-config ✘
Required: giflib ✔, harfbuzz ✔, jpeg-turbo ✔, libpng ✔, little-cms2 ✔
==> Requirements
Build: Xcode ✔
Required: macOS >= 10.15 ✔
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
openjdk is keg-only, which means it was not symlinked into /usr/local,
because macOS provides similar software and installing this software in
parallel can cause all kinds of trouble.
==> Analytics
install: 167,118 (30 days), 553,687 (90 days), 2,593,291 (365 days)
install-on-request: 62,262 (30 days), 192,418 (90 days), 782,367 (365 days)
build-error: 480 (30 days)
上記のメッセージで重要な部分は [keg-only]
です。[keg-only]
とは、シンボリックリンクを作成しないという意味で、Homebrew でインストールしたパッケージを利用するには、シンボリックリンクを作成する必要があります。インストールする openjdk のバージョンは 19.0.2 となっていることもわかります。
==> openjdk: stable 19.0.2 (bottled) [keg-only]
なお、上記のメッセージにて、シンボリックリンクを作成するコマンドが表示されています。後ほど、このコマンドを実行します。
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
パッケージをインストール
openjdk
をインストールします。バージョン固定する場合は、openjdk@17
のようにバージョンを指定します。
$ brew install openjdk
==> Fetching openjdk
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/manifests/19.0.2
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/blobs/sha256:77f0d28cc4f5c8bd5907b5080fd760930326f1b12e7afbf2361b2527f960d6e9
==> Pouring openjdk--19.0.2.monterey.bottle.tar.gz
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
openjdk is keg-only, which means it was not symlinked into /usr/local,
because macOS provides similar software and installing this software in
parallel can cause all kinds of trouble.
If you need to have openjdk first in your PATH, run:
echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.zshrc
For compilers to find openjdk you may need to set:
export CPPFLAGS="-I/usr/local/opt/openjdk/include"
==> Summary
🍺 /usr/local/Cellar/openjdk/19.0.2: 636 files, 318.7MB
==> Running `brew cleanup openjdk`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
パッケージ情報の確認同様に、インストール時のプロンプトにて、シンボリックリンクを作成するコマンドが表示されています。
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
複数 Java の SDK がインストールされている場合、インストールした openjdk
で java を実行するために、PATH を通す必要があると表示されています。
If you need to have openjdk first in your PATH, run:
echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.zshrc
では、現時点で java
と実行してみます。現時点では、①シンボリックリンクの作成、②PATH の通し、を行っていないため以下のようなエラーが表示されます。
$ java
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
シンボリックリンクを作成
インストール時のプロンプトに従い、シンボリックリンクを作成します。
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
パスを通す
インストール時のプロンプトに従い、PATH を通します。
$ echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.zshrc
反映されているか確認します。
$ tail ~/.zshrc ok at 10:28:40
export PATH="/usr/local/opt/openjdk/bin:$PATH"
動作確認
java コマンドを実行して、動作確認を行います。
$ java -version
openjdk version "19.0.2" 2023-01-17
OpenJDK Runtime Environment Homebrew (build 19.0.2)
OpenJDK 64-Bit Server VM Homebrew (build 19.0.2, mixed mode, sharing)```
パッケージ情報に表示されていた、19.0.2 のバージョンが正しくインストールされていることがわかります。
Discussion