java8 備忘録

[java]WindowsにJava8


JDKのダウンロードっていつのまにかログインが必要になったのか。
http://www.oracle.com/technetwork/java/javase/downloads/index.html


この頃は chocolatey(cinst java.jdk)でいれていたので気が付かなんだ。chocolatey にはまだjava8は置いてない。


素直にインストーラを落としてきてインストール。
環境変数 JAVA_HOME をつくって %JAVA_HOME%\bin にpathを通す。


切り替えは基本 junction でやっている(WindowsXPからWindows8まで運用してきたが今まで問題にあたったことはない)。
http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx


いまなら mklink (Vista以降)のほうがいいのかもしれないが。


c:\dev\java-1.7.0-51
c:\dev\java-1.8.0
にインストールされている場合

>type jjava
@ECHO OFF
junction -d %JAVA_HOME%
junction %JAVA_HOME% c:\dev\java-%1
@ECHO %JAVA_HOME%


なバッチファイルを作って

>jjava 1.7.0-51
c:\dev\java-1.7.0-51
>java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

>jjava 1.8.0
c:\dev\java-1.8.0
>java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)

[java]MacにJava8


Mountaion Lionに素直にインストーラを落としてきてインストール。
おわったらJava8になった。


切り変えるには?
http://qiita.com/mas0061/items/2fe9333f045800d00b5c


.bachrcにいかのようなaliasをつけて


alias java8="export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home"
alias java7="export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home"

$java8
$java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)

$ java7
$ java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

[java]Java8のIDE(IDEA)


現状はIntelliJ IDEA Community Edition FREE http://www.jetbrains.com/idea/ をおとしてくるのが楽かな(すぐ使えるようになるので)。


File→New Project→Java でプロジェクト作成
プロジェクトフォルダを右クリック→Open Module Settings→Project→Project Language Level を6.0から8.0に変更。
これでJava8でコンパイルできるようになった。


Windows, Mac ともにきちんと動いてくれた。

[java]Java8のIDE(Eclipse)


https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler


pleiadesが対応しているかもと見に行ったがさすがに対応してなかった
http://mergedoc.sourceforge.jp/index.html#/pleiades.html
でもEclipse 4.3.2 Kepler SR2なのでJava8を充てることは可能。

Windows


Windows は Pleades の Java を入れる。
eclipse.iniから --launcher.XXMaxPermSize 512M を削除。Java8からXXMaxPermSizeがなくなったので。


あとWiki通りに http://download.eclipse.org/eclipse/updates/4.3-P-builds/ からJava8対応を入れる。
Java -> Compiler -> Compiler compliance level -> 1.8 もしくは
Java8でコードを書いてQuick Fix でWorkspace, Project ともに設定可能だった。

Mac


Machttp://www.eclipse.org/downloads/ からダウンロード。
eclipse.app をクリックだと「eclipseは開発元が未確認のため開けません」とでるので右クリックから開くを選ぶ。


起動したら基本Windowsと設定の仕方は同じ。

[java]Java8のTutorial


Java 8 Tutorial
http://winterbe.com/posts/2014/03/16/java-8-tutorial/
を写経した。


Date APIはいけてないのでJodaだろーってことでDate APIのところまで。
2時間30で終了(JavaIDEのインストールとプロジェクトで設定は除く)。

[java]Java8とC#


C# だとこうなっているけどJavaだとどうなっているってのを意識しながらTutorialやったけど
C# のほうがわかりやすいと思うな。


すで対比をStreamだけだけどまとめている人がいた。


LINQ to Objects と Java8-Stream API の対応表
http://qiita.com/amay077/items/9d2941283c4a5f61f302


C#の拡張メソッドとvarがないのがやっぱり痛いなー。
拡張メソッドあれば自分でたりないところを足せるのに。。。
Collectorを自分で実装すればいいみたいだけど。


Java8
http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
Dotnet
http://msdn.microsoft.com/en-US/library/bb549151(v=vs.110).aspx


Java8はすらすらかける自信がない。BiFunctionのbiってラテン語で「2」を意味するのか。
Dotnetのように引数16個まで対応なFunc, Actionのほうが楽だ(3つ以上を使うことは確かにあまりないとは思うが)。