特にJavaで何か開発しているわけではないのですが、新機能の「jshell」を使ってみたかったので、Java SE 9をインストールしてみました。基本的にOracleのサイトからJava SE 9をダウンロードして使うだけなのですが、新しいバージョンをインストール後にjava,javacコマンドでバージョンを確認したらJava 8u144が出力されたのでおかしいと思い調べたところ、削除しない限りJDKは上書きされずにシステムに残るということを知りました。早速コマンドを実行した結果が次の通りです。
% /usr/libexec/java_home -V Matching Java Virtual Machines (5): 9, x86_64: "Java SE 9" /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home 1.8.0_144, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home 1.8.0_141, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home 1.8.0_131, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home 1.8.0_121, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
見事に複数のバージョンのJDKがシステムに存在してますね。ちなみにJDK 8はバージョンあたり350MBくらいでした。とりあえず、「jdk-9.jdk」と「jdk1.8.0_144.jdk」だけ残して削除することにしました(1GB程度、空きました)。
さて、私はJavaのバージョンを次のようにJAVA_HOMEで定義しています。zshを使っているので.zshrcに記述してます。
export JAVA_HOME=`/usr/libexec/java_home -v 1.8` (Java 8を使う場合) export JAVA_HOME=`/usr/libexec/java_home -v 9` (Java 9を使う場合)
Java 9ではバージョンの指定は1.9ではなく、9と指定する様です。