These slides were from my JFall 2013 presentation about new template engines for the JVM. During this presentation I gave a short introduction to new and interesting template engines and show how they compare to the more well known: JSP, Velocity and Freemarker.
2. About me
• Engineer @ Hippo (CMS)
• Worked on web based platforms since
2001 with PHP, XSLT, JSP,Velocity and
Freemarker
• Blogger at http://blog.jeroenreijn.com
10. Overview
• Available at http://www.thymeleaf.org/
• Java, DOM based template engine
• XML / XHTML / HTML5
• Full Spring MVC integration
• ‘Natural templating’
11. Natural templating
• From Wikipedia:
“The template can be a document as valid as
the final result, the engine syntax doesn't
break the document's structure”
18. Overview
• Available at https://mustache.github.com
• “logic-less” because there are no control
statements (i.e. if, else, loops, etc)
• Tags are specified using {{ }} (looks like a
mustache)
• Implemented by many languages: Java, Ruby,
JavaScript, Python, Erlang, PHP, Objective-
C, .NET, C++, Go, ColdFusion, Scala, etc.
30. Overview
• Available at http://scalate.fusesource.org/
• Scala based Template Engine (ScalaTE)
• Templates are compiled as Scala objects
• Equivalent to using JSP, JSTL, JSP EL & Tiles /
Sitemesh
• Integration available for Spring, Play, Lift, ...
35. Benchmark project
• Simple Spring MVC application
• Multiple view resolvers
• Page that show a list of presentations
• Uses page layouts / fragments
• Uses i18n where possible
41. Performance
0,00s
3,57s
7,14s
10,71s
14,29s
17,86s
21,43s
25,00s
Total time taken for 25.000 requests (less is better)
Thymeleaf - v2.1.0
Jade4j - v0.3.17
Scalate - v1.6.1
Mustache - v1.8
Freemarker - v2.3.19
Velocity - v1.7
JSP - 2.1
* All tests were local, on hardware from 2010. Results might differ based on the actual implementation.
For the latest results check the GitHub project from slide 39.
42. Findings
• Thymeleaf used more memory and was
slower then the commonly used, but seems
great for the web.
• When using ‘layouts’ instead of includes,
Scalate was a factor 4 slower.
• Mustache performed really well!
43. Tips
• If you want designers to own your templates
consider Mustache or Thymeleaf
• If you want developers to own your templates:
• If you want to generate HTML / XML and DRY?
=> Jade
• otherwise: JSP, Freemarker, etc