Open Source im professionellen Einsatz

Template-Engine Velocity für die Java-Beans-Programmierung

Programmieren mit Speed

Velocity aus dem Jakarta-Projekt hilft nicht nur den Webprogrammierern dabei, statische Vorlagen mit dynamischen Inhalten zu füllen. Das spart viel Zeit beim Entwickeln einander ähnelnder Beans.

Typisch für Webcontent ist, dass ein vorgegebener Rahmen das Layout vorgibt, aber die Inhalte variieren. Diesem Ansatz folgt Velocity aus dem Jakarta-Projekt, das Java-Lösungen für den Apache-Webserver sammelt. So behandeln die Beispiele des Velocity User Guide sowie die meisten anderen Anleitungen Web-bezogene Aufgaben.

Um diesen festgetretenen Pfad geht es im Folgenden aber nicht, sondern um ein anderes Anwendungsszenario. Das Prinzip bleibt aber unverändert und lässt sich auf Web- und beliebige andere Anwendungen übertragen. Das Beispiel erzeugt eine Java-Bean-Klasse dynamisch aus einer vorgegebenen Beschreibungsdatei. Mit Hilfe des Velocity-Template »bean.vm« stellt »BeanGen.java« (Listing 3) eine Bean-Klasse mit einigen Properties bereit.

Wer Java-Beans kodiert, muss immer wieder ähnliche Codeabschnitte tippen. Wenigstens für die Getter- und Setter-Methoden liefern die gängigen IDEs inzwischen Vorlagen mit, aber bei weiter gehenden Bean-Features wie Changelistener für Bound und Constrained Properties, Events und Eventlistener helfen sie nicht weiter. Selbst einfache Klassen mit wenigen Properties arten unnötig aus. Velocity beschleunigt solche mühsamen Routinearbeiten deutlich.

Templates und Daten

Die Template-Engine von Velocity erzeugt aus Daten und Vorlagen - den Templates - fertige Ausgabedateien für praktisch jeden Zweck. Diese Vorlagen bestehen aus drei Teilen: statischem Text, Referenzen und Direktiven. Die Referenzen sind Platzhalter für Daten, die Direktiven steuern das Verhalten der Template-Engine. Velocity verwendet für seine Templates eine eigene Programmiersprache: die Velocity Template Language (VTL).

Die Einstiegshürde beim Lernen der Sprache liegt niedrig. VTL beschränkt sich auf die unbedingt notwendigen Elemente. Wer JSPs und Shell- oder Perl-Programmierung kennt, dem wird VTL kaum Mühe bereiten. Die Daten für die Templates definiert man entweder innerhalb des jeweiligen Template selbst, oder stellt sie über ein Rahmenprogramm zur Verfügung. Letzteres ist der übliche Weg, erstere Methode eignet sich hauptsächlich für Konstanten.

Bean-Template

Listing 1, ein Auszug aus dem Beispiel-Template, definiert seine Daten fest. Es mischt statischen Text, in diesem Fall Java-Code, mit Direktiven und Referenzen. Die Zeilen 14 und 15 ziehen weitere Templates heran, dabei bewirkt »#parse« das Verarbeiten des importierten Template. Die Anweisung »#include« fügt einen Inhalt hinzu, ohne darin enthaltene Anweisungen zu verarbeiten.

Listing 1 verwendet fast alle Sprachelemente von VTL: Loops, einfache Bedingungen, Makro-Aufrufe, Kommentare und Schachtelung von Templates. Die Platzhalter für die Daten, also die Referenzen, fangen mit »$« an - die Bash lässt grüßen. Referenzen bieten aber mehr Möglichkeiten als Variablen.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook