<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=FreeMarker</id>
	<title>FreeMarker - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=FreeMarker"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=FreeMarker&amp;action=history"/>
	<updated>2026-05-30T00:24:41Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=FreeMarker&amp;diff=2021966&amp;oldid=prev</id>
		<title>imported&gt;InternetArchiveBot: InternetArchiveBot hat 1 Archivlink(s) ergänzt und 0 Link(s) als defekt/tot markiert.) #IABot (v2.0.9.5</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=FreeMarker&amp;diff=2021966&amp;oldid=prev"/>
		<updated>2025-02-14T06:04:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/index.php?title=Benutzer:InternetArchiveBot&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer:InternetArchiveBot (Seite nicht vorhanden)&quot;&gt;InternetArchiveBot&lt;/a&gt; hat 1 Archivlink(s) ergänzt und 0 Link(s) als defekt/tot markiert.) #IABot (v2.0.9.5&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
|Name                  =&lt;br /&gt;
|Logo                  = &lt;br /&gt;
|Screenshot            = &lt;br /&gt;
|Beschreibung          = &lt;br /&gt;
|Maintainer            = &lt;br /&gt;
|Hersteller            = Jonathan Revusky, Attila Szegedi, Dániel Dékány e.a.&lt;br /&gt;
|Erscheinungsjahr      = 2002&lt;br /&gt;
|AktuelleVersion       = 2.3.32&lt;br /&gt;
|AktuelleVersionFreigabeDatum = 14.01.2023&lt;br /&gt;
|AktuelleVorabVersion  = &lt;br /&gt;
|AktuelleVorabVersionFreigabeDatum = &lt;br /&gt;
|Betriebssystem        = [[plattformunabhängig]]&lt;br /&gt;
|Programmiersprache    = [[Java (Programmiersprache)|Java]]&lt;br /&gt;
|Kategorie             = [[Template-Engine]]&lt;br /&gt;
|Lizenz                = [[Apache-Lizenz]]&lt;br /&gt;
|Deutsch               = &lt;br /&gt;
|Website               = [https://freemarker.apache.org/ freemarker.apache.org]&lt;br /&gt;
|Dateien               = &lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;FreeMarker&amp;#039;&amp;#039;&amp;#039; ist eine [[Template-Engine]] für die [[Java-Technologie|Java-Plattform]], die Platzhalter in [[Textdatei]]en durch dynamische Inhalte ersetzt. Die häufigste Anwendung ist das Generieren von [[Hypertext Markup Language|HTML]] in [[Webanwendung]]en, es wird aber u.&amp;amp;nbsp;a. auch zum Erzeugen von [[E-Mail]]s, [[Quelltext]] und [[SQL]]-Queries verwendet. FreeMarker ist [[freie Software]].&lt;br /&gt;
&lt;br /&gt;
== FTL FreeMarker Template Language ==&lt;br /&gt;
FreeMarker verwendet eine eigene, einfache Programmiersprache ([[Domänenspezifische Sprache|DSL]]), die für die Verwendung in HTML-Templates optimiert ist.&lt;br /&gt;
&lt;br /&gt;
Der Inhalt von [[Variable (Programmierung)|Variable]]n wird in der Form &amp;lt;code&amp;gt;${&amp;#039;&amp;#039;Variable&amp;#039;&amp;#039;}&amp;lt;/code&amp;gt; ausgegeben, [[Anweisung (Programmierung)|Anweisungen]] als &amp;lt;code&amp;gt;&amp;lt;#&amp;#039;&amp;#039;Anweisung …&amp;#039;&amp;#039;/&amp;gt;&amp;lt;/code&amp;gt; notiert. Häufig benutzte Anweisungsblöcke lassen sich als [[Makro]] definieren und dann in der Form &amp;lt;code&amp;gt;&amp;lt;@&amp;#039;&amp;#039;Makro …&amp;#039;&amp;#039;/&amp;gt;&amp;lt;/code&amp;gt; aufrufen (Anweisungen und Makros können [[Parameter (Informatik)|Parameter]] haben, worauf die „…“ hinweisen sollen).&lt;br /&gt;
&lt;br /&gt;
FTL bietet einen vergleichsweise hohen Funktionsumfang, es lassen sich z.&amp;amp;nbsp;B. Zahlen und Datumswerte [[Internationalisierung (Softwareentwicklung)|internationalisiert]] ausgeben, Zeichenersetzungen mit [[Regulärer Ausdruck|Regulären Ausdrücken]] durchführen, Texte für die Verwendung in [[JavaScript]] mit [[Maskierungszeichen]] versehen, Listen (auch) nach Subvariablen der Elemente sortieren oder [[Document Object Model|DOM]]-Nodes in [[Extensible Markup Language|XML]]-Dokumenten adressieren.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Angenommen, es stehen die Variablen &amp;#039;&amp;#039;name&amp;#039;&amp;#039; (eine [[Zeichenkette]]) und &amp;#039;&amp;#039;items&amp;#039;&amp;#039; (eine [[Liste (Datenstruktur)|Liste]] von [[Objekt (Programmierung)|Objekt]]en mit den [[Attribut (Programmierung)|Feld]]ern &amp;#039;&amp;#039;quantity&amp;#039;&amp;#039; und &amp;#039;&amp;#039;description&amp;#039;&amp;#039;) zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Das Template&lt;br /&gt;
&lt;br /&gt;
[[Datei:Freemarker-Beispiel-1-code.png]]&lt;br /&gt;
&lt;br /&gt;
erzeugt dann folgenden Output:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Einkaufskorb für Max Mustermann:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;1 Stk. &amp;lt;b&amp;gt;Bleistift&amp;lt;/b&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;2 Stk. &amp;lt;b&amp;gt;Radiergummi&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
FreeMarker wird in verschiedenen Bereichen der Softwaretechnik eingesetzt und wird von vielen [[Computerprogramm|Programmen]] und [[Framework]]s verwendet resp. unterstützt.&lt;br /&gt;
* in Webanwendungen kommt FreeMarker als Alternative zu [[JavaServer Pages|JSP]] zum Einsatz. Die weit verbreiteten Frameworks [[Struts]]&amp;lt;ref&amp;gt;&lt;br /&gt;
{{Internetquelle&lt;br /&gt;
 |url          = http://struts.apache.org/2.1.8/docs/using-freemarker-templates.html&lt;br /&gt;
 |sprache      = en&lt;br /&gt;
 |autor        = Musachy Barroso e.a.&lt;br /&gt;
 |titel        = Using Freemarker Templates&lt;br /&gt;
 |werk         = Apache Struts 2 Documentation&lt;br /&gt;
 |datum        = &lt;br /&gt;
 |zugriff      = 2010-07-24&lt;br /&gt;
 |archiv-bot   = 2019-04-11 23:18:00 InternetArchiveBot&lt;br /&gt;
 |offline      = ja&lt;br /&gt;
 |archiv-url   = https://web.archive.org/web/20100806133459/http://struts.apache.org/2.1.8/docs/using-freemarker-templates.html&lt;br /&gt;
 |archiv-datum = 2010-08-06&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/ref&amp;gt; und [[Spring (Framework)|Spring]]&amp;lt;ref&amp;gt;{{Internetquelle&lt;br /&gt;
| url=https://static.springsource.org/spring/docs/2.0.x/reference/view.html&lt;br /&gt;
| sprache=en&lt;br /&gt;
| autor=Rod Johnson e.a.&lt;br /&gt;
| titel=Chapter 14. Integrating view technologies&lt;br /&gt;
| werk=The Spring Framework - Reference Documentation&lt;br /&gt;
| datum=&lt;br /&gt;
| zugriff=2010-07-24&lt;br /&gt;
}}&amp;lt;/ref&amp;gt; bieten hierfür FreeMarker an (als weitere Alternative steht [[Apache Velocity]] zur Verfügung). Da in FreeMarker die Verwendung von [[Tag-Library|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&amp;lt;ref&amp;gt;{{Internetquelle&lt;br /&gt;
| url=https://freemarker.sourceforge.net/docs/pgui_misc_servlet.html#autoid_55&lt;br /&gt;
| sprache=en&lt;br /&gt;
| autor=Dániel Dékány e.a.&lt;br /&gt;
| titel=Using FreeMarker with servlets&lt;br /&gt;
| werk=FreeMarker Manual&lt;br /&gt;
| datum=&lt;br /&gt;
| zugriff=2010-07-24&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* Struts 2 verwendet FreeMarker intern für das Rendering von JSP-, Velocity- und FreeMarker-Tags&amp;lt;ref&amp;gt;&lt;br /&gt;
{{Internetquelle&lt;br /&gt;
 |url          = http://struts.apache.org/2.1.8/docs/template-loading.html&lt;br /&gt;
 |sprache      = en&lt;br /&gt;
 |autor        = Patrick Lightbody e.a.&lt;br /&gt;
 |titel        = Template Loading&lt;br /&gt;
 |werk         = Apache Struts 2 Documentation&lt;br /&gt;
 |datum        = &lt;br /&gt;
 |zugriff      = 2010-07-24&lt;br /&gt;
 |archiv-bot   = 2019-04-11 23:18:00 InternetArchiveBot&lt;br /&gt;
 |offline      = ja&lt;br /&gt;
 |archiv-url   = https://web.archive.org/web/20100701161817/http://struts.apache.org/2.1.8/docs/template-loading.html&lt;br /&gt;
 |archiv-datum = 2010-07-01&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;, nachdem das Vorgänger-Projekt [[WebWork]] einen Wechsel von Velocity zu FreeMarker vollzogen hatte.&lt;br /&gt;
* [[Content-Management-System]]e wie [[Magnolia (CMS)|Magnolia]]&amp;lt;ref&amp;gt;{{Internetquelle&lt;br /&gt;
 |url        = http://documentation.magnolia-cms.com/reference/templating/freemarker&lt;br /&gt;
 |sprache    = en&lt;br /&gt;
 |autor      = &lt;br /&gt;
 |titel      = Templating with FreeMarker - a primer&lt;br /&gt;
 |werk       = Magnolia Documentation&lt;br /&gt;
 |datum      = &lt;br /&gt;
 |zugriff    = 2010-07-24&lt;br /&gt;
 |archiv-bot = 2018-04-10 20:13:40 InternetArchiveBot&lt;br /&gt;
 |offline    = ja&lt;br /&gt;
}}&amp;lt;/ref&amp;gt; verwenden FreeMarker als Template Engine.&lt;br /&gt;
* in [[Codegenerator]]en wird mit FreeMarker Quelltext ([[Java (Programmiersprache)|Java]], SQL, [[Rich Text Format|RTF]], [[PostScript]]) dynamisch erzeugt&amp;lt;ref&amp;gt;{{Internetquelle&lt;br /&gt;
| url=https://apt-jelly.sourceforge.net&lt;br /&gt;
| sprache=en&lt;br /&gt;
| autor=&lt;br /&gt;
| titel=Introduction&lt;br /&gt;
| werk=apt-jelly Homepage&lt;br /&gt;
| datum=&lt;br /&gt;
| zugriff=2010-07-24&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* die Tools des [[Persistenz (Informatik)|Persistenz]]-Frameworks [[Hibernate (Framework)|Hibernate]] nutzen FreeMarker beim Generieren von [[Datenbank]]-Schemas, SQL- und Java-Code. 2006 fand ein Wechsel von Velocity zu FreeMarker statt (u.&amp;amp;nbsp;a. wegen der besseren Fehlerbehandlung)&amp;lt;ref&amp;gt;{{Internetquelle&lt;br /&gt;
| url=https://in.relation.to/2110.lace&lt;br /&gt;
| sprache=en&lt;br /&gt;
| autor=Max Andersen&lt;br /&gt;
| titel=A story about FreeMarker and Velocity&lt;br /&gt;
| werk=In Relation To...&lt;br /&gt;
| datum=2006-02-03&lt;br /&gt;
| zugriff=2010-07-24&lt;br /&gt;
| kommentar=Blog eines Hibernate-Entwicklers&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* [[NetBeans IDE]] verwendet Freemarker intern, um in „Neue Datei…“-Assistenten die Vorlage-Dokumente mit dynamischen Inhalten zu befüllen&amp;lt;ref&amp;gt;{{Internetquelle&lt;br /&gt;
| url=http://wiki.netbeans.org/FaqFreeMarker&lt;br /&gt;
| sprache=en&lt;br /&gt;
| autor=&lt;br /&gt;
| titel=FaqFreeMarker&lt;br /&gt;
| werk=NetBeans Wiki&lt;br /&gt;
| datum=&lt;br /&gt;
| zugriff=2010-07-24&lt;br /&gt;
| archiv-datum=2010-07-26&lt;br /&gt;
| archiv-url=https://web.archive.org/web/20100726095210/http://wiki.netbeans.org/FaqFreeMarker&lt;br /&gt;
| offline=ja&lt;br /&gt;
| archiv-bot=2025-02-14 06:04:23 InternetArchiveBot&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In [[Integrierte Entwicklungsumgebung|IDE]]s wie [[Eclipse (IDE)|Eclipse]], NetBeans IDE oder [[IntelliJ IDEA]]&amp;lt;ref&amp;gt;{{Internetquelle&lt;br /&gt;
| url=https://www.jetbrains.com/idea/features/freemarker_velocity.html&lt;br /&gt;
| sprache=en&lt;br /&gt;
| autor=&lt;br /&gt;
| titel=FreeMarker/Velocity&lt;br /&gt;
| werk=IntelliJ IDEA Homepage&lt;br /&gt;
| datum=&lt;br /&gt;
| zugriff=2010-07-24&lt;br /&gt;
}}&amp;lt;/ref&amp;gt; wird die Bearbeitung von FreeMarker Templates durch Syntax-Check, Code-Vervollständigung, Popup-Hilfe u.&amp;amp;nbsp;ä. unterstützt.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
FreeMarker 1 wurde von Benjamin Geer und Mike Bayer entwickelt und im Januar 1999 unter der [[GNU Lesser General Public License|LGPL]]-Lizenz veröffentlicht (nach wie vor als „FreeMarker classic“ erhältlich).&lt;br /&gt;
&lt;br /&gt;
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.&amp;lt;ref&amp;gt;{{Internetquelle&lt;br /&gt;
| url=http://freemarker.org/whoWeAre.html&lt;br /&gt;
| sprache=en&lt;br /&gt;
| autor=Dániel Dékány e.a.&lt;br /&gt;
| titel=Who We Are&lt;br /&gt;
| werk=FreeMarker Homepage&lt;br /&gt;
| datum=&lt;br /&gt;
| zugriff=2010-07-24&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
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.&lt;br /&gt;
* Donald Brown, Chad Michael Davis, Scott Stanlick &amp;#039;&amp;#039;Struts 2 in Action&amp;#039;&amp;#039;. 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&lt;br /&gt;
* Seth Ladd, Bram Smeets &amp;#039;&amp;#039;Building Spring 2 Enterprise Applications&amp;#039;&amp;#039;, Apress (2007) ISBN 978-1590599181, S. 271 f.: FreeMarker als View-Technologie für Spring (neben JSP, Velocity und XSLT)&lt;br /&gt;
* Jeff Linwood, Dave Minter: &amp;#039;&amp;#039;Beginning Hibernate&amp;#039;&amp;#039;. Apress (2010) ISBN 978-1430228509, S 323f.: Konfiguration in den Hibernate Tools&lt;br /&gt;
&lt;br /&gt;
Artikel in [[Fachzeitschrift]]en:&lt;br /&gt;
*  Jeroen van Bergen: &amp;#039;&amp;#039;[https://www.javaworld.com/javaworld/jw-11-2007/jw-11-java-template-engines.html?fsrc=rss-index Velocity or FreeMarker?]&amp;#039;&amp;#039; In: &amp;#039;&amp;#039;JavaWorld&amp;#039;&amp;#039;, {{ZDB|1433195-0}}, 29. November 2007.&lt;br /&gt;
* Vincent Dibartolo: &amp;#039;&amp;#039;[https://www.javaworld.com/jw-01-2001/jw-0119-freemarker.html FreeMarker: An open alternative to JSP?]&amp;#039;&amp;#039; In: &amp;#039;&amp;#039;JavaWorld&amp;#039;&amp;#039;, {{ZDB|1433195-0}}, 19. Januar 2001.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://freemarker.apache.org Offizielle Website von FreeMarker], dort [https://freemarker.apache.org/docs/index.html Handbuch] (englisch)&lt;br /&gt;
* [http://freemarker.blogspot.com/ Blog des Projektteams] (englisch)&lt;br /&gt;
* [https://fm-classic.sourceforge.net/ FreeMarker classic] (englisch)&lt;br /&gt;
* [http://www.hibernate.org/subprojects/tools.html Hibernate Tools]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java-Bibliothek]]&lt;br /&gt;
[[Kategorie:Java-Programm]]&lt;br /&gt;
[[Kategorie:Templatesprache]]&lt;/div&gt;</summary>
		<author><name>imported&gt;InternetArchiveBot</name></author>
	</entry>
</feed>