Featured image of post 無償JDK「AdoptOpenJDK」をMacにインストールする方法

無償JDK「AdoptOpenJDK」をMacにインストールする方法

Oracle JDKの有償化を受けて、無償のAdoptOpenJDKをMacにインストールする方法。OpenJDKとの違い、Homebrewでのインストール、複数バージョンの切り替え設定、確認まで手順つきです♪

1843文字

Javaサポート問題

Javaといえば、オラクルが提供している言語で多くのシステム開発で使用されてきています。
最新のJavaのバージョンは2018年9月時点11ですが、8を使っているシステムも多いのでは無いのでしょうか。

しかし、そんな中オラクルが無料サポートをやめ有償化したのは話題になったのでJavaエンジニアで知らない方はいないと思います。

もちろん、予算がある案件であればセキュリティ担保のために有償サポートをすれば良いのですがなかなかお高いです。。。

本記事では有償化問題の詳細については触れませんが、今後のJava案件では必ず考慮に入れないといけない問題ですので各自調べてみると良いでしょう。

しかし、有償だけでなく無償のJDKもあります。
ただ、その場合は定期的なバージョンアップを行う必要があるためそれに対する開発及びテスト工数が発生します。

お金で解決するか、で解決するかの選択肢という事ですな。。。orz

無償のJDK

無償のJDKにはOpenJDKAdoptOpenJDKがあります。

OpenJDK

OpenJDK (Open Java Development Kit) は、プログラミング言語Javaのフリーかつオープンソースの実装である。2006年、サン・マイクロシステムズが始めたもので、GPLリンク例外つきの GNU General Public License (GNU GPL) でライセンスされている。リンク例外つきとしたのは、Javaクラスライブラリのライブラリとしての使用をGPLライセンスの適用外とするためである。OpenJDKは Java SE 7 の公式リファレンス実装とされている

AdoptOpenJDK

OpenJDKのビルドを提供するプロジェクト。IBM、マイクロソフト等がバックアップしており、OpenJDKの提供しているJDKよりも多くのプラットフォームに対応している。(AIX等) こちらは半年ごとにアップデートする通常のバージョンに加え、4年のサポートを行うLTS版を提供する予定である。

今回は後者のAdoptOpenJDKを使用するための環境構築を行ってみましたので、手順をご紹介致します。

手順

前提

作業前のJavaの状態は以下の通りとします。

前提
$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

$ which java
/usr/bin/java

Homebrewでインストール

AdoptOpenJDKもHomebrew経由でインストールすることが出来ます。
以下のコマンドを実行してみましょう。

コマンド
brew install adoptopenjdk-openjdk8

しかし、以下の様なエラーが出ると思います。

エラーログ
Error: No available formula with the name "adoptopenjdk-openjdk8"
==> Searching for a previously deleted formula (in the last month)...
Warning: homebrew/core is shallow clone. To get complete history run:
  git -C "$(brew --repo homebrew/core)" fetch --unshallow

Error: No previously deleted formula found.
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.

原因としては、adoptopenjdk-openjdk8の配布はHomebrewの公式リポジトリでは行っていないため、見つからなかった様です。

なので、以下のコマンドでリポジトリを追加しましょう。

コマンド
brew tap AdoptOpenJDK/openjdk

brew tapとは公式以外のリポジトリをフォーミュラとしてHomebrewに追加するもので、brewのもとでinstall,uninstall,updateなどが行えます。もちろん自分が公開しているものも簡単に追加できます。

すると、以下の様に正常にTappingされたとのログが出ます。

実行ログ
==> Tapping adoptopenjdk/openjdk
Cloning into '/usr/local/Homebrew/Library/Taps/adoptopenjdk/homebrew-openjdk'...
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 8 (delta 2), reused 2 (delta 0), pack-reused 0
Unpacking objects: 100% (8/8), done.
Checking connectivity... done.
Tapped 3 formulae (34 files, 25.7KB).

そしたらもう一度、brew install adoptopenjdk-openjdk8を実行してみましょう。

実行ログ
==> Installing adoptopenjdk-openjdk8 from adoptopenjdk/openjdk
==> Downloading https://github.com/AdoptOpenJDK/openjdk8-releases/releases/download/jdk8u172-b11/OpenJDK8_x64_Mac_jdk8u172-b11.tar.gz
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/85294734/40a18d74-5b5e-11e8-8317-9a07f9b00006?X-Amz-Algorithm=AWS4-HMAC
######################################################################## 100.0%
Warning: Warning - This brew TAP is being DEPRECATED soon in favour of using brew cask. Please check out https://github.com/AdoptOpenJDK/homebrew-openjdk/blob/master/README.md for more info
🍺  /usr/local/Cellar/adoptopenjdk-openjdk8/jdk8u172-b11: 577 files, 170.4MB, built in 3 minutes 5 seconds

正常にインストール出来ましたね♪

バージョン切り替え

インストールしただけではまだ有効化されていないので、JAVA_HOMEを変える必要があります。

お使いのシェルに合わせて設定ファイルに以下を追記してください。
筆者の場合はZshなので.zshrcになります。

~/.zshrc
export JAVA_HOME="/usr/local/Cellar/adoptopenjdk-openjdk8/jdk8u172-b11"
export PATH=$JAVA_HOME/bin:$PATH

編集が終わったら以下のコマンドで編集を反映してください。

コマンド
source ~/.zshrc

確認

では、以下のコマンドで確認してみましょう。

バージョン確認
java -version

実行結果
openjdk version "1.8.0-adoptopenjdk"
OpenJDK Runtime Environment (build 1.8.0-adoptopenjdk-jenkins_2018_05_19_02_01-b00)
OpenJDK 64-Bit Server VM (build 25.71-b00, mixed mode)

正常に変わっている様ですね♪

終わりに

オラクル有償化によって、システム開発で使用する言語のバランスが一気に崩れるかもしれません。
とはいえ、やはりJava言語自体はまだまだ無くなる事も無いと思っています

時代の変化に乗り遅れないように、Javaの有償化問題に向き合っていきましょう!