この記事は、2019年11月に記載したものを「CIST (公立千歳科学技術大学) Advent Calendar 2021」および「cistLT Advent Calendar 2021」用に更新したものです。(アドベントカレンダーの投稿としては邪道じゃね、と思ったけど時間がなかった...あと結局だいたい書き直しだった)
その後も適宜更新を続けています。最後に更新をしたのは2022年4月です。
はじめに
2022年4月の更新と意図
Java 18 がリリースされたのですが、バージョン番号を指定せずにbrew install
すると、 最新版のJDK(つまり18)をインストールするもの と、最新のLTS版のJDK(つまり17)をインストールするものが ありました。
取り急ぎ、記事の中のコメントアウトで 最新のJDK、最新のLTS版 などのように分けて書きましたが、わかりづらいので違った形でまとめたほうがいいかもしれないですね(未来の自分に託します)。
JDKを brew install
するときは、導入したいメジャーバージョンにあっているか、念のためご注意ください。
2021年12月の更新と意図
2021年、今年の秋にはJava 17もリリースされましたね。
この記事は、過去に記載したものだったのですが、私の投稿にしては珍しく、継続してLGTM等をいただく記事ですので、最新版に編集しなおしました。いわゆる令和最新版というやつです。
この記事の狙い
homebrewでインストールできる、各ディストリビューターのビルドによるOpen JDKと、そのコマンドをまとめておきます。
なお、この記事の執筆・更新時点で、最新バージョンは Java 18、 LTS(Long Term Support版)は Java 17 です。
Homebrew
openjdk
# OpenJDK, 最新のJDK版
brew install openjdk
OpenJDK の最新バージョンが手元でビルド&インストールされます。
ただし、keg-only
指定なので、インストール後に $JAVA_HOME
用のフォルダへのシンボリックリンクを貼る必要があります。
sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
# xx はインストールしたJDKのバージョン(例:17)
export JAVA_HOME=`/usr/libexec/java_home -v xx`
@バージョン番号で、リリース済みのLTSバージョンもビルド&インストールできるようです。
# OpenJDK, LTS版(JDK 17)
brew install openjdk@17
# OpenJDK, LTS版(JDK 11)
brew install openjdk@11
# OpenJDK, LTS版(JDK 8)
brew install openjdk@8
Homebrew Cask
oracle-jdk
#Oracleが提供する最新のLTS版(JDK 17)
brew install --cask oracle-java
Oracleが提供するNFTC: Oracle No-Fee Terms and Conditions ライセンスのLTSバージョンがインストールされます。
Note That:
NFTCライセンスは、JDK 17からOracleが採用したライセンスで、Developers Festa Sapporo 2021でOracleの伊藤敬さんから伺った際の自分用メモによると、以下のような特徴があります。
- 無償で商用での本番利用可能(ただし、internal business operations なので、社内システムなどはOK、SaaSなどには使えない)
- NFTCでの提供期間は次のLTSリリースから1年後(移行期間として見込まれる)
- その後は商用の本番利用不可のOTN(Oracle Technology Network)ライセンスへ切り替わる
詳しくはこちらに日本語での解説があります:Oracle Java SEライセンスに関するFAQ
Logicoさんの翻訳記事も参考になるかと:The arrival of Java 17!
Temurin
# Eclipse Adoptiumが提供する最新のLTS版(JDK 17, Hotspot VM)
brew install --cask temurin
Eclipse Adoptiumに移管されたAdoptOpenJDKのHotSpot VMです。
AdoptOpenJDKとしてのリリースは16まで、17の段階でEclipse Adoptiumに移行して、LTSバージョンのビルドが提供されています。
これまでAdoptOpenJDK(HotSpot VM)ユーザーだった方は、こちらに切り替えるとすんなりいくのかもしれません(別のディストリビューションのビルドでもいいと思いますけど)
過去のLTMもインストールできます。
# Eclipse Adoptiumが提供するLTS版(JDK 11, HotSpot VM)
brew install --cask temurin11
# Eclipse Adoptiumが提供するLTS版(JDK 8, HotSpot VM)
brew install --cask temurin8
microsoft-openjdk
# Microsoftが提供する最新のLTS版(JDK 17)
brew install --cask microsoft-openjdk
Microsoft がビルドしたJDKです。
Microsoft版のコンセプトはマイクロソフトの寺田さんの記事こちらやこちらが詳しいと思います。
過去のLTSは、本日の時点でJDK 11だけです。
# Microsoftが提供するLTS版(JDK 11)
brew install --cask microsoft-openjdk11
zulu
# Azulが提供する最新のLTS版(JDK 17)
brew install --cask zulu
Azul社が提供するZulu JDKがインストールされます。
AzulがLTSや独自にMTS:Medium Tearm Support版を提供している旧バージョンもインストールできるようです。
JDK 7は事情により上のバージョンにアップデートできない人に、MTSは徐々に17までアップデートしたい人に助かるかも。
# Azulが提供するMTS版(JDK15)
brew install --cask zulu15
# Azulが提供するMTS版(JDK15+Java Fx?)
brew install --cask zulufx
# Azulが提供するMTS版(JDK13)
brew install --cask zulu13
# Azulが提供するLTS版(JDK11)
brew install --cask zulu11
# Azulが提供するLTS版(JDK8)
brew install --cask zulu8
# Azulが提供するLTS版(JDK7)
brew install --cask zulu7
corretto
# Amazon Corretto (最新のJDK)
brew install --cask corretto
Amazon Linuxなどに採用されているAmazon Correto がインストールされます。
AWS系で触っている方も多いのではと思います。過去バージョンもJDKのLTSバージョンと合わせられています。
# Amazon Corretto 17(LTS版)
brew install --cask corretto17
# Amazon Corretto 11(LTS版)
brew install --cask corretto11
# Amazon Corretto 8(LTS版)
brew install --cask corretto8
sapmachine-jdk
#SAPが提供する最新のJDK
brew install --cask sapmachine-jdk
SAPが提供するOpenJDK(SapMachine)がインストールされます。
Homebrew上には今のところ、最新版のJDKしかない(LTS版がない)ようです。
semeru-jdk-open
# IBMが提供する最新のLTS版(JDK 17, Openj9)
brew install --cask semeru-jdk-open
IBMに移管されたAdoptOpenJDKのOpenJ9版です。
これまでAdoptOpenJDK(OpenJ9)ユーザーだった方は、こちらに切り替えるとすんなりいくのかもしれません。
過去のLTMもインストールできます。
# IBMが提供するLTS版(JDK 11, Openj9)
brew install --cask semeru-jdk-open11
# IBMが提供するLTS版(JDK 8, Openj9)
brew install --cask semeru-jdk-open8
ちなみに、IBM Semeru Runtimeについてはこちらの記事が参考になります。
liberica
brew tap bell-sw/liberica
# BellSoftが提供するLTS版(JDK 17)
brew intall --cask liberica-jdk17
BellSostが提供するLiberica JDK がインストールされます。
Liberica JDKはJava FX(正確にはLibericaFX)をバンドルしているFull版や、クラウド用に容量最適化したLite版など、Open JDKそのままではなく、Bellsoft独自の追加機能を施して提供するJDKも提供されています。またJRE版も提供されています。
# BellSoftが提供するFull版(JDK 17+LibericaFX)
brew intall --cask liberica-jdk17-full
# BellSoftが提供するLite版(JDK 17, 容量最適化)
brew intall --cask liberica-jdk17-lite
# BellSoftが提供するLTS版(JDK 17, JREのみ)
brew intall --cask liberica-jre17
過去のものも残されているので、バージョン番号の部分を8, 11〜16に変えてあげれば、それぞれのバージョンのものがインストールできます(もちろん、LTSである8, 11以外のSTS:Short Term Support版が保守サポートされているという意味ではありません)。詳しくは https://github.com/bell-sw/homebrew-liberica を参照してください。
adoptopenjdk
もともとこの記事は、
AdoptOpenJDK と Cask-Versions が衝突するなどしていた、homebrewでインストールできるJDK界隈ですが、一応の整理がついたようです。
https://github.com/Homebrew/homebrew-cask/pull/63537
これをきっかけに記述したものですが、2年という歳月は業界の変化を呼び起こすには十分な時期ということなのでしょう、Eclipse Adoptium(Temurin)といIBM(Semeru)に移管していまいました。
注意点として、今後adoptopenjdkが17移行に更新されることはないと思われるので、以前、AdoptOpenJDKをHomebrew/Homebrew Caskでインストールしている場合は、別のディストリビューターのJDKに切り替え(再インストール)しないと、開発環境が古いままになってしまいます。
とはいえHomebrew上では、JDK 8-16 までのCaskは残っています。どうしてもこの間のバージョンが検証用に欲しい時などは選択肢になるかもですね。
というわけで下記にインストール方法を残しておきます。
# AdoptOpenJDK, HotSpot版の16
brew install adoptopenjdk
# AdoptOpenJDK, HotSpot版の8
brew install adoptopenjdk8
AdoptOpenJDK.net Community がビルドした OpenJDK がインストールされます。
AdoptOpenJDK/openjdk をtapすることで、バージョンの指定や、HotSpot VM版以外にも、J9版などがcask インストールできるようになります。
brew tap AdoptOpenJDK/openjdk
# AdoptOpenJDK, HotSpot VMの11
brew install --cask adoptopenjdk11
# AdoptOpenJDK, HotSpot VMの11, JREのみ
brew install --cask adoptopenjdk11-jre
# AdoptOpenJDK, OpenJ9の11
brew install --cask adoptopenjdk11-openj9
# AdoptOpenJDK, OpenJ9の11, JREのみ
brew install --cask adoptopenjdk11-openj9-jre
# AdoptOpenJDK, OpenJ9の11, JREのみ, LargeHeap版?
brew install --cask adoptopenjdk11-openj9-jre-large
過去のものも残されているので、バージョン番号の部分を8から16に変えてあげれば、それぞれのバージョンのものがインストールできます(もちろん保守サポートされているという意味ではありません。また、JREやOpenJ9の用意がないバージョンもあります)。詳しくは https://github.com/AdoptOpenJDK/homebrew-openjdk/tree/master/Casks を参照してください。
java6
#過去にAppleが提供していたOSX用のJDK6
brew install --cask java6
過去にAppleが提供していた JavaForOSX.dmg です。
古いOSX用なので、インストール用途は限定的と思います。
どのJDKをインストールすれば良いか?
OpenJDKソムリエに関連するまとめ あたりの資料ややりとりをウォッチしつつ、提供元やライセンス、LTS, MTS, STS版の提供状況で自分の環境に合うディストリビューターのものを選ぶのが良い感じです。
なお、この記事には詳しくは書いていませんが、JDK11ぐらいからのHomebrewでの提供状況を見ていくと、次のリリースのEarly Access版や、将来のSTS版(例えばJDK 18, 19,...)がHomebrew上で提供されるかは、ディストリビューターの提供状況や、caskにこまめにコミットする人がいるかによってまちまちです。(例えばディストリビューターがLTS版やSTS版を提供していても、Homebrewにない場合もある)
最新のSTSを追いたい場合、HomebrewにないJDKを網羅したい場合、複数のJDKを使い分け・切り替えしたい場合は SDKMAN!の利用を検討したほうが良いと思います。
Homebrew でのJDKインストールを充実させたいなと思った人はぜひHomebrew Caskにコミットしていきましょう。
おわりに
これもインストールできるよ? などあれば教えてください。