FreeMarker
# FreeMarker

FreeMarker ist eine Template-Engine für die Java-Plattform, die Platzhalter in Textdateien durch dynamische Inhalte ersetzt. Die häufigste Anwendung ist das Generieren von HTML in Webanwendungen, es wird aber u. a. auch zum Erzeugen von E-Mails, Quelltext und SQL-Queries verwendet. FreeMarker ist freie Software.

## FTL FreeMarker Template Language

FreeMarker verwendet eine eigene, einfache Programmiersprache (DSL), die für die Verwendung in HTML-Templates optimiert ist.

Der Inhalt von Variablen wird in der Form ${Variable} ausgegeben, Anweisungen als <#Anweisung …/> notiert. Häufig benutzte Anweisungsblöcke lassen sich als Makro definieren und dann in der Form <@Makro …/> aufrufen (Anweisungen und Makros können Parameter haben, worauf die „…“ hinweisen sollen).

FTL bietet einen vergleichsweise hohen Funktionsumfang, es lassen sich z. B. Zahlen und Datumswerte internationalisiert ausgeben, Zeichenersetzungen mit Regulären Ausdrücken durchführen, Texte für die Verwendung in JavaScript mit Maskierungszeichen versehen, Listen (auch) nach Subvariablen der Elemente sortieren oder DOM-Nodes in XML-Dokumenten adressieren.

## Beispiel

Angenommen, es stehen die Variablen name (eine Zeichenkette) und items (eine Liste von Objekten mit den Feldern quantity und description) zur Verfügung.

Das Template

erzeugt dann folgenden Output:

## Anwendungen

FreeMarker wird in verschiedenen Bereichen der Softwaretechnik eingesetzt und wird von vielen Programmen und Frameworks verwendet resp. unterstützt.

* in Webanwendungen kommt FreeMarker als Alternative zu JSP zum Einsatz. Die weit verbreiteten Frameworks Struts und Spring bieten hierfür FreeMarker an (als weitere Alternative steht Apache Velocity zur Verfügung). Da in FreeMarker die Verwendung von JSP-Taglibs möglich ist, muss beim Umstieg von JSP auf FreeMarker nicht auf die benötigten Taglibs (wie etwa die Struts-Taglib) verzichtet werden.
* Struts 2 verwendet FreeMarker intern für das Rendering von JSP-, Velocity- und FreeMarker-Tags, nachdem das Vorgänger-Projekt WebWork einen Wechsel von Velocity zu FreeMarker vollzogen hatte.
* Content-Management-Systeme wie Magnolia verwenden FreeMarker als Template Engine.
* in Codegeneratoren wird mit FreeMarker Quelltext (Java, SQL, RTF, PostScript) dynamisch erzeugt.
* die Tools des Persistenz-Frameworks Hibernate nutzen FreeMarker beim Generieren von Datenbank-Schemas, SQL- und Java-Code. 2006 fand ein Wechsel von Velocity zu FreeMarker statt (u. a. wegen der besseren Fehlerbehandlung).
* NetBeans IDE verwendet Freemarker intern, um in „Neue Datei…“-Assistenten die Vorlage-Dokumente mit dynamischen Inhalten zu befüllen.

In IDEs wie Eclipse, NetBeans IDE oder IntelliJ IDEA wird die Bearbeitung von FreeMarker Templates durch Syntax-Check, Code-Vervollständigung, Popup-Hilfe u. ä. unterstützt.

## Geschichte

FreeMarker 1 wurde von Benjamin Geer und Mike Bayer entwickelt und im Januar 1999 unter der LGPL-Lizenz veröffentlicht (nach wie vor als „FreeMarker classic“ erhältlich).

2002 wurde der Kern von Jonathan Revusky e.a. neu geschrieben und als FreeMarker 2 unter der (im Vergleich zur LGPL) liberaleren BSD-Lizenz veröffentlicht.

