StrutsとJSFは共存、統合どちらへ(3/8 ページ)

» 2005年01月19日 09時15分 公開
[阿島哲夫(カサレアル),ITmedia]

IDE(統合開発環境)との高い親和性

 JSFは、先に触れたようにIDE(統合開発環境)でのアプリケーション開発を想定している技術だ。

 JSFのUIコンポーネントは共通のAPIを持つため、Swingアプリケーションや、Visual BasicのGUI開発のように、ドラッグ&ドロップでコンポーネントを配置し、コンポーネントのプロパティを設定、「文字が入力された」「ボタンが押された」、といったイベントごとの処理を記述するスタイル開発が可能だ。

 開発ツールベンダー各社がリリースしているJSF対応のIDEは、ほぼすべてがこのような開発スタイルに対応している。画面1は、Sun Microsystemsからリリースされている「Sun Java Studio Creator」を使った開発の様子だ(関連レビュー記事)。

画面1■Sun Java Studio CreatorのJSFアプリケーション開発画面例

 JSFに標準で用意されているUIコンポーネントは、Strutsのカスタムタグに比べて非常に高機能だ。

 例えば、StrutsカスタムタグでBeanのコレクションからテーブルを描画する処理は、テーブルを描画するためにBeanのコレクションをループしながらBeanのプロパティ値を出力する処理を記述。そして、その合間にテーブル描画のためのHTMLタグを埋め込むことになる(リスト1)。

 一方、JSFではテーブルを表示する機能を持ったUIコンポーネントが用意されている。画面2(Sun Java Studio Creatorのテーブル描画処理)のように、開発者はスプレッドシートやツリーを貼り付ける感覚で画面のレイアウトを決めることができるのだ。

リスト1■Strutsのテーブル描画処理
<table border="1">
<tr>
<th>名前</th>
<th>役職</th>
<th>優待顧客</th>
</tr>
<logic:iterate id="person" name="personList">
<tr>
<td><bean:write name="person" property="name" /></td>
<td><bean:write name="person" property="jobtitle" /></td>
<td><bean:write name="person" property="frequentflyer" /></td>
</tr>
</logic:iterate>
</table>

画面2■Sun Java Studio Creatorのテーブル描画処理例

Sun Java Studio Creator JSFの発表と同時にサン・マイクロシステムズが「Project Rave」のコードネームでスクリーンショットを公開したIDE。JSFを利用すると、WebアプリケーションのUIをドラッグ&ドロップでコンポーネントを配置していくスタイルで開発できることを強烈にアピールした(関連レビュー記事)。

JSFアプリケーションの実装ではServlet APIを使わない

 JSFアプリケーションのコードでは、原則的にServlet API(javax.servletパッケージ/javax.servlet.httpパッケージに含まれるクラスやインタフェース)を使わない。

 これはJSFの大きな特徴であり、コーディングの敷居が下がったり、テストが容易になるといったメリットをもたらす。

 Servlet APIを使わなければ、当然Servlet APIの詳細な使い方を把握しなくてもコードが記述できる。また、Servlet APIを使ったクラスは、Servletコンテナ上に配備し、コンテナから呼び出されないと動作しないが、Servlet APIを使わなければローカルなJVM上で動作可能である。「JUnit」などでテストが可能になるのだ。これは開発効率という観点から、非常に大きなメリットである。

 一方、StrutsではActionクラスでServlet APIを利用するので、Actionクラスのテストがやや面倒になるのはどうしても避けられない。

JUnit テストの自動化を実現するためのオープンソースのテストツール。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ