Java ist auch eine Insel

Mittwoch, Februar 20, 2008

Erste praktische Spielchen mit Closures

Die Webseite http://www.javac.info/ fasst die gesamte Literatur und Implementierung zum BGGA-Closures-Ansatz zusammen. Um selbst etwas mit Closures rumzuspielen, muss man zunächst jdk1.6\bin\javac.exe in den Such-PATH setzen. Als nächstes lädt man http://www.javac.info/closures.tar.gz und entpackt es. Im bin-Verzeichnis gibt es Batch-Dateien für java und javac. Nun kann durch die Beispiele aus dem test\tools\javac\closures duchbrausen. Etwa:

public class VoidResult1 {
    public static void main(String[] args) {
    {=>void} x = {=> System.out.println("print") };
    }
}

Ein weiteres Beispiel.

import java.util.*;

public class Capture7 {
    public static void main(String[] args) {
    { => int } c1 = null;
    { => int } c2 = null;
    { => int } c3 = null;
    for (int i = 0; i<20; i++) {
        @Shared int j = i;
        if (i == 10) {
        c1 = { => j++ };
        c2 = { => j++ };
        c3 = { => i++ }; // will generate warning
        }
    }

    for (int i = 10; i<20; i++) {
        int j = c1.invoke();
        if (j != i) throw new AssertionError(i + " " + j);
    }
    for (int i = 20; i<30; i++) {
        int j = c2.invoke();
        if (j != i) throw new AssertionError(i + " " + j);
    }
    for (int i = 20; i<30; i++) {
        int j = c3.invoke();
        if (j != i) throw new AssertionError(i + " " + j);
    }
    System.out.println("done");
    }
}

Wenn man sich die Beispiele anschaut, merkt man, dass das alles gar nicht so schwierig ist. Die aktuelle Diskussion um Closures, mit Beispielen aus dem letzten Winkel, suggerieren, dass das Closures-Konzept schwer zu verstehen ist. Das stimmt aber nicht, denn für den Alltag bracht man nur einen kleinen Teil.

Apropos Closures: Wir haben uns Ruby-Seminar aktualisiert :-) Neu ist aber auch unter Ajax (Asynchronous JavaScript and XML) Kurs.

AddThis Social Bookmark Button