JSFは、先に触れたようにIDE(統合開発環境)でのアプリケーション開発を想定している技術だ。
JSFのUIコンポーネントは共通のAPIを持つため、Swingアプリケーションや、Visual BasicのGUI開発のように、ドラッグ&ドロップでコンポーネントを配置し、コンポーネントのプロパティを設定、「文字が入力された」「ボタンが押された」、といったイベントごとの処理を記述するスタイル開発が可能だ。
開発ツールベンダー各社がリリースしているJSF対応のIDEは、ほぼすべてがこのような開発スタイルに対応している。画面1は、Sun Microsystemsからリリースされている「Sun Java Studio Creator」を使った開発の様子だ(関連レビュー記事)。
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> |
Sun Java Studio Creator JSFの発表と同時にサン・マイクロシステムズが「Project Rave」のコードネームでスクリーンショットを公開したIDE。JSFを利用すると、WebアプリケーションのUIをドラッグ&ドロップでコンポーネントを配置していくスタイルで開発できることを強烈にアピールした(関連レビュー記事)。
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.