FreeMarker es un motor de plantillas gratuito basado en Java , que originalmente se centró en la generación dinámica de páginas web con arquitectura de software MVC . Sin embargo, es un motor de plantillas de propósito general, sin dependencia de servlets o HTTP o HTML , y por lo tanto se usa a menudo para generar código fuente, archivos de configuración o correos electrónicos.
Desarrollador (es) | Jonathan Revusky, Attila Szegedi, Dániel Dékány y otros |
---|---|
Versión inicial | 2000 |
Lanzamiento estable | 2.3.31 / 16 de febrero de 2021 |
Repositorio | Repositorio de FreeMarker |
Escrito en | Java |
Sistema operativo | Multiplataforma |
Tipo | Motor de plantillas |
Licencia | Licencia Apache 2.0 |
Sitio web | freemarker |
Historia
FreeMarker tuvo una historia algo agitada hasta aproximadamente 2004, causada por cambios de paradigma y otros cambios significativos en múltiples ocasiones. FreeMarker 1 (ahora conocido como FreeMarker Classic, un proyecto separado) fue escrito originalmente por Benjamin Geer y Mike Bayer. Desde 2002, el nuevo líder del proyecto fue Jonathan Revusky, quien lanzó FreeMarker 2, que inició una secuencia de varios cambios sustanciales. El objetivo principal de los cambios era hacer que el lenguaje de la plantilla fuera más estricto, es decir, detectar la mayor cantidad posible de errores tipográficos y otros errores típicos. Además, se introdujo la envoltura automática de objetos, junto con el avance gradual del sistema de tipos del lenguaje de plantillas. El lenguaje ha ganado muchas características para usuarios avanzados, como capacidades de programación de macros y espacios de nombres más potentes. El idioma ha alcanzado un estado bastante estable con la versión 2.3, lanzada en el tercer trimestre de 2004. A partir de 2016, el producto se ha mantenido compatible con versiones anteriores. No se esperan cambios significativos incompatibles con versiones anteriores en la serie FreeMarker 2 en el futuro.
A fines de 2015, FreeMarker fue otorgado a Apache Software Foundation , donde ingresó a Apache Incubator , y en 2018-03-21 se convirtió en un proyecto Apache totalmente aceptado.
Ejemplo
La siguiente plantilla:
< html > < cuerpo > < p > ¡Hola, $ {nombre}! Tiene los siguientes mensajes: < #list messages as m> < p > < b > $ {m.from}: b > $ {m.body} p > < / # list> p > < / cuerpo > html >
procesado por FreeMarker producirá algo como:
< html > < cuerpo > < p > ¡Hola, Joe! Tiene los siguientes mensajes: < p > < b > Tim: b > ¡No olvide traer los documentos de la conferencia! p > < p > < b > Cindy: b > ¿Puedes hacerme una visita esta tarde? p > < p > < b > Richard: b > ¡No olvides los papeles esta vez! p > p > cuerpo > html >
Variables como "nombre" y "mensajes" provienen de fuera de la plantilla y, por lo tanto, el autor de la plantilla tiene que ocuparse únicamente de los problemas de presentación. La plantilla sigue siendo la misma independientemente de si estas variables provienen de una base de datos o de una cookie o se calculan de cualquier otra manera. Además, la API Java exacta (y, por lo tanto, la clase) de los valores se puede ocultar en FreeMarker utilizando una técnica llamada envoltura de objetos. Por ejemplo, "messages" parece ser una lista o matriz de JavaBeans que tienen propiedades "from" y "body", pero también podría ser algo muy diferente, y la plantilla no se ve afectada (siempre que un contenedor de objetos adecuado se utiliza).