MacにJava(JDK)をインストール


2012年頃に買ったMacBook Air。
Android Studioをインストールしようと思ったら、Javaがインストールされていない。
そこでJDKをインストールしたわけだが意外に面倒、というか複雑だったのでメモ。
OpenJDKについては調べてもいない。

# 現状の確認
## Javaのバージョン
/Applications/Utilities/Java Preferences.app を探したけど、Mac OSX10.8以降では存在しないらしい。
OSをアップデートした人は残ってるかも。

なので、コンソールから`java -version`で確認。
「インストールしますか？」と聞かれたら、まだインストールしない。

Android StudioなどJava製のアプリを起動してもAppStoreが「インストールしますか？」と聞いてくる。
そこでインストールしたとしても、何回でも聞いてくるのでインストールしない。

何かしらのJavaがインストールされている場合`/usr/libexec/java_home -V`でも確認できるはず。
例えばこんな感じ。
このコマンドなかなか出来るヤツ、という印象を受けた。

```bash:java_home
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
    1.7.0_51, x86_64:	"Java SE 7"	/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
    1.6.0_65-b14-462, x86_64:	"Java SE 6"	/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-462, i386:	"Java SE 6"	/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
```

## パスについて
MacのJavaは下記の場所にインストールされるらしい。

1. /System/Library/Java/JavaVirtualMachines/
2. /Library/Java/JavaVirtualMachines/
3. /Users/$USER/Library/Java/JavaVirtualMachines

(1)にはAppleのJDKがインストールされる。
(2)にはOracleのJDKがインストールされる。
(3)はユーザ別にインストールした場合？

http://blog.satooshi.jp/blog/2013/01/29/you-cannot-uninstall-apple-jdk6/

## MacとJavaの関係

OracleでMac用のJDK6を探したけど見つからない。いったいどうなってんだ。

> Javaバージョン6以前については、Apple社が独自のバージョンのJavaを提供しています。
> http://www.java.com/ja/download/faq/java_mac.xml#java6

どうやら6まではAppleが提供してたらしい。
7からはAppleは提供していないので、Oracleからダウンロードできる。逆に。

> JDK 7がインストールされているシステムでApple Java 6を復元する場合は、まずJDK 7をアンインストールする必要があります。JDK 7のアンインストール手順を参照してください。 
> http://www.java.com/ja/download/faq/java_mac.xml#restore

復元てなんですかね。
JDK7からインストールしてしまった場合、アンインストールしたほうがいいのかもしれない。
してないけど。

アンインストール方法は↓
http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html#uninstall

# JDK6のインストール

前置きが長すぎる。JDK6からインストール。
Apple提供のものを下記のページからダウンロードしてインストール。
最新のものはAppleのサポートページから"java"で検索したほうがいいと思う。

Java for OS X 2013-005
http://support.apple.com/kb/DL1572?viewlocale=ja_JP

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk にインストールされているはず。

# JDK7以降のインストール
こちらはOracleからダウンロードする。
"Accept License Agreement"をチェックしてダウンロード。

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

こちらも特に何事も無くインストール完了。
/Library/Java/JavaVirtualMachines/ 以下にインストールされているはず。

## JAVA_HOME環境変数とjava_homeコマンド

色々調べてみると内部は複雑な模様。
シンボリックリンク切ったり張ったりしてる人もいて嫌になる。

> We could keep our current PATH and it will be Apple java bootstrap system, living into /usr/bin/java who make use of JAVA_HOME and launch the proper JVM. Simple but efficient .
> http://blog.hgomez.net/blog/2012/07/20/understanding-java-from-command-line-on-osx/

MacのjavaはJAVA_HOME環境変数を設定するだけで切り替えられるっぽい。
`java_home -v`でバージョンごとのパスを返してくれるので、それと合わせて使えばよさそう。
やはり`java_home`は出来る子だった。

```bash:java
$ echo $JAVA_HOME

$ export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
$ java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
$ 
$ export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
$ echo $JAVA_HOME
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
$ java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
```