JavaServer Facesの概要 - JSFについてオラクル Chris Schalk著 JSFについてJavaServer Faces(JSF)は、Webアプリケーションを構築する新しい標準のJavaフレームワークです。 Java Webユーザー・インタフェースを開発するコンポーネント中心のアプローチを提供して、開発を簡素化します。 また、JavaServer Facesは、さまざまなJava/Web開発者を対象とします。 "企業開発者"およびWebデザイナは、ユーザー・インタフェース(UI))コンポーネントをページにドラッグ・アンド・ドロップするだけでJSFを開発できます。"システム開発者"は、豊富で強力なJSF APIの優れた機能とプログラミングの柔軟性を確認できます。 また、JSFによって、十分に確立されたModel-View-Controller(MVC)設計パターンをアーキテクチャに統合して、保全性に優れたアプリケーション設計を実現します。 JSFはJava Community Process(JCP)を通じて開発されたJava標準なので、開発ツール・ベンダーは、JavaServer Facesの視覚的かつ生産的な使いやすい開発環境を提供できます。 JSFアーキテクチャMVCのJavaServer Faces実装JSFのおもな利点は、Java Webユーザー・インタフェース標準と、Model-View-Controller(MVC)設計パターンに完全に準拠するフレームワークです。 ユーザー・インタフェース・コード( View)とアプリケーション・データおよびロジック( Model)が明確に切り離されているので、JSFアプリケーションの管理性が向上します。 ページへのアプリケーション・データ・アクセスを提供するJSFコンテキストを準備して、ページへの不正なアクセスから保護するため、フロントエンドの"Faces"サーブレット( Controller)がアプリケーションとのすべてのユーザー・インタラクションを処理します。 図1:MVCのJavaServer Faces実装 JSFライフ・サイクルFaces Controllerサーブレットは、ユーザーとJSFアプリケーション間のリンクとして役立ちます。 Faces Controllerサーブレットは、ユーザー・リクエスト間のイベントの全体的なフローを示す明確に定義された JSFライフ・サイクルの管理領域内で動作します。 たとえば、JSFアプリケーションにアクセスする最初のWebリクエストを実行する際、Facesコントローラ・サーブレットは、すべてのアプリケーション・データを保持するJavaオブジェクトのJSFコンテキストを最初に準備して、リクエストを処理します。 次に、コントローラは、リクエストされたページにユーザーをルーティングします。 通常、ページでは、簡単な式言語を使用して、JSFコンテキストからアプリケーション・データをレンダリングします。 後続のリクエストを実行する際、コントローラはモデル・データを更新して、新しい値を入力します。 JSF開発者は、全体のJSFライフ・サイクルへのプログラム・アクセスをその実行中にいつでも行うことができます。これによって、アプリケーションの動作を常に詳細に制御できます。 JavaServer Facesのユーザー・インタフェース・コンポーネントJavaServer Facesの真のパワーは、複数のクライアント・タイプに応じて、さまざまな方法でレンダリングできるコンポーネントのコレクションからアプリケーションを構築する、ユーザー・インタフェース・コンポーネント・モデルにあります。 ASP.Netなどの他の独自技術に似ているJSFのUIコンポーネント・モデル・テクノロジでは、最初から全体のユーザー・インタフェースを構築しないで組み込まれたユーザー・インタフェース(UI)コンポーネントでWebユーザー・インタフェースを構築できるため、優れた生産性が提供されます。 多くの形式で使用できるJSF UIコンポーネントは、テキストを表示する簡単な outputLabelやデータベース表などのデータのコレクションから表形式のデータを表現できる複雑な dataTableとして利用できます。 JavaServer Facesの仕様では、単独でも非常に役立つ一連の基本UIコンポーネントをリファレンス実装で提供します。 これには、国際化や入力データの検証/変換などの一般的なアプリケーション開発タスクを支援する"コア"ライブラリと標準のHTML入力要素をおもにミラーリングする"HTML"コンポーネント・ライブラリなど、コンポーネントの2つのライブラリが含まれます。 UIコンポーネントの基本ライブラリを提供する以外に、JSF APIには、カスタムJSF UIコンポーネントを拡張および作成する機能があります。これによって、基本コンポーネントの追加機能が提供されます。 追加のユーザー・インタフェース・コンポーネント・ライブラリJSF APIの多様性および柔軟性によって、多くのJava開発者が新しいJSFコンポーネント・ライブラリおよび実装を作成しています。 Oracle ADF Facesは、JSFアプリケーション開発の広範な優れたUIコンポーネントを提供する完全に準拠したJSFコンポーネント・ライブラリです。 これには、メニュー、コマンド・ボタン、シャトル選択、進捗メーターなどの多くの一般的なコンポーネントとともに、クライアント・タイプごとの複数のレンダラ、高度な表、カラー・ピッカー、日付ピッカーが含まれます。 図2:Oracle ADF FacesのJSF UIコンポーネント Oracle ADF Faces以外に、オープン・ソースおよびソフトウェア・ベンダー・コミュニティから提供される他の新しいJSFコンポーネント・ライブラリがあります。 たとえば、 MyFacesは、Apacheを使用したオープン・ソース・プロジェクトとして提供される新しいJSF UIコンポーネント・ライブラリです。 統合タイル・サポート、Javascript対応メニュー、ツリー・コントロールなどの拡張UI機能も使用できるので、MyfacesはJSFの基本UIコンポーネントの拡張機能としても役立ちます。 図3:オープン・ソースのMyFaces実装およびUIコンポーネント・ライブラリ JSF UIコンポーネントのプラッガブル・レンダリング・テクノロジJSF UIコンポーネント・テクノロジのもっとも強力な側面は、プラッガブル・レンダリング機能です。 JSF UIコンポーネントには、コンポーネントを参照するクライアント・タイプに応じて異なるレンダリングを実行する機能があります。 たとえば、HTMLブラウザは、特定のUIコンポーネントの"HTMLブラウザ対応"バージョンを参照します。ワイヤレス対応またはWAP対応のマイクロ・デバイスは、 同じUIコンポーネントの"WML対応"バージョンを参照します。 レンダリング・ロジックからUIコンポーネントを切り離すと、JSFでこの機能が実現します。これによって、同じUIコンポーネントの複数のレンダラを作成できます。 異なるレンダラをUIコンポーネントに関連付けることができます。実行時に、UIコンポーネントは、要求しているクライアント・タイプに基づいて使用するレンダラを決定できます。 図4:ワイヤレス・クライアントとHTMLクライアントで、異なるレンダリングの単一のADF Faces表コンポーネント また、JSFのプラッガブル・レンダリング機能によって、JSF UIコンポーネントを使用して、HTML、XML、WMLなどのマークアップやバイナリ・データにデータをレンダリングできます。 たとえば、UIコンポーネントは、イメージ・ストリームなどのバイナリ・データや、SVG、PDF、Wordなどの異なるドキュメント・タイプもレンダリングできます。 JSFコンポーネント開発者の新しいコミュニティJSFの開発者および支持者のコミュニティが拡大を続けて、現在独立したJSF開発を支援するいくつかのWebサイトが存在します。 たとえば、 JSFCentralは、JSF開発コミュニティ専用の新しいWebサイトです。 このサイトには、JSF技術情報、製品/コンポーネント情報、多くのJSF関連記事の豊富なリストが含まれます。 図5:JSFCentral - 無料のJavaServer Facesコミュニティ (JSFCentralのサイトは http://jsfcentral.com/です。)JSF開発ツールJavaServer Facesは標準のJavaテクノロジなので、ソフトウェア開発ツールを使用して、JavaServer Facesの統合された高度な開発ツールをサポートします。 このため、複数のベンダーが何らかのJSF開発をサポートしているという点で、JSFの使いやすさと機能が大幅に向上します。 オラクル、Sun、Borland、およびIBMは、それぞれJavaServer Facesの開発環境を提供しています。 複数の開発ツール・ベンダーが効率的で使いやすい開発環境の実現に取り組んでいるので、IDEベースのJSF開発の今後が期待されます。 図6:Oracle JDeveloperによる、生産的で視覚的なJSF開発経験 まとめJavaServer Facesは、Model-View-Controller設計パターンを実装し、開発の機能および柔軟性を損なうことなく、生産的でコンポーネント中心の開発を実現し、従来の多くのJava Web開発の問題を解決します。 また、JSFはJava標準なので、複数のソフトウェア・ベンダーは、独自のビジュアル開発環境よりも生産的で効率的な開発環境を今後も提供します。 引き続き注目してください。
|