FreeMarker est un moteur de template (template engine) : une bibliothèque Java conçue pour générer des sorties textuelles (allant du HTML au code source auto-généré) en se basant sur des modèles (templates) et des données variables. L'extension .freemarker indique généralement un fichier contenant un modèle FreeMarker. Ces modèles utilisent une syntaxe spécifique pour intégrer du contenu dynamique au sein de texte statique. Lorsque le modèle est traité par le moteur FreeMarker, les parties dynamiques sont remplacées par les données réelles, produisant ainsi le résultat final. FreeMarker est fréquemment utilisé dans le développement d'applications web pour générer des pages web dynamiques, des e-mails, des fichiers de configuration et d'autres documents basés sur du texte. Il prend en charge des fonctionnalités telles que les variables, les boucles (loops), les instructions conditionnelles et les macros, permettant la conception de modèles complexes et flexibles. Les modèles sont généralement des fichiers texte brut, ce qui facilite leur édition et leur maintenance. Le moteur FreeMarker est responsable de l'analyse syntaxique (parsing) du modèle, de l'évaluation des expressions et de la génération de la sortie finale. Les données utilisées pour alimenter le modèle peuvent provenir de diverses sources, telles que des bases de données, des objets Java ou des fichiers XML. FreeMarker est un outil puissant pour séparer la logique de présentation de la logique d'application, rendant les applications web plus maintenables et évolutives (scalable).