Thymeleaf の最初の安定バージョンである1.0.0が2011年7月17日にリリースされた。 Thymeleafは XML/XHTML/HTML5テンプレートエンジンで、webそして非webアプリケーションで動く。オープンソースのJavaライブラリで Apache License 2.0のもとで配布され、 Jasypt というJava暗号化ライブラリの作成者である Daniel Fernandez氏によって作られた。 Thymeleafは、JSPや他のテンプレートエンジン、例えば Velocity や FreeMarkerの代替品である。2つのバージョンがあり、標準版とSpringStandard (Spring MVC 3)版がある。カスタム版を作って拡張することもできる。
Thymeleafの主要な目標は、ブラウザで正しく表示され、従って静的なプロトタイプとしても機能するテンプレートを生成するのに、良く形式化されたやり方を提供することである。それによって誰でもが, 完全に正当なXMLとHTMLテンプレートを作成できるようになる。ロジックやコードを書く代わりに、開発者はテンプレートにタグ属性を追加する。次にタグ属性は、DOM (Document Object Model)上で予め定義されたロジックを実行する。Thymeleaf も非常に拡張性がある。なので自分自身のテンプレート属性セットを定義して、カスタムな式を評価したり、カスタムなロジックを適用する機能を持つことができる。この意味は基本的に、 Thymeleafはテンプレートエンジン フレームワークのように機能することもできる、ということである。
ThymeleafをVelocity や FreeMarker のような人気のあるテンプレートエンジンと較べると、どうだろうか? Thymeleafが違うのは、 自然なテンプレート化を使っていることである。その意味は、 Thymeleafのテンプレートシンタックスは、ドキュメント構造を壊さず、テンプレートは有効なXMLドキュメントのままである。またテンプレートは、動くプロトタイプとしても使え、 Thymeleafは、実行時に静的な値の置き換えの面倒を見てくれる。 Velocity や FreeMarkerはシーケンシャルなテキストプロセッサーとして機能するので、どのようなテキストベースのテンプレートでも処理できる。一方、ThymeleafはDOMを使っているXMLプロセッサーである。XMLベースのフォーマットにしか機能しない、という制限のために、ThymeleafはXMLやweb環境に特有なフィーチャを利用することができる。Thymeleafは XML DOMパーサーを使っているので、大きなXMLファイルを処理するのに使うことは、勧められない。
Velocity, FreeMarker 、Thymeleafのそれぞれでメッセージを表示する例を下に示す。
Velocity: <p>$message</p> FreeMarker: <p>${message}</p> Thymeleaf: <p th:text="${message}">Hello World!</p>
注意して欲しいのは、Thymeleaf はパラグラフタグを減らして、実行時に置き換えできるハードコードされたテキストをサポートしている、ことだ。
Thymeleaf属性は、式の形式をとれ、4タイプある、変数式、選択式、テキスト外部化式(text externalization expression)、URL式。変数式は、Object-Graph Navigation Language (OGNL) 式、あるいは SpringStandardを使っているならSpring ELでコンテキストマップ上で実行される。選択式は、変数式に似ており、親オブジェクト上で実行される所が違う。テキスト外部化式を使うと、.propertiesファイルのような外部ソースから内容を取り出すことができる。URL式は、URLにコンテキストやセッション情報を追加できる。 Thymeleaf式の例は、 "Getting started with the Standard dialects"を読むとよい。
SourceForge から Thymeleaf をダウンロード し、Using Thymeleaf Tutorial を読むことで使い始めることができる。もしMavenを使っているなら groupIdに org.thymeleaf 、 artifactIdに thymeleaf を使うこと。最低限依存しているのは、 Java SE 5, ognl 3.0, javassist 3.14.0-GA, slf4j 1.6.1である。もっと情報が要るのなら公式の Thymeleaf 文書 と フォーラム を見て欲しい。