JavaServer Faces Ajax Flash: 次世代のユーザー インタフェース Oracle ホワイト ペーパー 2006 年 10 月
はじめに Ajax は JavaScript Dynamic HTML (DHTML) および XML を非同期に組み合わせた技術です Ajax を使用すると Web アプリケーションで Web ページ全体をリロードするのではなく Web ページの部分更新をおこなうことができます Document Object Model(DOM) は 構造化ドキュメントを表すためのプラットフォームと言語に中立的なアプローチです Web 2.0 によって かつては非現実的だと考えられていた デスクトップ アプリケーションに代わる Web ベースのアプリケーション (Gmail NetFlix など ) という新しい種類のアプリケーションを作成できるようになりました Ajax などの開発技術により Web インタフェースに新しいコンポーネントや視覚的効果を設定できるようになっただけではなく JavaScript や DHTML の限界も押し広げられています JavaScript やそのユーザー インタフェース (UI) の DOM 表現は プレゼンテーション レイヤー オブジェクトの操作には適していますが Rich Internet Applications(RIA) の構築に欠かせないビジネス ロジックの実装には適していません さらに JavaScript および DHTML のブラウザ サポートの特異性により 開発プラットフォームが脆弱になり ブラウザ固有のコードを維持する必要も生じます これに対するソリューションは Ajax の複雑さを取り除き より強力な産業テクノロジーと統合するテクノロジーを Ajax と組み合わせることです JavaServer Faces(JSF) は そのような基盤や Ajax と JSF の組合せを提供し Web 2.0 インタフェースの組立てを大幅に簡素化します 開発者は JavaScript の複雑さに対処する必要がなくなり 豊富な事前組込みコンポーネントやビジュアル ツールが提供され Java EE プラットフォームへのフル アクセスが実現します 発展の要件 Web 2.0 の登場以来 従来の Web アプリケーションに使用されているありきたりの " クリックして待つ方式 " の対話が受け入れられなくなっています ユーザーは リアルタイムの更新とデスクトップのような機能性を求めています そのため 開発者は 既存の Web アプリケーション モデルという制約の範囲内で デスクトップのような機能を実現するための方法を探しています 開発者は多くのテクノロジーを活用し Web 2.0 インタフェースを作成できるようになりました おもな選択肢には Ajax Flash SVG XUL XAML Java Applets などが挙げられます オプションの種類が豊富であるにもかかわらず プラットフォームやベンダーから独立しているのは Ajax だけです Ajax は ブラウザ プラグインやブラウザ独自の機能を必要としない クライアント側のネイティブなブラウザ テクノロジー (JavaScript や DHTML) に依存しています ただし Ajax にはネイティブなマルチメディア サポートはありません そのため メディアを中心としたアプリケーションでは Ajax のほかに SVG や Flash が必要になります SVG は優れたグラフィックス サポートを Flash は一連のネイティブ マルチメディア機能 ( ストリーミング ビデオ ベクトル グラフィックスなど ) を提供します いずれのソリューションでもブラウザ プラグインをダウンロードする必要がありますが ほぼユビキタスなブラウザ サポートが実現します また 言語の実装は幅広くなる傾向があるものの JavaScript と DHTML により EMCA および W3C の両方で支えられている標準ベースのソリューションが提供されます Ajax は 共通の開発言語のほかは標準をほとんど提供していません つまり 開発者は クライアントとサーバー間のデータのマーシャリングやアンマーシャリングなどの複雑なタスクを独自のデバイスで処理する必要があります これらのデータ交換のタイプや形式 (WS-* SOAP REST または JSON など ) を規定する標準も プレゼンテーション レイヤーの DOM 表現をデータ交換で更新する方法を規定する標準もありません さらに Ajax コンポーネントを作成するため JavaServer Faces Ajax Flash: 次世代のユーザー インタフェース 2
の標準のアプローチもなく コンポーネント フレームワーク間の相互運用性に対する保証もほとんどないのです 純粋な JavaScript ソリューション (Dojo Prototype RICO Scriptolicious) を提供する現在のコンポーネント フレームワークは さまざまな Ajax 対応コンポーネントおよび視覚的効果を提供し JavaScript の複雑さの一部を隠しています しかし これらのフレームワークは ロジックとプレゼンテーションの分離におけるブレーク ダウンというアーキテクチャ上の根本的な問題ももたらしています 優れたユーザー エクスペリエンスを提供するには サーバー側のデータとビジネス ロジックの複製が データをプリフェッチするためにクライアント層で発生し ブラウザで処理する必要があります これにより ページ全体をリロードする必要性が軽減されます このロジックの移行により Web アプリケーションの開発が理想的な Model-View-Control(MVC) パターンの Model 2 実装から ロジックとプレゼンテーションが混合する Model 1 実装へと逆戻りすることになります つまり Java の開発条件においては JSF のような UI フレームワークから ビジネス ロジックが Scriptlets 内のページに常駐する従来型の JSP 開発へと 進化に逆行する手順となります また JavaScript を使用してビジネス ロジックを実行することで 開発者は言語による制限を拡張することになります JavaScript は現在 シングル スレッドのランタイム環境を提供しているブラウザに限定されています また ブラウザ プラットフォームは決して移植性があるものでも 将来的に安全なものでもありません そのため Ajax と実証済みのエンタープライズ基準のテクノロジーを組み合わせる さらに強力なソリューションが必要となります Java EE は サーバー側での開発用の標準ベースのテクノロジー プラットフォームです 長年にわたり ebay のような人気のある消費者サイトをはじめとした多数のエンタープライズ アプリケーションに実装されていることが Java EE の能力を証明しています しかし サーバー側での成功に比べると Java EE のクライアント側での対応はやや遅れています したがって Ajax と Java EE を組み合わせることで 両テクノロジー双方の利点をもたらす Web 開発のための " ベスト オブ ブリード " アプローチを実現し 動的プレゼンテーション レイヤーを備えた Java EE と エンタープライズ ビジネス トランザクションを処理する機能を備えた Ajax を有効にする必要があります この組合せを成功させるための課題は 中間層のアプリケーション コードとクライアント層のビジュアル コンポーネント間のギャップを埋めることにあります そのソリューションは 中間層にあるブラウザの DOM UI 表現をレプリケートして Java コードで操作できるようにすることです これにより アプリケーションの状態をサーバー側で維持し 決定できます そのため 状態の変更は 非同期更新を介して追加的にブラウザに伝播され ブラウザの DOM UI 表現が変更されます このソリューションは 優れたインターネット テクノロジーと Flash や SVG などのほかのテクノロジーに容易に変換できる Java EE を組み合わせるための汎用的なアプローチを提供します ただし 単一のコンポーネント モデルを提供し クライアント / サーバー間のインタラクションの管理の煩雑さから開発者を解放する標準化フレームワークが必要となります JavaServer Faces Ajax Flash: 次世代のユーザー インタフェース 3
図 1:Java EE のサーバー側および Ajax ユーザー インタフェース 標準 Java Community Process(JCP) は Java プラットフォームの将来のバージョンおよび機能を定義する正式なプロセスです Java Community Process(JCP) に基づき開発された JavaServer Faces(JSF) は サーバー側のアプリケーション フレームワークであり Web ベースのユーザー インタフェースを作成するための標準を確立します JSF は コンポーネント中心の開発モデルとともに コンポーネントの動作と表現の疎結合を定義する非常に柔軟性のあるレンダリング アーキテクチャを提供します これにより 開発者は レンダリング キットと呼ばれるさまざまなライブラリを単純にアプリケーションにプラグインすることで 各種出力デバイスに対応するクライアント アゴニスティック UI を作成できます JavaServer Faces のプレゼンテーション レイヤーの柔軟性により 開発者は基礎となるテクノロジーに精通していなくても HTML や WML などのマークアップ言語 または Telnet などのさらに古くからあるプロトコルの利点を活用できます そのため 開発者は 1 つの単純なプログラミング モデルだけを理解していれば モバイル デバイスやデスクトップ ブラウザをレンダリングする単一のアプリケーションを作成できます 図 2:JSF レンダリング アーキテクチャ JSF レンダリング アーキテクチャは Ajax 対応の Java EE Web アプリケーションを作成するために欠かせない重要な要素です Ajax レンダリング キットを実装することで Ajax に関連する多くの複雑さが取り除かれ RIA の開発で Java 開発コミュニティにアクセスできるようになります さらに Ajax レンダリング キットは Ajax を標準によって支えられている包括的なコンポーネントベースのアプリケーション モデルと組み合わされ すぐに利用できる Java EE スタック JavaServer Faces Ajax Flash: 次世代のユーザー インタフェース 4
と統合されます 図 3: マルチチャネル クライアント デリバリ JSF を使用すると RIA の開発を簡素化できるだけではなく 開発プラットフォームを選択することもできます カスタム コンポーネント セット レンダリング キット JSF の実装は 開発ツールおよびランタイム環境間で移植できます これは JSF の基盤となっている標準によってもたらさられる直接的な結果です 現在 優れたサーバー側のユーザー インタフェースを作成するためのオプションは多数あります ほとんどは独自仕様のもので 1 つの開発ツールと単一のランタイム環境を提供します JSF は 開発者をベンダーによる束縛から解放するためのフル機能のオープンな代替製品を提供します さらに JSF は標準で規定されているので 現在作成するアプリケーションで将来的に作成するツールを使用できます OpenAjax Alliance は オープンで相互運用が可能な Ajax ベースの Web テクノロジーの実装に専念しているベンダーのコンソーシアムです オラクルは RIA 開発の発展およびサポートに取り組んでいます JSF および Ajax は オラクルが促進し Oracle Fusion Middleware に組み込むことを決めたプライマリ Web UI テクノロジーを表しています オラクルの RIA 開発への取組みは JSF エキスパート グループ内の活動的なメンバーシップや 次世代の JSF 仕様である JSR252 をはじめとしたさまざまな仕様を定義する活動への参加によってさらに強化されています さらに オラクルは OpenAjax Alliance に貢献することで Ajax の将来の形成に積極的に関わっています JavaServer Faces Ajax Flash: 次世代のユーザー インタフェース 5
オラクルの製品戦略 新しい ADF Faces は この新しいバージョンのハイライトです これは 習熟期間を大幅に短縮するのに役立ち 自分の知識を Oracle JDeveloper 環境でも活用したいと考える Oracle Forms や Oracle Designer の開発者にはとくに役立ちます また Oracle JDeveloper は イベント駆動型モデルおよび組込み機能を提供する新規コンポーネントを備えた 4GL 言語機能を提供するようになりました これらの機能は ドラッグ アンド ドロップするだけで使用できます Oracle Application Development Framework(Oracle ADF) は MVC パターンなどのベスト プラクティス上に構築されている明確なアーキテクチャを提供します これにより Java EE での開発が簡素化され 開発者はテクノロジーを選択できます ADF Faces は ADF フレームワークで利用可能な多くのプレゼンテーション レイヤー テクノロジーの 1 つを表し 柔軟な JavaServer Faces レンダリング アーキテクチャを使用して Ajax と JSF の能力を組み合わせて 100 を超える RIA コンポーネントを開発者に提供します コンポーネントのオプションには 階層データ表 ツリー メニュー インページ ダイアログ アコーディオン ディバイダ ソート可能な表が含まれます Technical Architect Fujitsu Consulting Eric Marcoux 図 4:ADF Faces Rich Client の例各コンポーネントは 完全なカスタマイズ スキニング 国際化とアクセシビリティのサポートも提供します Oracle ADF Faces では今後も Ajax をサポートしていきますが Oracle Business Activity Monitoring(Oracle BAM) に必須のコンポーネントのセットである リアルタイム更新を提供するチャート グラフ ゲージ およびほかのグラフィックスの動的なレンダリングを可能にする豊富な Flash および SVG 対応コンポーネントも提供します Oracle ADF Faces コンポーネントに含まれる Ajax SVG および Flash の組込みサポートにより 開発者は基礎となるテクノロジーに精通していなくても RIA を作成できます Oracle ADF Faces では 基礎となる RIA テクノロジーを取り除く Ajax レンダリング キットを提供し 開発者がすでに精通している JSP/JSF API を使用してプログラミングできるようにすることで これを実現しています Oracle Ajax レンダリング キットは DHTML と JavaScript SVG または Flash でのプレゼンテーションにおいて 特定のコンポーネントを表示するために必要なマークアップおよびサポート コードを生成します Ajax レンダリング キットは オラクルの次世代の ADF Faces コンポーネントのリリースで利用できるようになります JavaServer Faces Ajax Flash: 次世代のユーザー インタフェース 6
図 5:ADF Faces レンダリング キット Oracle ADF Faces は ユーザー インタフェースの開発を簡素化するだけではなく 既存のビジネス サービスのアプリケーション ロジックを UI コンポーネントに接続するために必要なコードも簡素化します これは JSR-227 対応コンポーネントのセットを提供して 開発者が設計時にサービスを UI に簡単にバインドできるようにすることで実現します JavaServer Faces の標準に準拠するコンポーネントを作成することで ADF Faces は 開発ツールとランタイム環境の両方を選択できるようにしています Oracle ADF Faces コンポーネントは オラクルの開発ツールおよび Java EE コンテナにおいて ほかのベンダーの製品と同様に動作し 処理を実行します 当社が Oracle JDeveloper 10.1.3 に切り換えた理由は EJB 3 および JSF の最新テクノロジーのサポート ADF Faces の豊富なコンポーネント および非常に使いやすいツールにあります Oracle JDeveloper は 新しいテクノロジーを活用し 当社のアプリケーションのスコープを最大限にすることができるツールを提供してくれました Architect Grid Consulting Gary Connell コンポーネントだけでは 開発プロセスを大幅に簡素化することはできませんが 開発ツールとコンポーネントを組み合わせることで可能になります 豊富な RIA コンポーネントに加え オラクルでは 常駐コードの担当者とビジネス アプリケーション開発者の両方のニーズを満たす優れた開発環境を提供しています Oracle JDeveloper は BPEL EJB 3.0 Oracle ADF Business Components Web サービスを含むテクノロジーのための一連の SOA 開発ツールも提供します つまり RIA を作成する開発チームは 第 2 のツールに依存してビジネス サービスを作成する必要がないということです Oracle JDeveloper は 反応のいい優れたインタフェースを構築し ビジネス サービスを開発して それらのサービスを UI コンポーネントに接続するための 1 つのプラットフォームを提供します オラクルは 独自製品を提供することに加え オープン ソース コミュニティに深く関わっています 現在 オラクルは Web Tools Platform(WTP) における Eclipse JSF 設計時プロジェクトを先導しています オラクルは 第 1 世代の ADF Faces コンポーネントを Apache Trinidad プロジェクト配下の Apache Foundation に提供しました 現在は Trinidad プロジェクトでの発見を強化するために 一連のコンポーネントを提供する作業をおこなっています JavaServer Faces Ajax Flash: 次世代のユーザー インタフェース 7
結論 Web 2.0 アプリケーションは 新しいテクノロジーに依存するより洗練された Web インタフェースに対する需要を促進しています オラクルは RIA 開発の発展に取り組んでおり 開発者に開発プラットフォームとコンポーネントの選択肢を提供するテクノロジーの促進およびサポートを続けていきます Oracle JDeveloper および Oracle ADF Faces は この取組みに対してオラクルが最初に提供した製品であり 開発者に生産性の向上をもたらし エンタープライズ対応の RIA を作成するために必要な標準のフレームワークを提供します オラクルは Web 2.0 とエンタープライズ インタフェース テクノロジーを集約することで 将来の標準の定義に貢献しています また オープン ソースの提供を通じてそうした標準の実装を促進することにより 次世代の UI 開発をリードしていきます JavaServer Faces Ajax Flash: 次世代のユーザー インタフェース 8
JavaServer Faces Ajax Flash: 次世代のユーザー インタフェース 2006 年 10 月著者 :Ric Smith Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問い合わせ窓口 : 電話 :+1.650.506.7000 ファクシミリ :+1.650.506.7200 www.oracle.com Copyright 2006, Oracle. All rights reserved. 本文書は情報提供のみを目的として提供されており ここに記載される内容は予告なく変更されることがあります 本文書は一切間違いがないことを保証するものではなく さらに 口述による明示または法律による黙示を問わず 特定の目的に対する商品性もしくは適合性についての黙示的な保証を含み いかなる他の保証や条件も提供するものではありません オラクル社は本文書に関するいかなる法的責任も明確に否認し 本文書によって直接的または間接的に確立される契約義務はないものとします 本文書はオラクル社の書面による許可を前もって得ることなく いかなる目的のためにも 電子または印刷を含むいかなる形式や手段によっても再作成または送信することはできません Oracle JD Edwards PeopleSoft および Siebel は 米国 Oracle Corporation およびその子会社 関連会社の登録商標です その他の名称はそれぞれの会社の商標です