FreeMarker
| FreeMarker
| |
|---|---|
| [[Datei:Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)|150px]] | |
| Basisdaten
| |
| Maintainer | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) |
| Entwickler | Jonathan Revusky, Attila Szegedi, Dániel Dékány e.a. |
| Erscheinungsjahr | 2002 |
| Aktuelle Version | 2.3.32 (14. Januar 2023) |
| Aktuelle Vorabversion | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) (Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)) |
| Betriebssystem | plattformunabhängig |
| Programmiersprache | Java |
| Kategorie | Template-Engine |
| Lizenz | Apache-Lizenz |
| freemarker.apache.org | |
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
Datei:Freemarker-Beispiel-1-code.png
erzeugt dann folgenden Output: <syntaxhighlight lang="html">
Einkaufskorb für Max Mustermann:
- 1 Stk. Bleistift
- 2 Stk. Radiergummi
</syntaxhighlight>
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<ref>
Musachy Barroso e.a.: Using Freemarker Templates. In: Apache Struts 2 Documentation. Archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 6. August 2010; abgerufen am 24. Juli 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)). Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. </ref> und Spring<ref>Rod Johnson e.a.: Chapter 14. Integrating view technologies. In: The Spring Framework - Reference Documentation. Abgerufen am 24. Juli 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> 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<ref>Dániel Dékány e.a.: Using FreeMarker with servlets. In: FreeMarker Manual. Abgerufen am 24. Juli 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>.
- Struts 2 verwendet FreeMarker intern für das Rendering von JSP-, Velocity- und FreeMarker-Tags<ref>
Patrick Lightbody e.a.: Template Loading. In: Apache Struts 2 Documentation. Archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 1. Juli 2010; abgerufen am 24. Juli 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)). Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. </ref>, nachdem das Vorgänger-Projekt WebWork einen Wechsel von Velocity zu FreeMarker vollzogen hatte.
- Content-Management-Systeme wie Magnolia<ref>Templating with FreeMarker - a primer. In: Magnolia Documentation. Ehemals im Vorlage:IconExternal (nicht mehr online verfügbar); abgerufen am 24. Juli 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)). (Seite nicht mehr abrufbar. Suche im Internet Archive )Vorlage:Toter Link/archivebot</ref> verwenden FreeMarker als Template Engine.
- in Codegeneratoren wird mit FreeMarker Quelltext (Java, SQL, RTF, PostScript) dynamisch erzeugt<ref>Introduction. In: apt-jelly Homepage. Abgerufen am 24. Juli 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>.
- 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)<ref>Max Andersen: A story about FreeMarker and Velocity. In: In Relation To... 3. Februar 2006, abgerufen am 24. Juli 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value), Blog eines Hibernate-Entwicklers).</ref>.
- NetBeans IDE verwendet Freemarker intern, um in „Neue Datei…“-Assistenten die Vorlage-Dokumente mit dynamischen Inhalten zu befüllen<ref>FaqFreeMarker. In: NetBeans Wiki. Archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 26. Juli 2010; abgerufen am 24. Juli 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)). Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.</ref>.
In IDEs wie Eclipse, NetBeans IDE oder IntelliJ IDEA<ref>FreeMarker/Velocity. In: IntelliJ IDEA Homepage. Abgerufen am 24. Juli 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> 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.<ref>Dániel Dékány e.a.: Who We Are. In: FreeMarker Homepage. Abgerufen am 24. Juli 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Literatur
Es liegt derzeit keine Monographie zu FreeMarker vor, die Konfiguration und Verwendung wird allerdings in vielen Handbüchern der Programme und Frameworks beschrieben, die FreeMarker verwenden oder unterstützen.
- Donald Brown, Chad Michael Davis, Scott Stanlick Struts 2 in Action. Manning (2008) ISBN 978-1933988078, S. 223ff.: Velocity und FreeMarker als JSP-Alternativen, S. 336 ff.: Erzeugen eigener Themes durch Überschreiben der internen FreeMarker-Templates
- Seth Ladd, Bram Smeets Building Spring 2 Enterprise Applications, Apress (2007) ISBN 978-1590599181, S. 271 f.: FreeMarker als View-Technologie für Spring (neben JSP, Velocity und XSLT)
- Jeff Linwood, Dave Minter: Beginning Hibernate. Apress (2010) ISBN 978-1430228509, S 323f.: Konfiguration in den Hibernate Tools
Artikel in Fachzeitschriften:
- Jeroen van Bergen: Velocity or FreeMarker? In: JavaWorld, ZDB-ID 1433195-0, 29. November 2007.
- Vincent Dibartolo: FreeMarker: An open alternative to JSP? In: JavaWorld, ZDB-ID 1433195-0, 19. Januar 2001.
Weblinks
- Offizielle Website von FreeMarker, dort Handbuch (englisch)
- Blog des Projektteams (englisch)
- FreeMarker classic (englisch)
- Hibernate Tools
Einzelnachweise
<references />
- Seiten mit Skriptfehlern
- Wikipedia:Defekter Dateilink
- Wikipedia:Defekte Weblinks/Ungeprüfte Archivlinks 2019-04
- Wikipedia:Weblink offline IABot
- Wikipedia:Defekte Weblinks/Ungeprüfte Botmarkierungen 2018-04
- Wikipedia:Defekte Weblinks/Ungeprüfte Archivlinks 2025-02
- Java-Bibliothek
- Java-Programm
- Templatesprache