Server-side software development & methodology research focusing on Java, XML and distributed services


FreeMarker

FreeMarker is a Java-based template engine. While the majority of Java template engines on the scene are either scripting language-like (they use Java objects as a data model with run-time reflective resolution of methods, like Velocity or WebMacro) or strongly typed (compile templates to bytecode, like Tea) FreeMarker works with abstract data models of name-value maps, lists, and scalar values defined as interfaces. Because Freemarker core engine knows only these interfaces, arbitrary data models can be used with it by properly implementing the interfaces. This is a very versatile concept - any implementation of interfaces provides its own semantics for the template. My main area of activity in the FreeMarker project is the development of the ext libraries. This far, I've implemented:

I'm fairly proud of my work on FreeMarker, as I provided lots of added value to its core. While I'm certainly biased, the FreeMarker syntax for writing XML transformation templates is by far the most intuitive compared to anything else I've ever seen (other template engines, XSLT, etc.).