Geschwindigkeit oder FreeMarker?

Vorlagen-Engines können auf eine Vielzahl von Entwicklungsszenarien angewendet werden, in denen Sie Text basierend auf bestimmten Verarbeitungsregeln generieren möchten, und werden häufig als Ansichtskomponente in MVC-Anwendungen verwendet. In diesem Artikel erklärt Jeroen van Bergen, wo Template-Engines in Ihre Anwendungsarchitektur passen, und zeigt Ihnen einige der Vorgänge, die allen Template-Engines gemeinsam sind. Schließlich vergleicht er die beiden führenden Java-Template-Engines Velocity und FreeMarker hinsichtlich Leistung, Benutzerfreundlichkeit und Leistung.

Template-Engines werden in Java-Entwicklungsszenarien verwendet, in denen automatisch Text generiert und gemäß bestimmten Verarbeitungsregeln formatiert werden muss. Die beiden beliebtesten Open-Source-Java-Template-Engines sind derzeit Velocity und FreeMarker. Während Velocity seit langem die führende Template-Engine ist, hat FreeMarker damit begonnen, sie zu überholen und bietet eine Geschwindigkeit und Raffinesse, die Sie in Velocity nicht immer finden werden.

In diesem Artikel stelle ich Ihnen kurz Template-Engines vor, erkläre, wo sie in Ihre Java-Anwendungsarchitektur passen, und zeige Ihnen einige grundlegende Vorgänge, die allen gemeinsam sind. Anschließend vergleiche ich Velocity und FreeMarker anhand von Leistung, Benutzerfreundlichkeit und Leistung.

Diese Diskussion richtet sich in erster Linie an Leser, die noch keine Erfahrung mit Template-Engines haben und wissen möchten, wofür sie verwendet werden, und Hilfe bei der Auswahl zwischen den beiden führenden Open Source-Optionen erhalten möchten.

Was ist eine Template-Engine?

Eine Vorlagen-Engine ist eine Komponente, die festen Text und Daten als Eingabe verwendet, diese nach bestimmten Verarbeitungsregeln integriert und ein Textdokument mit den Daten ausgibt. Vorlagen-Engines sind sehr nützlich für Aufgaben wie das Erstellen dynamischer Webseiten, Dokumente und E-Mails und können auch zum Generieren von Quellcode verwendet werden.

Template-Engines werden hauptsächlich als Ansichtskomponente in einer MVC-Architektur verwendet. Die Vorlagen-Engine fördert eine gute Trennung zwischen der tatsächlichen Ansichtslogik und der gerenderten Ansicht, was als eine gute Sache angesehen wird. Die Verwendung einer Vorlagen-Engine ist mit einem gewissen Aufwand beim Erstellen der Anwendung verbunden. Die meisten Entwickler sehen jedoch einen schnellen Return on Investment, wenn die Anwendung geändert werden muss. Die Trennung der Ansicht von der Logik erleichtert das Aktualisieren des Erscheinungsbilds der Anwendung durch Anpassen der Vorlagen, anstatt den Quellcode neu schreiben zu müssen. Die Beziehung ähnelt der von CSS und HTML, bei der eine Änderung des Stils eine kleine Bearbeitung der CSS-Datei und nicht viele Überarbeitungen des HTML erfordert.

Übersicht über Open Source Java Template Engines

Wie so oft bei der Entwicklung auf der Java-Plattform stehen Ihnen viele Java-basierte Template-Engines zur Auswahl. Ich habe versucht, eine umfassende Liste aller derzeit verfügbaren Java-Template-Engines zu erstellen. Einige davon sind echte Template-Engines in dem Sinne, dass sie nicht für eine bestimmte Art von Anwendung entwickelt wurden. Einige sind spezialisierte Engines, die auf eine bestimmte Art der Dokumenterstellung abzielen, z. B. das Dekorieren von Webseiten. Wenn eine Template-Engine nicht für den allgemeinen Gebrauch bestimmt ist, wird eine explizite Beschreibung des Anwendungstyps angezeigt, für den sie bestimmt ist.

Tabelle 1. Template-Engines für die Java-Plattform

Name Ausführung Zweck URL Lizenz
Geschwindigkeit 1.5 Allzweck-Template-Engine //velocity.apache.org/ Apache-Softwarelizenz
FreeMarker 2.3.10 Allzweck-Template-Engine //www.freemarker.org/index.html BSD-Lizenz
SiteMesh 2.3 Webseitenlayout und Dekoration //www.opensymphony.com/sitemesh OpenSymphony-Lizenz
TeaServlet 2.3 Webseiten //teatrove.sourceforge.net Teelizenz
Jamon 2.3.0 Allzweck-Template-Engine //www.jamon.org/index.html Mozilla Public License
WebMacro   Allzweck-Template-Engine //www.webmacro.org/ GNU General Public License