JSFのビュー側の実装

以前、JSFベースのフレームワークを開発している時にS2JSFの使用を検討したが、JSF周りの動向が判らなかったことと、フレームワークの基盤部分の仕様が決まりきっていなかったことから採用を見送っていた。
最近、フレームワークの根っこの部分が安定してきたため、今一度JSFのビュー側の実装技術の様子を伺ってみる。
ひとまず、ざっと見たのは以下のもの。前回の検討から増えているのはFacelets。(←既に記憶があいまい)

S2JSF
HTMLをベースとしたテンプレートエンジンを提供するJSFベースのフレームワークSeasarプロジェクトのサブプロジェクト。
Maya
HTMLをベースとしたテンプレートによるプログラマとデザイナの作業分担を強く意識したWEBフロントサービスエンジン。Seasarプロジェクトのサブプロジェクト。IPAの2005年上期未踏ソフトウェア創造事業として採択。
Nirvana([https
//nirvana.dev.java.net/:title=プロジェクト]):POHP(Plain Old HTML Pages)ベースのビューフレームワーク
Facelets([http
//homepage1.nifty.com/algafield/facelet-ja1.html:title=開発者による紹介記事の日本語訳]):JSFをベースとしたTapestry風のフレームワーク

どの実装も出発点はTapestryっぽく見える。
このなかで、MayaはJSFに限らない汎用的な仕様になっている。
Nirvanaも最終的には汎用的な方向を目指しそうな感じはするが、今のところ以下のような形になっているらしい。

JSF依存部は*.jsfパッケージにまとめて、Struts等のビュー毎に新しいパッケージを作成しようと考えていました。先程のselectタグの変換の自動最適化などを考えると、ある程度このような仕組みになると思っています。

Faceletsで「JSP2.1コンテナが無くてもJSF1.2の新しい機能を使える」というのに惹かれるような、嫌なような……。

First and foremost, Facelets isn't dependent on a JSP container. This means that you can start using the new JSF 1.2 features without waiting for a JSP 2.1 container. There were some serious issues with combining JSF 1.1 and JSP use when it first came out. Many of these issues were highlighted in an article by Hans Bergsten titled, "Improving JSF by Dumping JSP." Reading that article is strongly recommended as a case for moving to JSF 1.2 and Facelets.