MacBook AirにJEnvとJavaをインストールしてみる

##目標

MacBook AirにJEnvをインストールしてJavaのバージョン管理をする

Linux初心者です。諸般の事情によりMacを使うことになったのでいろいろやってみてます
正直、Macでは色々とできるらしいが、やり方がよくわからない。
なので、ちょっとずつでも自分の使いやすいようにしていく予定です

##参考にさせて頂いたページ
[OSXのjenvでjavaのバージョン管理](https://qiita.com/analytics-hiro/items/7cba5e6fc343ba6d55b9)
[Mac に jenv を利用して Java の開発環境を作る](https://qiita.com/daskepon/items/09ef8739904442c21324)
[【オラクルの呪い】「jenv」を使ってJavaのバージョンをコマンド一つで切り替えよう【Homebrew/anyenv】](https://blogenist.jp/2019/06/30/8863/)
[【Mac】HomebrewでJavaをインストールする](https://reasonable-code.com/homebrew-java/)

##準備
 - macOS Mojave v10.14.6
 - Homebrew 2.1.10

- Macメモ
  - Deleteボタンがないので、前方削除は fn+⇦(バックスペース)キー


###Homebrewの設定
 - caskroom/versionsをtapする
 - "tapする"というのは、この場合Homebrewがサーチする場所（リポジトリ）を追加するという意味らしい
 - なので、"caskroom/versions"をtapする事によってバージョンを指定してパッケージをインストールできるようになるらしい
 - ものによっては複数のリポジトリに同一のアプリなりがあったりするので[注意](https://discourse.brew.sh/t/caskroom-versions-vs-cask-versions-conflict/5112)が必要みたい

```
$ brew tap caskroom/versions
```

 - HomebrewにTapされているものを確認。私のHomebrewには以下の4つがtapされてま

```
$ brew tap

caskroom/cask
caskroom/versions
homebrew/cask
homebrew/core
```
 - "caskroom/cask"は[以前の投稿](https://qiita.com/DiceYellowhouse/items/d53862fd7d4a0f1d4df6)でtapした覚えがある


###JEnvのインストール
  - JEnvはJavaの環境管理ツールで複数のバージョンをPC全体（Global）やディレクトリ単位（local）で切り替えができるツールらしい
  - せっかなのでHomebrewでインストールしたいので、探す

```
$ brew search jenv
==> Formulae
jenv
```

 - 発見
 - インストールする

```
$ brew install jenv
```

 - ちゃんとインストールできたか確認

```
$ jenv --version
jenv 0.5.2
```

 - JEnvの設定をします
 - 以下のコマンドを1行ずつ実行する
 - ターミナルを起動した時にいる場所(ホーム)のディレクトリにある".bash_profile"というファイルにJEnvへのパス情報を追加している。。。たぶん

```
echo 'export PATH="$HONE/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
```

 - 環境によっては".bash_profile"が無い場合があるので、その場合は[以前の投稿](https://qiita.com/DiceYellowhouse/items/6ddce3e3fcb39cd0f97a)を参考にして作成
 - ".bash_profile"の中を確認

```
$ cat .bash_profile
...
...
export PATH="$HONE/.jenv/bin:$PATH"
eval "$(jenv init -)"
```

 - ちゃんと追加されてる

###JDKのインストール

 - 当然Homebrewでインストールいたしので、探す

```
$ brew search java
==> Formulae
app-engine-java            javarepl                   libreadline-java
google-java-format         jslint4java

==> Casks
charles-applejava                        netbeans-java-ee
eclipse-java                             netbeans-java-ee
eclipse-java                             netbeans-java-se
eclipse-javascript                       netbeans-java-se
eclipse-javascript                       oracle-jdk-javadoc
java                                     oracle-jdk-javadoc
java                                     yourkit-java-profiler
java-beta                                yourkit-java-profiler
java11                                   homebrew/cask-versions/java-beta
```

 - "jdk"でも探してみる

```
$ brew search jdk
==> Casks
adoptopenjdk              oracle-jdk                 oracle-jdk-javadoc
adoptopenjdk              oracle-jdk                 sapmachine-jdk
adoptopenjdk8              oracle-jdk-javadoc         sapmachine-jdk
```

 - 。。。。。どれを入れて良いかわからん。
 - とりあえず新しいのを入れたいし、オ○クルは避けたい
- adoptopenjdkにしよう
- [AdoptOpenJDK](https://adoptopenjdk.net/index.html)にはIBM、Microsoft、Azul、Amazon、jClarity とかの名前のあるし
- とりあえず、最新のものをインストールしてみる

```
$ brew cask install adoptopenjdk
...
...
==> Caveats
More versions are available in the AdoptOpenJDK tap:
  https://github.com/AdoptOpenJDK/homebrew-openjdk

  brew tap adoptopenjdk/openjdk
....
....

==> Installing Cask adoptopenjdk
==> Moving Generic Artifact 'jdk-12.0.2+10' to '/Library/Java/JavaVirtualMachine
Password:
🍺  adoptopenjdk was successfully installed!
```

 - バスワードを聞かれるので、PCのログインパスワードを入力て完了
 - インストール途中で"adoptopenjdk/openjdk"をHomebrewにtapすると他のバージョンものあるよ　と宣伝されてるけど、今回はあとまわし
 - ちゃんとインストールされたか確認

```
$ java --version
openjdk 12.0.2 2019-07-16
OpenJDK Runtime Environment AdoptOpenJDK (build 12.0.2+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 12.0.2+10, mixed mode, sharing)
```
 - JDKのバージョン12がインストールされたらしい

###JEnvとJAVAの関連付け
 - インストールされたJDKの情報を確認

```
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
    12.0.2, x86_64:	"OpenJDK 12.0.2"	/Library/Java/JavaVirtualMachines/adoptopenjdk-12.0.2.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/adoptopenjdk-12.0.2.jdk/Contents/Home
```

 - バージョンとインストールされている場所のパスが表示されるので、パスをコピー
 - 要は`（ルート）/Library/Java/JavaVirtualMachines/adoptopenjdk-12.0.2.jdk/Contents/Home` にインストールされたよ。という事だ
 - JEnvにこの"OpenJDK 12.0.2"を登録する
 - 上記でコピーしておいたパスを"add" して登録

```
$ jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-12.0.2.jdk/Contents/Home

openjdk64-12.0.2 added
12.0.2 added
12.0 added
```

 - 登録されたか確認

```
$ jenv versions
* system (set by /Users/Dice/.jenv/version)
  12.0
  12.0.2
  openjdk64-12.0.2
```

 - あとは別のバージョンのJDKなりを同様の手順で登録していくと切り替えが可能となる

###おまけ
 - 上で宣伝されてた"adoptopenjdk/openjdk"をHomebrewにtapして、jdkをサーチしてみた

```
$ brew tap adoptopenjdk/openjdk
...
...
Tapped 20 casks (83 files, 82.0KB).
```

 - でサーチ

```
$ brew search jdk
==> Casks
adoptopenjdk ✔                           adoptopenjdk8
adoptopenjdk ✔                           adoptopenjdk8
adoptopenjdk10                           adoptopenjdk8-jre
adoptopenjdk11                           adoptopenjdk8-openj9
adoptopenjdk11-jre                       adoptopenjdk8-openj9-jre
adoptopenjdk11-openj9                    adoptopenjdk8-openj9-jre-large
adoptopenjdk11-openj9-jre                adoptopenjdk8-openj9-large
adoptopenjdk11-openj9-jre-large          adoptopenjdk9
adoptopenjdk11-openj9-large              oracle-jdk
adoptopenjdk12                           oracle-jdk
adoptopenjdk12-jre                       oracle-jdk-javadoc
adoptopenjdk12-openj9                    oracle-jdk-javadoc
adoptopenjdk12-openj9-jre                sapmachine-jdk
adoptopenjdk12-openj9-jre-large          sapmachine-jdk
```

 - ぉぉぉぉ　増えてる
 - ✔ が付いているのがインストール済みやつらしい

##おわりに
とりあえず、これでJAVA開発はできるという事で。
なかなかコマンドラインでの作業に慣れないので、引き続きいろいろやってみて行こうと思います


Windowsユーザーのみなさんの参考になればと思います。