Velocity ou FreeMarker?

Les moteurs de modèles peuvent être appliqués à une grande variété de scénarios de développement dans lesquels vous souhaitez générer du texte en fonction de règles de traitement spécifiques et sont souvent utilisés comme composant de vue dans les applications MVC. Dans cet article, Jeroen van Bergen explique où s'insèrent les moteurs de modèles dans l'architecture de votre application et vous montre certaines des opérations communes à tous les moteurs de modèles. Enfin, il compare les deux principaux moteurs de modèles Java, Velocity et FreeMarker, en termes de puissance, de facilité d'utilisation et de performances.

Les moteurs de modèles sont utilisés dans les scénarios de développement Java où il est nécessaire de générer automatiquement du texte et de le formater selon des règles de traitement spécifiques. Les deux moteurs de modèles Java open source les plus populaires actuellement sont Velocity et FreeMarker. Alors que Velocity est depuis longtemps le moteur de template leader, FreeMarker a commencé à le dépasser, offrant une vitesse et une sophistication que vous ne trouverez pas toujours dans Velocity.

Dans cet article, je vous présente brièvement les moteurs de modèles, en expliquant où ils s'insèrent dans l'architecture de votre application Java et en vous montrant quelques opérations de base communes à tous. Je compare ensuite Velocity et FreeMarker en fonction de la puissance, de la facilité d'utilisation et des performances.

Cette discussion est principalement destinée aux lecteurs novices dans les moteurs de modèles qui souhaitent savoir à quoi ils servent et obtenir de l'aide pour choisir entre les deux principales options open source.

Qu'est-ce qu'un moteur de modèle?

Un moteur de modèle est un composant qui prend du texte et des données fixes en entrée, les intègre en suivant certaines règles de traitement et génère un document texte contenant les données. Les moteurs de modèles sont très utiles pour des tâches telles que la création de pages Web dynamiques, de documents et d'e-mails, et peuvent également être utilisés pour générer du code source.

Les moteurs de modèle sont principalement utilisés comme composant de vue dans une architecture MVC. Le moteur de modèle encourage une bonne séparation entre la logique de vue réelle et la vue rendue, qui est considérée comme une bonne chose. L'utilisation d'un moteur de modèle implique des frais généraux lors de la création de l'application, mais la plupart des développeurs voient un retour sur investissement rapide lorsque l'application doit être modifiée. La séparation de la vue et de la logique facilite la mise à jour de l'aspect et de la convivialité de l'application en ajustant les modèles, plutôt que d'avoir à réécrire le code source. La relation est similaire à celle du CSS et du HTML, où un changement de style nécessite une petite modification du fichier CSS, plutôt que de nombreuses révisions du HTML.

Présentation des moteurs de modèles Java open source

Comme c'est souvent le cas lors du développement sur la plateforme Java, vous avez le choix entre de nombreux moteurs de modèles basés sur Java. J'ai essayé de compiler une liste complète de tous les moteurs de modèles Java actuellement disponibles. Certains d'entre eux sont de véritables moteurs de modèles dans le sens où ils n'ont pas été développés avec un certain type d'application à l'esprit. Certains sont des moteurs spécialisés qui visent à créer un type spécifique de création de documents, comme la décoration de pages Web. Si un moteur de modèle n'est pas destiné à un usage général, vous verrez une description explicite du type d'application pour lequel il est destiné.

Tableau 1. Moteurs de modèle pour la plate-forme Java

Nom Version Objectif URL Licence
Rapidité 1,5 Moteur de modèles à usage général //velocity.apache.org/ Licence du logiciel Apache
FreeMarker 2.3.10 Moteur de modèles à usage général //www.freemarker.org/index.html Licence BSD
SiteMesh 2,3 Mise en page et décoration de pages Web //www.opensymphony.com/sitemesh Licence OpenSymphony
ThéServlet 2,3 les pages Web //teatrove.sourceforge.net Licence de thé
Jamon 2.3.0 Moteur de modèles à usage général //www.jamon.org/index.html Licence publique Mozilla
WebMacro   Moteur de modèles à usage général //www.webmacro.org/ Licence publique générale GNU