Sep 09, 2008
[Dolphin] J2SE 7.0 EA で closure 環境を用意する。
そろそろ closure を実際に使用しておこうかと思い、JDK 7.0 EA をダウンロードして closure 環境を用意してみた。 現時点(2008/09/09)では JDK 単体では closure は利用できず、別途 closure ライブラリを用意する必要がある様だ。
- Closures for the Java Programming Language (aka BGGA)
- http://javac.info/
- JSR Proposal: Closures for Java
- http://www.javac.info/consensus-closures-jsr.html
- JDK 7 Project
- https://jdk7.dev.java.net/
- Java Platform, Standard Edition 7 Binary Snapshot Releases
- http://download.java.net/jdk7/binaries/
closure 環境の準備
まずは JDK 7.0 EA をダウンロードする。 今回使用したのは現時点で最新と思われる jdk-7-ea-bin-b34-windows-i586-28_aug_2008.exe。 closure ライブラリは javac.info から closures.tar.gz をダウンロードする。
JDK 7.0 EA 単体では closure は利用できないらしいが、とりあえず試してみる。>set JAVA_HOME=C:\_java\jdk\1.7.0-ea-28_aug_2008 >set PATH=%PATH%;%JAVA_HOME%\bin >java -version java version "1.7.0-ea" Java(TM) SE Runtime Environment (build 1.7.0-ea-b34) Java HotSpot(TM) Client VM (build 14.0-b03, mixed mode, sharing) >javac -version javac 1.7.0-ea
>md test
>cd test
>javac Test.java
Test.java:7: 式の開始が不正です。
int value = { => 1 + 2 }.invoke();
^
Test.java:7: 式の開始が不正です。
int value = { => 1 + 2 }.invoke();
^
Test.java:7: ';' がありません。
int value = { => 1 + 2 }.invoke();
^
エラー 3 個
>javac -source 7 -target 7 Test.java
Test.java:7: 式の開始が不正です。
int value = { => 1 + 2 }.invoke();
^
Test.java:7: 式の開始が不正です。
int value = { => 1 + 2 }.invoke();
^
Test.java:7: ';' がありません。
int value = { => 1 + 2 }.invoke();
^
エラー 3 個
やはり無理だった。で、closure ライブラリを導入してみる。
先程と同じテストコードを実行してみる。>xcopy /S \closures-2008-08-11\* \_java\jdk\1.7.0-ea-28_aug_2008 \closures-2008-08-11\CHANGES \closures-2008-08-11\DISTRIBUTION C:\_java\jdk\1.7.0-ea-28_aug_2008\LICENSE を上書きしますか (Yes/No/All)? y \closures-2008-08-11\LICENSE \closures-2008-08-11\bin\java \closures-2008-08-11\bin\java.bat \closures-2008-08-11\bin\javac \closures-2008-08-11\bin\javac.bat \closures-2008-08-11\bin\javadoc \closures-2008-08-11\bin\javadoc.bat \closures-2008-08-11\lib\closures.jar 10 個のファイルをコピーしました
動いた。今回はここまで。>javac.bat Test.java >java.bat Test 3 >
使用したテストコード
上で使用したテストコード(Test.java)はこれ。
public class Test{
public Test(){
super();
}
public static void main(final String[] args){
int value = { => 1 + 2 }.invoke();
System.out.println(value);
}
}



