かつのりの日記2

わんくまでは珍しいJavaを中心とした日記です

目次

Blog 利用状況

書庫

日記カテゴリ

いろいろリンク

もうJDK7用のクロージャの利用コードが出てます。

http://javac.info/というサイトがあるのですが、JDK7から実装される予定のクロージャの仕様検討を行っているサイトです。

JDK7からのクロージャについてはEBNFレベルではよく見ていたのですが、その構文を使った実装コードも出てきたようです。

http://javac.info/jsr166z.ztar

これは、JDK7から追加されるFork-Joinフレームワークにクロージャを取り入れた実装です。一部のコードを抜粋すると、

public static final { long, long => long } longAdder = { long x, long y => x + y };

public static final class
    NaturalMinReducer<T extends Comparable<? super T>>
  implements { T, T => T } {

    NaturalMinReducer(Class<T> type) {}

    public T invoke(T a, T b) {
        return (a != null &&
                (b == null || a.compareTo(b) <= 0))? a : b;
    }
}

public static final class IntMinReducer implements { int, int => int } {
    final { int, int => int } comparator;

    public IntMinReducer({ int, int => int } comparator) {
        this.comparator = comparator;
    }

    public int invoke(int a, int b) {
        return (comparator.invoke(a, b) <= 0)? a : b;
    }
}

という感じです。う~ん、面白いですね。ラムダ式はかなり魅力的です。

投稿日時 : 2007年12月19日 0:20

Feedback

# re: もうJDK7用のクロージャの利用コードが出てます。 2007/12/19 0:40 επιστημη

javaはとんと御無沙汰なんでclosureなんつー話があったのも知らなんだ ^^;
匿名メソッドでぢゅーぶんちゃうの? とか思っちゃうですが、
ひょっとかしてjava-closureは匿名メソッドのsyntax-sugarなんでしょか?

# re: もうJDK7用のクロージャの利用コードが出てます。 2007/12/19 0:47 かつのり

匿名メソッドではなく匿名クラスですね。

昔の話ではjava.lang.Functionというクラスかインターフェイスの、
コンクリートクラスのシンタックスシュガーになるかもって噂を聞いた事はありますが、
具体的にはどうなるのでしょうね・・・。

JavaScriptみたいな柔軟なクロージャにはならないのでしょうけど、
匿名クラスよりは使える感じになるかと思います。
匿名クラスって結構面倒なんですよねw

# [.NET]Java Fork/Join Framework, PLINQ, TPL 2007/12/19 7:51 NyaRuRuの日記

http://javac.info/というサイトがあるのですが、JDK7から実装される予定のクロージャの仕様検討を行っているサイトです。 JDK7からのクロージャについてはEBNFレベルではよく見ていたのですが、その構文を使った実装コードも出てきたようです。 http://javac.info/jsr166z.

# re: もうJDK7用のクロージャの利用コードが出てます。 2007/12/19 9:14 凪瀬

さすがエピさん食い付きが速いw
自分はまだクロージャに魅力をあまり感じていないんですよね…。
未だに1.5の新機能を使おうという運動を周りに働きかけているというレベルだというのに…orz

# re: もうJDK7用のクロージャの利用コードが出てます。 2007/12/19 9:21 渋木宏明(ひどり)

.NET における、匿名デリゲートに対するラムダの利点は、ラムダ式については「コンパイラが IL に展開しない」ことに尽きます。

ラムダ式(=Expression Tree)の解釈・実行の制御は、Expression Tree を受け取った側の責任で行われます。

これにより、例えば LINQ to SQL の where に指定された条件式が「あまりにもど阿呆なクエリ」になることが抑止できます。

# re: もうJDK7用のクロージャの利用コードが出てます。 2007/12/19 10:21 かつのり

JDK7のJVMでは動的言語のフューチャーも取り入れられる予定みたいですが、
{int, int => int}のようなクロージャ型宣言を、
implements節に書けるようになっているようなので、
多分、動的ではなく静的に解釈されると思いますね。

{int, int=> int} foo = {int x, int y => x + y};
が、
java.lang.Function<Integer,Integer,Integer> function =
new java.lang.Function<Integer,Integer,Integer>(){

public Integer invoke(Integer x, Integer y){
return x + y;
}
}
に近い感じで展開されるんじゃないでしょうか。

# cSuQhdPjvA 2011/12/23 0:13 http://247options.com/

52. "The road will be overcome by that person, who goes." I wish you never stopped and be creative - forever..!

# rmNKJyhYBYBMs 2011/12/23 18:27 http://247options.com/

I must admit, the webmaster is a cool guy..!

タイトル
名前
Url
コメント