JET (Java emitter template)

Java Emitter Templates (JET) ist Bestandteil des Eclipse Modelling Frameworks (EMF). JET ist besonders für die generative Erzeugung von Code geeignet. Der zentrale Ansatz von JET ist die Verwendung von Templates. Dies ist besonders vorteilhaft hinsichtlich der Lesbarkeit, was bei komplexeren Tools häufig nicht der Fall ist. Die Template-Technik von JET ist eng an die Syntax der Java Server Pages (JSP) angelehnt, was JET wiederum zu einem leicht zu erlernenden sowie ebenfalls zu einem einfach anzuwendenden Tool macht.


JET ermöglicht die Erzeugung verschiedener Arten von Output u.a. Java, XML, Text oder SQL. Als Nachteil von JET ist anzusehen, dass für die JET-Templates kein Editor und ebenso damit verbunden keine Validierung der Templates in Eclipse vorhanden ist, was insbesondere bei der Entwicklung von komplexen Templates zu Schwierigkeiten führen kann. Bei der Fehlersuche muss deshalb auf die Implementierungsklasse zurückgegriffen werden, um mögliche Rückschlüsse auf das Template zu ziehen. Ebenso muss die komplette EMF-Umgebung installiert sein, um JET überhaupt verwenden zu können.

Fehlerreduzierung im Quellcode

An vielen Stellen der Entwicklung von Software ist es heute üblich, Teile des Quellcodes automatisch generieren zu lassen. Mit JET - einem in EMF-Framework integrierten Teilprojekt - können so aufwändige Schreibart und diesbezügliche Fehler reduziert werden. Mit JET ist es möglich, Textartefakte auf der Basis von Templates zu generieren. Dabei ist die Ausgabe von JET nicht auf ein bestimmtes Format begrenzt - JET kann beliebigen Output wie SQL, Java, XML, HTML, Text usw. generieren. Dazu bedient sich JET einer Sprache zur Erstellung der Templates, die in den verwendeten Konstrukten den Sprachkonstrukten von Java Server Pages (JSP) sehr ähnlich sind. Für den Einsatz von JET ist die vorherige Installation einer Eclipse-Version des Software Development Kits (SDK) mit einer kompatiblen EMF-Version des EMF-SDK notwendig. Wie EMF ist die JET-Engine nur innerhalb von Eclipse lauffähig. Somit ist die Verwendung von JET ohne Eclipse und EMF ausgeschlossen.

Der von der JET-Engine verantwortete Prozess der Codegenerierung teilt sich in zwei Schritte auf - die Übersetzung ( Translation) und die Erzeugung (Generation). Dabei startet der Prozess auf der Grundlage eines vom Anwender erstellten Templates, das dem letztendlichen Output entspricht. Durch die JET-Engine wird diese Template übersetzt in eine sogenannte Implementierungsklasse. Um daraus dann das gewünschte Resultat in einem String zu erhalten, der dann weiterverarbeitet werden kann, muss diese Klasse im nächsten Schritt instanziiert werden. Der Vergleich mit JSP macht hier deutlich - auch aus dem JSP-Template wird in einem ersten Schritt eine Klasse (das Servlet) erzeugt. Erst mit Aufruf der Klasse wird ein Output für den Browser erzeugt. Die JET-Syntax unterstützt dazu drei verschiedene Arten von Ausdrücken:

  • Directives, definieren die Umgebungsparameter vor Übersetzung eines Templates für die JET-Engine,
  • Expressions, dienen der Ausgabe von Werten einer Variablen oder Methode,
  • Scriplets, sind Fragmente von Java-Program-mcode, die in der Regel Geschäftslogik ent-halten.
Zentrales Element von JET ist die Implementierungsklasse, die von der JET-Engine aus dem Template erzeugt wird. Mit dem Aufruf einer speziellen Methode - generate() - dieser Klasse, wird ein String erzeugt, der den Output liefert, wie das dieser durch das Template vorgegeben ist.

http://www.eclipse.org/articles/Article-JET/jet_tutorial1.html

http://www.eclipse.org/modeling/m2t/?project=jet

Informationen zum Artikel
Deutsch:
Englisch: Java emitter template - JET
Veröffentlicht: 31.10.2013
Wörter: 543
Tags: #Entwicklung, Codierung
Links: Code, Editor, EMF (enhanced metafile), EMF (Eclipse modelling framework), Fehler