Great tool support: syntax highlighting, data-language support, code navigation, auto-completion, search and refactoring.
The GroovyPagesEngine
is difficult to extract from the Grails codebase.
Many features don't make much sense in codegen context (resource caching, taglibs, etc.)
Declaring dynamic var types relies on IDEA's dynamic var support and feels a bit weird (underlined dynamic vars), but works otherwise.
Uses Groovy for EL, which is a good option for JVM.
No tool support, but as it is a subset of GSP, we can pretend it is the same. Feature-wise same as GSP, except we cannot use taglibs and class imports. Part of the core Groovy distribution (no other dependencies required).
Port of a popular PHP template language - looks like Jinja2, but it is different enough to require learning. Features a lot of advanced concepts: blocs, macros, etc. Syntax highligting in IDEA + data-language support, no code navigation, refactoring and auto completion.
Great tool support: syntax highlighting, data-language support, code navigation, auto-completion, search and refactoring. Still no class imports, or invocation of static methods. The best of the web-orriented templates, inspired by JTwig, but Java centric, features type declarations of dynamic vars, extensible blocks, etc.
Syntax highlighting, but nothing more. Few helpers, need to write our own. Most server-side devlopers don't know Handlebars, so no benefit in the language.
Works, finally after ~10 years of hiatus somebody is modernising it. Good support by IDEA - all the standard stuff. Verbose, with clunky syntax. Not blazingly fast, not very convenient either.
Works, looks and feels better than velocity. Good support by IDEA - all the standard stuff. Verbose, with webby syntax. Reasonably fast, not very convenient for code generation.
Avoid templates altogether and generate code in AST style. This is complementary and can work well for some types of artifacts. Composes nicely, tool support is adequate, but the transformation looks nothing like the code it produces.
Alternatie approaches, which I'll look into another day. They promise good tool support, isomorphic models, model checking and DSL composition. All comes at the cost of learning curve. In particular interesting if we can go for hybrid model/generators, partly defined in Java/Geoovy/Kotlin, partly in language workbench.