|
||||||||||
| 前のページ 1 2 | ||||||||||
| Strutsとの比較 | ||||||||||
|
JSFは、Strutsの創始者でもあるCraigRMcClanahan氏が仕様策定に関わっていることもあり、Strutsから大きな影響を受けており、アーキテクチャーや構成要素などの類似点も少なくありません。したがって、Strutsに慣れている開発者なら、まずStrutsとの違いを把握することがJSFを習得する早道になるかもしれません。JSFとStrutsの対比を表1に示しておきます。
表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 |
||||||||||
|
|
||||||||||
|
|
||||||||||
|
||||||||||
|
|
||||||||||
|
||||||||||

