HomeBrew で AdoptOpenJDK をインストールしてみた（訂正版）

## 追記（2019/11/28）

下記の衝突も一段落したようなので、HomebrewでインストールできるJDKをまとめました。

https://qiita.com/gishi_yama/items/ee3526e7e7a922148333

ちなみに、

- adoptopenjdkプロジェクトはJDKを全てバージョン番号付きのcaskで提供する
- homebrew-cask(versions)はバージョン無しで最新版のcaskを提供する

といった形で落ち着いたようです。

## 追記（2019/8/27）

### homebrew-cask-versions と AdoptOpenJDK 8 を使いたい人むけ

４月下旬に [homebrew-cask-versions にも AdoptOpenJDK 8 のcaskが追加されてしまい](https://github.com/Homebrew/homebrew-cask-versions/pull/7260)、homebrew-cask-versions と AdoptOpenJDK のプロジェクトを両方をtapしているユーザは、 caskが衝突してしまいます。

```sh
Error: Cask adoptopenjdk8 exists in multiple taps:
  caskroom/versions/adoptopenjdk8
  adoptopenjdk/openjdk/adoptopenjdk8
```

なので、どちらかを指定してインストールしましょう。

```sh
## homebrew-cask-versions を使う場合
brew cask install caskroom/versions/adoptopenjdk8
```

or 

```sh
## adoptopenjdk を使う場合
brew cask install adoptopenjdk/openjdk/adoptopenjdk8
```

### Note that:

~~これ、改善はどっちのプロジェクトの issue になげたらいいんでしょうかね？~~

その後、cask, cask-versions, adoptopenjdkのプロジェクトをまたがって議論されていますが、「命名規則をどうするか」の意見がうまく定まらず、議論が続いています。しばらくは重複状態のままかなと思います。

複数リポジトリを持てるパッケージマネージャーだと、こういうときの合意形成が大変ですね...

- [Homebrew/homebrew-cask-versions: "Add AdoptOpenJDK 8"](https://github.com/Homebrew/homebrew-cask-versions/pull/7260)
- [Homebrew/homebrew-cask-versions: "Update and rename adoptopenjdk8.rb to openjdk8.rb"](https://github.com/Homebrew/homebrew-cask-versions/pull/7375)
- [AdoptOpenJDK/homebrew-openjdk: Cask adoptopenjdk8 exists in multiple taps ](https://github.com/AdoptOpenJDK/homebrew-openjdk/issues/106)
- [Homebrew/homebrew-cask: "Rename adoptopenjdk.rb to openjdk.rb"](https://github.com/Homebrew/homebrew-cask/pull/63537) ←いまここ

----

以降は通常のインストール方法についてです。

## 1. Caskでのインストール方法

AdoptOpenJDK/openjdk をtapします。

tapしなくても、AdoptOpenJDK 11 はインストールできるのですが、例えばJDK 8 などのAdoptOpenJDKをインストールしたい場合は、 tap が必要です。

```sh
brew tap AdoptOpenJDK/openjdk
```

`brew cask install` で、利用したい AdoptOpenJDK バージョンのインストールを行います。

```sh
# AdoptOpenJDKの最新版
brew cask install adoptopenjdk

# AdoptOpenJDK11の場合（tap後に実行可能）
brew cask install adoptopenjdk11

# AdoptOpenJDK8の場合（tap後に実行可能）
brew cask install adoptopenjdk8
```

これまでの Oracle JDK や Oracle Open JDK Build と同じく、`/Library/Java/JavaVirtualMachines/adoptopenjdk-XX.jdk/Contents/Home` （XXはバージョン番号） にインストールされます。

`$JAVA_HOME` などのパス設定もこれまでの 

```sh
# XX はバージョン番号
export JAVA_HOME=`/usr/libexec/java_home -v XX`
```

と同じままで利用出来ます。

### 動作確認

```sh
java -version
```

```sh

# AdoptOpenJDK11の場合
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.1+13)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.1+13, mixed mode)
```

## 2. IntellIJ IDEAに設定してみる

AdoptOpenJDK で動作確認したいプロジェクトで `cmd` + `↓` して、 Project Structure ダイアログを開きます。

左側で `SDKs` を選択します。

<img width="512" alt="sdks_2.png" src="https://qiita-image-store.s3.amazonaws.com/0/8064/104717bb-3636-828b-a501-aab1c8bb1211.png">


JDK home path の入力欄右側のディレクトリアイコンを押して、設定したいバージョンのAdoptOpenJDKのパスを使って、 `/Library/Java/JavaVirtualMachines/adoptopenjdk-XX.jdk/Contents/Home` を設定します。

![AdoptOpenJDK11_Home.png](https://qiita-image-store.s3.amazonaws.com/0/8064/6ae51151-222b-eed7-5aa1-86c62309af07.png)

Classpathが読み込まれますので、 Apply もしくは OK で決定します。

<img width="512" alt="sdks_3.png" src="https://qiita-image-store.s3.amazonaws.com/0/8064/07a51670-6c49-f9b4-ae87-ce98d5b2b4f2.png">

以上で設定完了です。かんたん。

## アンインストール方法

通常のcaskと同様に、uninstallコマンドです。

```sh
## XXはバージョン番号
brew cask uninstall adoptopenjdkXX
```

## 各JDKのHomeBrewでのインストールコマンド

今のところ、HomeBrew Caskでのインストールコマンドは下のような感じです。

```sh
brew cask install java
  ## Oracle Build OpenJDK　（GPLv2+CE)
  ## Oracleがビルドした、半年更新の無償版

brew cask install oracle-jdk
  ## Oracｌe JDK （OTN, BCL)
  ## Oracleがビルドした、LTS対応のサポート有償版

brew cask install adoptopenjdk
  ## Adopt OpenJDK Build（GPLv2+CE)
  ## IBMやMicrosoftがスポンサーをするAdoptOpenJDKコミュニティがビルドした、4年サポート付き無償版

brew cask install corretto
  ## Amazon Corretto
  ## Amazonが提供する無償LTSのOpenJDK、2018年1月段階でまだプレビュー版。

brew cask install zulu
  ## Azul Zulu
  ## Azul SystemsがビルドしたOpenJDK、MicrosoftのAzure上は無償LTS
```

それぞれのJDKの特徴は

- 　[Javaのサポートについてのまとめ](https://qiita.com/nowokay/items/edb5c5df4dbfc4a99ffb)
- 　[JDK、Oracle JDK、OpenJDK、Java SEってなに？](https://qiita.com/nowokay/items/c1de127354cd1b0ddc5e)

<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">今後のサポートとアップデートに関して、Javaチャンピオン数十名が執筆したJava is Still Freeというドキュメントが、関ジャバを含む日本のJavaコミュニティにより翻訳され、公開となりました。有償化と誤情報がウェブ上で散見されます。不安を持たれた方もぜひご覧ください。<a href="https://t.co/smdVRqs9dS">https://t.co/smdVRqs9dS</a></p>&mdash; 関西Javaエンジニアの会 (@kan_java) <a href="https://twitter.com/kan_java/status/1049604642202472449?ref_src=twsrc%5Etfw">October 9, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

などで詳しく報告されています。


## 更新履歴

- 2019/04/24 追記を追加
- 2019/01/18 そろそろ Oracle JDKの無償サポートが終了する頃合いなので、まとめ直しました。