で、Seamっていいの?
個人的にはお勧めしません。全然サクサクじゃないし。
APサーバ再起動しなくてもOK!と強調されてますが、クラスローダーがロードするファイル(.classとか.propertiesとか)の変更を反映するには再デプロイが必要で、(JBossAS5を使っていますが)再デプロイが30秒ほどかかります。tomcat+軽量フレームワークなら30秒あればサーバ再起動できるんじゃ?
viewのxhtmlだけは再デプロイなしでサクサク反映させられて幸せですが、seam-genで作ったbuild.xmlにはxhtmlだけ反映させるモードがないのでtarget追加が必須。
今回Seamを採用したのは
という要望があったからです。(しばりがなければ…Javaでは作ってないです。規模が大きくて階層単位で分業したいとか、MessageDrivenBeanで非同期処理するタスクがあるとか、複数DBにまたがるトランザクションがあるとかでないと…)
ただ、JSF+EJB3を使うという前提であれば、確かにSeamを使わないより使った方がいいと思います。
開発効率も悪くない、というよりむしろ、いい、と言える気が。
とにかくStruts1.x系等に比べて隠蔽されている部分が大きくて学習効率が良いです。書いてて思ったけれど、学習効率の高さこそがSeam最大の利点のような気が。Struts1.x系の頃、JSP,ServletAPI,JDBC,Struts,etc...といろいろ知らないと開発できなかったのが、Seamでは最低限知らなければいけない分量がずいぶん少ないように思います。JSF+EJB3の他にSeamを知らないといけないんじゃ、と突っ込まれそうですが、SeamはJSFがうまくやってくれないところを上手にカバーしているのですよね。
JSF(Facelet)はうまくハマればJSPより断然速く実装できますし。