TOPシステム開発> Strutsとの比較




まるごとサーバサイドJava
JDeveloperで学ぶJSF入門

第3回:JSFのライフサイクルとStrutsとの比較

著者:WINGSプロジェクト  佐藤治夫(株式会社ビープラウド)、
小泉守義

監修:山田祥寛   2006/7/27
前のページ  1  2
Strutsとの比較

   JSFは、Strutsの創始者でもあるCraigRMcClanahan氏が仕様策定に関わっていることもあり、Strutsから大きな影響を受けており、アーキテクチャーや構成要素などの類似点も少なくありません。したがって、Strutsに慣れている開発者なら、まずStrutsとの違いを把握することがJSFを習得する早道になるかもしれません。JSFとStrutsの対比を表1に示しておきます。
JSF Struts
faces-config.xml struts-config.xml
メソッドバインディング DispatchAction
ナビゲーションルール アクションマッピング
マネージドBean ActionForm

表1:JSFとStrutsの対比


   Strutsでは、DispatchActionクラスを継承したアクションクラスを使うことで、リクエストパラメータ「method」の値で指定された名前のメソッドに処理を割り振ることができるようになっています。そして、これはJSFのメソッドバインディングの仕組みとも非常に似ています。

   また、JSFにおけるナビゲーションルールの概念や設定ファイルにおける記法も、Strutsにおけるアクションマッピングと非常に似ています。一方、StrutsとJSFの最大の相違点は、Struts上に作成するクラス(Action、ActionForm)がサーブレットAPIとStrutsのAPIに依存したメソッドを記述しなければならないのに対し、JSFではサーブレットAPIとJSFのAPIに依存しない記述ができるという点です。

   主な違いを次に列挙します。


1. ビューとモデル間のデータ受け渡し

   JSPとモデル間でデータの受け渡しを行う際、StrutsではActionFormクラスを継承したBeanを経由してからデータを変換し、モデルに格納する必要があります。それに対し、JSFではJSFに依存しない任意のマネージドBean(POJO)を直接JSP上から指定することができます。これによりJSFでは、ビューとモデルを直感的に結びつけることが可能になりました。


2. 画面遷移制御

   Strutsでは、画面遷移先を示すアクションメソッドの戻り値としてActionForwardを返す仕様になっているのに対し、JSFではページに関連付けられたID文字列を戻り値として返す仕様になっています。JSFではStringが戻り値なので、フレームワークのAPIに依存しないというメリットがあります。

StrutsとJSFの融合

   StrutsとJSFは、どちらもWeb層のフレームワークであり、基本的には競合関係にあると言えます。しかし、次に紹介するような両者を融合させるソフトウェアも開発されています。


1. Struts Faces

   Struts Facesは、既存のStrutsアプリケーション内でJSFのタグ(コンポーネント)を利用できるようにするソフトウェアで、Jakartaプロジェクトによって開発が進められています。主に利用が想定されるのは、Strutsを用いて構築した既存システムにJSFのタグを導入したいような場面です。新規案件などであえてStruts Facesを用いるということはあまりないでしょう。


2. Struts Shale

   Struts Shaleは、JSFをベースにした多層MVCフレームワークとして再構築されたソフトウェアで、Apache Strutsプロジェクトのサブプロジェクトによって開発が進められているオープンソースソフトウェアです。

   当初は、Craig R McClanhan氏によってStruts 2.0として提案されましたが、既存のStrutsとあまりにも構造が異なっていたため、コミュニティからの反発にあい、最終的にStruts Shaleという別の名前のサブプロジェクトとなりました。

   Struts Shaleでは、「ページ」ではなく「画面」レベルの遷移(注1)をサポートする「ダイアログ」など新しい概念を導入しています。

   ほかにも、コントローラのロジックの流れや状態管理を意識しないで直感的に書くことができるContinuation(継続)のサポート計画など、意欲的な道を模索しており、今後が非常に楽しみなプロジェクトです。

※注1: Webアプリケーションでは、データ登録画面と更新画面が同じということがよくありますが、JSFを含む現状のWebアプリケーションフレームワークでは、同じページ定義を複数の異なるロジックフローで共有することができません。Struts Shaleはこれを可能にする概念として「ダイアログ」を導入しています。

前のページ  1  2


著者:WINGSプロジェクト 佐藤治夫(株式会社ビープラウド)、小泉守義 監修:山田祥寛
著者プロフィール
著者:WINGSプロジェクト 佐藤治夫(株式会社ビープラウド)、
小泉守義
監修:山田祥寛

WINGSプロジェクトは、有限会社WINGSプロジェクト(代表取締役山田祥寛)が運営するライティング・チーム。海外記事の翻訳から、主にサーバサイド分野の書籍/雑誌/Web記事の執筆、講演、アプリケーション開発などを幅広く手がける。2006年7月時点での登録メンバーは20名で、現在も一緒に執筆をできる有志を募集中。執筆に興味のある方は、どしどし応募いただきたい。


INDEX
第3回:JSFのライフサイクルとStrutsとの比較
  JSFのライフサイクル
Strutsとの比較