2009-09-25 3 views
20

Gibt es ein Äquivalent von .net 's Expression Trees, die LINQ für die JVM zugrunde liegen? Ich würde gerne einige LINQ-ähnliche Code-Strukturen in Scala implementieren und ich frage mich, ob ich meine eigene Expression-Tree-Bibliothek auch rollen muss.Java Expression Trees

Update: Ich bin nicht in einem linq Äquivalent selbst interessiert. .net verfügt über eine große Auswahl an Werkzeugen für die Ausdrucksbaumstruktur, mit denen Sie Code zur Laufzeit dynamisch kompilieren können, damit er von Ihrem Code aus aufgerufen werden kann. Das Projekt, das ich durchführen möchte, hat keine Beziehung zu Datenbanken. Ausdrucksbaumstrukturen bieten eine einfache Möglichkeit, Code zu beschreiben, der mit Daten arbeitet.

Wenn es keine Bibliothek gibt meine andere Option, ich denke, ist eine zu erstellen, die Byte-Code ausgibt.

+1

Für JAVA versuchen Sie Quare (Codehaus). ABER, solange JAVA keine Funktionen höherer Ordnung unterstützt (Funktionen als Mitglieder der ersten Klasse), glaube ich nicht, dass diese "Bibliotheken" das echte LINQ fühlen werden. –

+0

Steve - bist du jemals damit fertig geworden? – MalcomTucker

+1

Nein. Wir gingen nur zurück zu Fenstern und benutzten Fenster. Für einige Sachen haben wir LLVM mit C++ unter Unix benutzt. Wir isolieren jedoch das Java-Zeug und verwenden .net für alles, was dynamisches Codegen erfordert. –

Antwort

1

Das nächste, was mir bekannt ist, ist Julian Hyde linq4j und Optiq Bibliotheken. Sie verfügen über ein Ausdrucksbaummodell und unterstützen ein LINQ-ähnliches Programmiermodell (abhängig von der Java-Syntax) für viele Arten von Datenquellen.