Anagura's.....

たまに書く

OS2.1(前半)とjavaの場所

一応まとめ.作業途中にIntellijのスクショ取っとくべきだった….

今回はビルドにテスト,その他諸々をスクリプトで記述することによって自動化してしまおうという gradleというツールを使ってjavaでのI/Oの記述速度の比較をするプログラムを作る.その為の前準備の様な課題です.

とりあえずJavaでよく使われるIDEIntellijをダウンロードしてみよう. 一応学生は登録すればUltimate無料で使えたりします.後プラグイン入れたら他の言語も使えるよ.

次にgradleをinstall

$brew install gradle

一応この前にbrewの環境を更新しときたいので

$brew update 
$brew upgrade

ぐらいはしておいても良いんじゃないかなぁ.

次に今回はjavaを使うので最新版のJDKをinstallします. jDKのinstall Accept License AgreementのチェックいれてMacOSXのverをinstallしよう.112ぐらい使えば良いのではないかなぁ.sampleはいらないと思われる.

ダウンロードしたJavaの仕様書もほしいよねって事で.英語版のdocumentをDownloadします. Java Document

Downloadしたものは自分のMacOSXのDocumentディレクトリの中にjavaとか作るなりして置いてみよう. 参照するのはAPIが中心なので,落としたDocumentのAPIディレクトリ内のindex.htmlをブラウザからブックマークしていつでも見れるようにしておこう.

じゃぁ落としたjavaは112だよね.ということはjavaのverは最新の筈だ. 確認を込めて

$java -version

してみるとおそらく違うverを指している. 何故かと言うとこのjavaはシステムのjava.つまりAppleが用意してくれたJavaというわけ.

じゃぁ今落としたjavaはどこにあるのか. とりあえず確認してみよう

$where java
/usr/bin/java

javaはここを指している.ふむ.ならそこはどうなっているのだろう

$ls -l /usr/bin/java                                                   
lrwxr-xr-x  1 root  wheel  74 10 18  2015 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

/usr/bin/javaはリンク類ってるだけか.だったらそこを見てみよう わかりやすいようにcdしてみると

$cd  /System/Library/Frameworks/JavaVM.framework/Versions
$ls 
1.4        1.5        1.6        A          CurrentJDK
1.4.2      1.5.0      1.6.0      Current

ここにはさっき落としたjavaは入ってなさそう.ではいったいdmgでinstallしたjavaはどこに入っているのだろう

javaには落としたversionを確認する(実際は後述する環境変数の設定の為ですが) java_homeというコマンドが実は用意されています. ただこのコマンドが置いてある場所はPATHが通ってないのでフルパスで

$/usr/libexec/java_home -V 

とか打ってみます.Vオプションは今現在installしているjavaの一覧が見えます 試しにやってみると

$/usr/libexec/java_home -V
Matching Java Virtual Machines (6):
    1.8.0_112, x86_64: "Java SE 8"  /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
    1.8.0_111, x86_64: "Java SE 8"  /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
    1.8.0_60, x86_64:  "Java SE 8"  /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home
    1.8.0_51, x86_64:  "Java SE 8"  /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home
    1.6.0_65-b14-468, x86_64:  "Java SE 6"  /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-468, i386:    "Java SE 6"  /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

これによるとさっきinstallした1.8.0_112はこの1番上/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home にあるらしい.なるほど.

つまりdmgでinstallしたjavaファイルは/Library/Java/JavaVirtualMachines/にversionごとdirectoryが生成されてそこに置かれる訳.

ではjavaのversionをこの最新版に変更しよう./usr/binで見たjavaのコマンド群はリンクが張られているだけなので,versionを指定できれば動的に変わるはずだ.

JAVAを利用する各ツールは環境変数$JAVA_HOMEで設定しているパスを確認している. その部分を変更すれば良いという事になる.

指定方法は簡単.zshなら.zshrcぐらいに

$vim ~/.zshrc
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_112`

を付け加えれば大丈夫.その後設定を反映させたいので

$source .zshrc

しておこう.zshにloginシェルを変更したい場合は次のリンクでも参考にしてみよう. Homebrew で zsh を導入する | deadwood

では実際に作るのはまた後半で