MacにJDK7をインストールしたからといってAppleのJDK6を消してはいけない
JDK security vulnerability
Javaの脆弱性がちょっと話題になってますね。リンクをクリックするだけで感染するなんて、かなり怖いです。北村聡士 @satooshi_jp です。
さて、自分のMacにインストールしていたJDKのバージョンはいくつだったかな?と思い調べてみるとまさかのJDK6!そういえばAppleはJDK7を提供しないことになり、Oracleが提供することになったのでした。なので、JDK7をインストールしてみました。
で、結論から言うと、タイトルの通りですが、
- Appleの提供しているJDK6は決してアンインストールしてはいけない
です。理由はよく分かりませんでした。試したのはMacBook Pro 13 Retina(OS X 10.8.2)です。
How it works
MacにおけるJDKのインストールパスは実は3種類あります。
-
/System/Library/Java/JavaVirtualMachines
-
/Library/Java/JavaVirtualMachines
-
/Users/yourname/Library/Java/JavaVirtualMachines
それぞれ、
- Apple JDKのパス
- 追加でインストールするJDKのパス
- ユーザー毎にインストールするJDKのパス
という役割になっているみたいです。1はApple提供のものなので、JDK6がインストールされていて、Oracle提供のJDK7は2にインストールされます。自分の環境では3はありませんでした。
ちょっとややこしいのが次のパスにも似たようなものが置いてある点。
-
/System/Library/Frameworks/JavaVM.framework
どうやらMacはここを見て、どのJDKを使用するかを判断してそうなんですが、さらに/usr/libexec/java_home
なんてコマンドもあったりして、結局良く分かりません。。
Java app won't work if I remove JDK under /System/Library/Java/JavaVirtualMachines
で、本題の話ですが、1のパスを削除すると、JDK7がインストールされていたとしても、Javaアプリ(Dockから起動できるタイプのデスクトップアプリ)は起動しなくなります。
Java6が必要です(キリッ
みたいなメッセージが出たと思います。-vmでJDK7の方を指定してもだめぽげ。
さらに、/System/Library/Frameworks/JavaVM.framework
を消してみると、すでに新しいバージョンがインストールされています、というメッセージが出て、Apple JDKの再インストールすらできなくなります。危ないですね。。
ちなみに、他のブログで良く見かける/Application/Utilities/
のJava preferencesは10.8だとありませんのでご注意を。これがあるのは、たぶんアップグレードした場合だけじゃないかと思います。
あ、肝心のwebブラウザのJavaを無効にする方法は、この辺に載ってます。
Reference
- JDK 7 Installation for Mac OS X
- Mac FAQ
- Understanding Java From Command Line on OSX - /usr/libexec/java_homeの使い方とかMacのJDKインストールパスの説明が書いてあります。