JSFに悩んでます

NetBeansを使った開発手法の検討中、Visual Web PackとJSF from Entityの比較です。生成されるManagedBeanに各々の特徴が現れますが、どちらを使った方が楽なのか、とても悩んでいます。

NetBeans Visual Web Packが正式リリースされました。現在、プロジェクトの開発手法を検討中でして、このニュースは朗報。さっそく使ってみました。本家チュートリアルはこちらです

Visual Web Pack の作業シーケンス
  • JSPをWYSIWYG開発。
  • JSFのManagedBeanは自動生成。
  • UIエレメント毎に、対応するsetter/getterも自動生成。
  • UIエレメント毎に、プロパティを設定。コレめんどう。
  • ページ遷移(faces-config.xml)をビジュアルツールで設定。
  • 画面アクションに対応するManagedBeanメソッドを実装。

Web開発というよりも、SwingやVBの開発手法にそっくり。そもそものJSFの考え方がそうなんでしょうけど、違和感アリまくりですw

でも、慣れの問題かもしれません。開発ツールとしては、非常に良くできていると感じています。

JSF from Entityとの比較

以前紹介した、JPAを使ったJSF from Entityでは、Entityクラスから自動的にWebコントロールとJSPの雛形を生成しています(Rails的なアプローチです)。

このときに生成されるManagedBeanと、Visual Web Packが生成するManagedBeanを比較してみました。

■Visual Web Packが生成するManagedBean(一部)

 import com.sun.rave.web.ui.*;
 public class index extends AbstractPageBean {
  private TextField textField1 = new TextField();
  public TextField getTextField1() {
   return textField1;
  }
  public void setTextField1(TextField tf) {
   this.textField1 = tf;
  }
  public String button1_action() {
   return "from-outcome";
  }
 }

■JSF from Entity が生成するManagedBean(一部)

 public class NewEntityController {
  private NewEntity newEntity;
  public NewEntity getNewEntity() {
   return newEntity;
  }
  public void setNewEntity(NewEntity newEntity) {
   this.newEntity = newEntity;
  }
  public String create() {
   EntityManager em = getEntityManager();
   try {
     em.getTransaction().begin();
     em.persist(newEntity);
     em.getTransaction().commit();
   } catch (Exception ex) {
   }
   return "from-outcome";
  }
 }

MBの比較Visual Web PackJSF from Entity
生成単位JSP毎
+Scope毎
Entity毎
アクセサ単位UIComponent毎Entity毎
メソッド生成個別アクセサの塊汎用アクセサを生成
コード生成冗長&煩雑きれい
POJO?POJOだが
com.sun.raveに依存
Yes
ビジネス層なしEntity操作の雛形を生成

なんでこんなことを比較したかというと、Visual Web Applicationでは、JSF from Entityを作成することができなかったので、なにぃ!と怒ったからです。

 Webはビジュアル開発!
 しかも、Entityのコントロールは自動!
 もう全部やっちゃって!

と、期待していたのに、まだそこまでは行っていないようです。ちょっとがっかりしました。相容れないアプローチなのでしょうか?あるいは、自分が欲張りなだけか?
でもなんか、惜しい!って感じがします。

さて、ここで悩む

ということは、画面設計から攻めるアプローチと、エンティティ設計から攻めるアプローチ、どちらかを選択しなければなりません。自分としてはRails慣れしているので、Entityから作っていった方が考えやすいのですが、JSF用のJSPタグを手書きでコーディングするのは正直イヤです。

どうせ要件定義は画面から入るのでしょうから、Visual Web Pack で攻めてみるか!と考えてみると、冗長なget/setとの戦いになりそうな気がして、想像しただけでゲンナリします。

あとかなり気になっているのが、Visual Web Packが生成するJSPは、ネームスペースが入り乱れたXMLだという点。HTMLデザインやスクリプト&Ajaxあたりは自由自在に書きこめるのだろうか。
それを考えれば、ノーマルなJSPを生成してくれるJSF from Entityの方が、自由度は高い気がする。自由度高い、イコール、手書き。

・・ありゃ、どっちから攻めても、どっちつかずな状態?
マズい、あと1週間で決めないといけないのに。

どっちにしても、JSPで苦労しそう。所詮はJSPってことか。
・・Tapestryの方がいいのかもなぁ・・ボソリ


コメント

コメントしてください

closed.