OS10.6インストール直後のデフォルトjavaについて

自分Macのjdkの構成とかパスとかbash_rcとか$JAVA_HOMEとかbash_profileとか統一感無く、たいした知識も持ち合わせずにいじっているうちに、OSインストールした直後デフォルトのjavaの構成とかはどうなっていたのかまったく分からなくなってしまったので、別パーティションを確保した上でクリーンインストールしてみていろいろ調査します。私が今使っているのは2010年の10月に発売されたMacBookAirでOSのバージョンは10.6.4でした。


↓これがインストールメディアです。

Javaバージョン

java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04-248)
Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01-101, mixed mode)

あそう。

Javaコマンドどこよ?

type java
java is hashed (/usr/bin/java)

/usr/bin/javaは以下へのシンボリックリンク

/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
ls -laF /System/Library/Frameworks/JavaVM.framework/Versions/
drwxr-xr-x  13 root  wheel  442  5  3 12:18 ./
drwxr-xr-x  11 root  wheel  374  5  3 12:18 ../
lrwxr-xr-x   1 root  wheel    5  5  3 12:17 1.3@ -> 1.3.1
drwxr-xr-x   3 root  wheel  102 12  3  2009 1.3.1/
lrwxr-xr-x   1 root  wheel   10  5  3 12:17 1.4@ -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  5  3 12:17 1.4.2@ -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  5  3 12:17 1.5@ -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  5  3 12:17 1.5.0@ -> CurrentJDK
lrwxr-xr-x   1 root  wheel    5  5  3 12:17 1.6@ -> 1.6.0
drwxr-xr-x   7 root  wheel  238  5  3 12:17 1.6.0/
drwxr-xr-x   8 root  wheel  272  5  3 12:18 A/
lrwxr-xr-x   1 root  wheel    1  5  3 12:18 Current@ -> A
lrwxr-xr-x   1 root  wheel    3  5  3 12:17 CurrentJDK@ -> 1.6


CurrentだからAディレクトリへのリンクでAの中身は
↓こんなのだよ

ls -laF /System/Library/Frameworks/JavaVM.framework/Versions/A
drwxr-xr-x   8 root  wheel     272  5  3 12:18 ./
drwxr-xr-x  13 root  wheel     442  5  3 12:18 ../
lrwxr-xr-x   1 root  wheel      28  5  3 12:18 CodeResources@ -> _CodeSignature/CodeResources
drwxr-xr-x  42 root  wheel    1428 12  3  2009 Commands/
drwxr-xr-x   4 root  wheel     136 12  3  2009 Frameworks/
-rwxr-xr-x   1 root  wheel  201232 12  3  2009 JavaVM*
drwxr-xr-x  32 root  wheel    1088  5  3 12:18 Resources/
drwxr-xr-x   3 root  wheel     102 12  3  2009 _CodeSignature/

それにしてもAってなんだよ。Aって。


ここのCommandsの中のjavaを実際には使用するってなってるねー。

ls -laF /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands | grep java
-rwxr-xr-x   1 root  wheel  72896 12  3  2009 java*
-rwxr-xr-x   1 root  wheel  85616 12  3  2009 java_home*
-rwxr-xr-x   1 root  wheel  72896 12  3  2009 javac*
-rwxr-xr-x   1 root  wheel  72912 12  3  2009 javadoc*
-rwxr-xr-x   1 root  wheel  72896 12  3  2009 javah*
-rwxr-xr-x   1 root  wheel  72896 12  3  2009 javap*
-rwxr-xr-x   1 root  wheel  55952 12  3  2009 javaws*

このjavaですね。なんでこんなことになってるの?
Java Preferenceでデフォルトをかえることによってこの辺はどう変化するのだろうか?

Aディレクトリと1.6.0ディレクトリ

あと

/System/Library/Frameworks/JavaVM.framework/Versions/

にある1.4とか1.5とかのシンボリックリンクは回りくどく結局1.6.0ディレクトリを参照していますよね。

その中身は

ls -laF /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Commands | grep java
lrwxr-xr-x   1 root  wheel    16  5  3 12:17 java@ -> ../Home/bin/java
lrwxr-xr-x   1 root  wheel    17  5  3 12:17 javac@ -> ../Home/bin/javac
lrwxr-xr-x   1 root  wheel    19  5  3 12:17 javadoc@ -> ../Home/bin/javadoc
lrwxr-xr-x   1 root  wheel    17  5  3 12:17 javah@ -> ../Home/bin/javah
lrwxr-xr-x   1 root  wheel    17  5  3 12:17 javap@ -> ../Home/bin/javap
lrwxr-xr-x   1 root  wheel    92  5  3 12:17 javaws@ >/System/Library/Frameworks/JavaVM.framework/Resources/Deploy.bundle/Contents/Home/bin/javaws


1階層戻って/Home/binだってさ。

ls -laF /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin | grep java
-rwxr-xr-x   1 root  wheel  100672  4 15  2010 java*
-rwxr-xr-x   1 root  wheel  104784  4 15  2010 javac*
-rwxr-xr-x   1 root  wheel  104784  4 15  2010 javadoc*
-rwxr-xr-x   1 root  wheel  104784  4 15  2010 javah*
-rwxr-xr-x   1 root  wheel  104784  4 15  2010 javap*
lrwxr-xr-x   1 root  wheel      92  5  3 12:17 javaws@ -> /System/Library/Frameworks/JavaVM.framework/Resources/Deploy.bundle/Contents/Home/bin/javaws


この1.6.0ディレクトリとAディレクトリには同じJavaが入ってるっぽいよね。なんで2つJavaコマンドが存在するのでしょう?
Aってなんなんでしょう?

OS10.6でのjdk1.4や1.5の扱いは?

基本的に10.6ではもうデフォルトでjdk1.5とか1.4は入ってないみたいです。それにAppleが提供しているインストーラも10.6対応とかしてないようです。10.5用のjdk1.5とかはインストールできなかった。だからここら辺をみて1.5や1.4を使えるようにした場合、この無駄なシンボリックリンクとかを使ってうまいことできるのかな的感はあるのだが、どうするのがベストなのでしょうかよくわかりません。どう管理するか。私には難しいです。JAVA_HOMEとかどう設定するのがいいの?


自分の現在の状況もメモっとかないといけないね。なるべく分かりやすい構成にしてさ。1.5とかも入れてみたりしてさ。