Rubyのrbenv、nodeのnodeenvなどと同じように、Javaにも複数のバージョンを管理するための*env、jEnvがあります。
今回は真っ新のMacにJavaの開発環境を構築する際に、1.7、1.8、9(EA)をインストールすることにしたので、その手順をまとめておきます。
Contents
HomebrewでJDKをインストール
jEnvでは、nodeenvなどと異なりjEnvコマンドからJDKをインストールすることはできません。
先にJavaをインストールする必要がありますが、今回は後々アップデート等が楽なHomebrew経由でインストールしようと思います。
もちろんOracleのホームページから直接インストーラーで導入してもかまいません。
Javaの古いバージョン、またEAのバージョンをbrewで導入するには、versionsのリポジトリをtapする必要があります。
1 |
$ brew tap caskroom/versions |
バージョンを付けずにインストールすると、執筆時点ではJava8がインストールされます。
今回はその前後の7と9も追加でインストールしておきます。
1 2 3 |
$ brew cask install java $ brew cask install java7 $ brew cack install java9-beta |
インストールしたJDKの一覧を表示します。
1 2 3 4 5 |
$ /usr/libexec/java_home -V Matching Java Virtual Machines (3): 9, x86_64: "Java SE 9-ea" /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home 1.8.0_112, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home 1.7.0_80, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home |
jEnvを使ってみよう
バージョンの違う3つのJDKをインストールできたので、次はjEnvをインストールして簡単に切り替えられるようにします。
Homebrewでインストール
jEnvのインストールは公式のページ www.jenv.be に簡潔に纏まっています。
今回はHomebrew経由でJDKをインストールしたので、jEnvもbrewを使うことにします。
1 |
$ brew install jenv |
シェルの起動スクリプトに追記する
次に、シェルが起動する際にjEnvが呼ばれるよう、.bash_profileか.zshrcに追記します。
私はzshを使っているので、bashを使っている場合は読み替えてください。
1 2 |
% echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc % echo 'eval "$(jenv init -)"' >> ~/.zshrc |
書き換えたら、ターミナルを開き直すかsourceで再読込して変更を反映させます。
jEnvにインストールしたJDKを登録
java_home -v
を使うと、そのJDKへのパスを返してくれるので、これを使ってjEnvに3つのバージョンを登録します。
1 2 3 |
$ jenv add $(/usr/libexec/java_home -v 1.7) $ jenv add $(/usr/libexec/java_home -v 1.8) $ jenv add $(/usr/libexec/java_home -v 9-ea) |
グローバルにバージョンを切り替え
1 2 3 4 5 6 |
$ jenv global 1.8 $ java -version java version "1.8.0_112" Java(TM) SE Runtime Environment (build 1.8.0_112-b16) Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode) |
jEnvの場合、nodeenvと異なり、ホームディレクトリ下の.jenv
の中にバージョン情報が保存されるため、起動スクリプトなどに書き込む必要はありません。
指定できるバージョンは versions コマンドで確認できます。
1 2 3 4 5 6 7 8 9 10 |
$ jenv versions system 1.7 1.7.0.80 * 1.8 (set by /Users/user/.jenv/version) 1.8.0.112 9-ea oracle64-1.7.0.80 oracle64-1.8.0.112 oracle64-9-ea |
ローカルにバージョンを切り替え
他の言語の*envと同様に、jEnvでも特定のディレクトリだけバージョンを切り替えることが可能です。
1 2 3 4 5 6 7 8 |
$ mkdir java9 && cd java9 $ jenv local 9-ea $ java -version java version "9-ea" Java(TM) SE Runtime Environment (build 9-ea+142) Java HotSpot(TM) 64-Bit Server VM (build 9-ea+142, mixed mode) |
実行すると、 .java-version
というファイルが作成されバージョン情報が保存されます。
所感
もう12月で焦りがとまりません。12月になると毎年慌ただしく動いてる気がするので、一年がずっと12月ならいいのにと思います。