読者です 読者をやめる 読者になる 読者になる

時と場合によりけり

日々のアップデートとイノベーションに翻弄され彷徨える IT エンジニアの覚書

macOS Sierra に anyenv で jenv をインストールし Java を管理してみる

概要

まずは、Mac に Cask で Java 7 と Java 8 をインストールします。
次に anyenv を使って jenv をインストールし、Java を管理してみます。

Cask については、以下のエントリーを参考にしてみてください。

stangler.hatenablog.com

anyenv のインストールについては、以下のエントリーを参考にしてみてください。

stangler.hatenablog.com

ハードウェア

  • マシン: Macbook Pro Early 2011
  • OS: macOS 10.12 Sierra
  • メモリ: 16 GB
  • ストレージ: SSD 512 GB

ソフトウェア

  • Homebrew 1.0.5
  • Cask 0.60.0
  • Java 7 ( jdk1.7.0_80.jdk )
  • Java 8 ( jdk1.8.0_102.jdk )
  • anyenv
  • jenv

Java 8 インストール

Homebrew で検索してみる

% brew search java
app-engine-java     javarepl            jslint4java         libreadline-java  
homebrew/emacs/javaimp
Caskroom/cask/eclipse-java
Caskroom/cask/java
Caskroom/cask/yourkit-java-profiler
Caskroom/versions/charles-applejava
Caskroom/versions/charles-beta-applejava
Caskroom/versions/java-beta
Caskroom/versions/java6
Caskroom/versions/java7
Caskroom/versions/java9-beta

java9-beta なんかもありますね。
Java 8 は Caskroom/cask/java っぽいです。

info コマンドで確認

% brew cask info java
java: 1.8.0_102-b14
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Not installed
From: https://github.com/caskroom/homebrew-cask/blob/master/Casks/java.rb
==> Name
Java Standard Edition Development Kit
==> Artifacts
JDK 8 Update 102.pkg (pkg)
==> Caveats
This Cask makes minor modifications to the JRE to prevent issues with
packaged applications, as discussed here:

  https://bugs.eclipse.org/bugs/show_bug.cgi?id=411361

If your Java application still asks for JRE installation, you might need
to reboot or logout/login.

Installing this Cask means you have AGREED to the Oracle Binary Code
License Agreement for Java SE at

  https://www.oracle.com/technetwork/java/javase/terms/license/index.html

jdk8 というのが表示されているので、先ほどの Caskroom/cask/javaJava 8 ということで間違いないです。

インストール

% brew cask install java

少し時間がかかります。
途中でパスワードを求められたりしますので、Mac にログインするときのパスワードを入力してください。

==> Caveats
This Cask makes minor modifications to the JRE to prevent issues with
packaged applications, as discussed here:

  https://bugs.eclipse.org/bugs/show_bug.cgi?id=411361

If your Java application still asks for JRE installation, you might need
to reboot or logout/login.

Installing this Cask means you have AGREED to the Oracle Binary Code
License Agreement for Java SE at

  https://www.oracle.com/technetwork/java/javase/terms/license/index.html

==> Downloading http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-
######################################################################## 100.0%
==> Verifying checksum for Cask java
==> Running installer for java; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are i
Password:
==> installer: Package name is JDK 8 Update 102
==> installer: Installing at base path /
==> installer: The install was successful.
🍺  java was successfully installed!

確認

% brew cask list

java が表示されれば OK!

Java 7 インストール

% brew cask install java7
==> Caveats
This Cask makes minor modifications to the JRE to prevent any packaged
application issues.

If your Java application still asks for JRE installation, you might need to
reboot or logout/login.

The JRE packaging bug is discussed here:

    https://bugs.eclipse.org/bugs/show_bug.cgi?id=411361

Installing this Cask means you have AGREED to the Oracle Binary Code License
Agreement for Java SE at

    http://www.oracle.com/technetwork/java/javase/terms/license/index.html

==> Downloading http://download.oracle.com/otn-pub/java/jdk/7u80-b15/jdk-7u80-ma
######################################################################## 100.0%
==> Verifying checksum for Cask java7
==> Running installer for java7; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are i
Password:
==> installer: Package name is JDK 7 Update 80
==> installer: Installing at base path /
==> installer: The install was successful.
🍺  java7 was successfully installed!

確認

% brew cask list

java と java7 が表示されていればOK!

jenv インストール

jenv とは

ひとことでいうと、複数バージョンの Java を簡単に切り替えて使えるようにする仕組み。
rbenv の Java 版。但し、大きな違いがあります。

rbenv を使って Ruby をインストールすることはできますが、jenv を使って Java をインストールすることはできません。上記で、Java 8 や Java 7 を Cask でインストールしたのは、そういう事情があったからです。

github.com

anyenv でインストールできる、なんとか env の一覧を確認

% anyenv install -l
Available **envs:
  Renv
  crenv
  denv
  erlenv
  exenv
  goenv
  hsenv
  jenv
  luaenv
  ndenv
  nenv
  nodenv
  phpenv
  plenv
  pyenv
  rbenv
  sbtenv
  scalaenv
  swiftenv

たくさんありますが、今後も増えそうな感じです。
次は、kotlin の env とかくるかな?

インストール

% anyenv install jenv
/var/folders/h4/nlm7x1td5zxbq8xqgpd89hz80000gn/T/jenv.20160929155951.8918 /System/Library/Java
Cloning https://github.com/gcuisinier/jenv.git...
Cloning into 'jenv'...
remote: Counting objects: 874, done.
remote: Total 874 (delta 0), reused 0 (delta 0), pack-reused 874
Receiving objects: 100% (874/874), 362.88 KiB | 166.00 KiB/s, done.
Resolving deltas: 100% (367/367), done.
Checking connectivity... done.
/System/Library/Java

Install jenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.

シェルの再起動

% exec $SHELL -l

Java 8 を jenv に登録

% jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home
oracle64-1.8.0.102 added
1.8.0.102 added
1.8 added

Java 7 を jenv に登録

% jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
oracle64-1.7.0.80 added
1.7.0.80 added
1.7 added

Mac のデフォルトとして使用する Java のバージョンを設定

設定

インストールした 1.8.0_102 をシステムワイドに使うよう global コマンドで設定してみます。

% jenv global 1.8.0.102

確認

% java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

無事、Java 8 ( 1.8.0_102 ) が設定されました。
以上です。