InfoQ

News

JavaServer Faces 2.0のアーリードラフトがリリース - JavaScriptライブラリとの互換性を改良

作者 Dionysios G. Synodinos, 翻訳者 沼田 暁子 投稿日 2008年6月23日 午前6時7分

コミュニティ
Java
トピック
仕様,
JavaScript,
JCP Standards,
Web 2.0,
Webフレームワーク
タグ
JSF,
JSR 314,
OpenAjax Alliance,
JSR 252,
AJAX

Java Community Processプログラムのもとで(source)、JSR 314のアーリードラフトがレビューのためにリリースされた(source)。このJSRでは、JavaServer Facesの仕様を1.2から(source)2.0に(source)アップデートすることを目指している。この次世代のJSFは、Webアプリケーション開発の素晴らしいアイデアを Java EEプラットフォームにもたらそうとしている。コミュニティからは既に肯定的な反応をもらっているが、これは特にAJAXのサポートが改善されたことによるものである。

このJSFのリリースの主要な目標は、JCPのページに以下のようにまとめられている(source)

専門家グループは、次のような従来のアイデアを集めていく予定である。

  • グラフィカルなIDEやコマンドラインの開発者のために、Webアプリケーションの開発において生産性を最大化すること。
  • Webアプリケーション開発期間中の維持管理をできる限り簡単にすること。
  • Ajax 技術を効果的に使用することにより、反応の良いユーザインタフェースを簡単に作成できるようにすること。これには、サーバ上のアプリケーション・ロジックの実用的なレベルを保ったままで、クライアントの中にMVCのコントローラとUIのロジックのほとんど全てとページ内部のコンポーネントの相互作用を持つアプリケーションを有効にすることが含まれている。JavaScriptが無効になっていたり利用できない場合に、うまく機能を落とすことを考慮に入れたアイデアも重要である。
  • 完全に機能的な、クライアントではJavaScriptを使用していないサーバベースのWebアプリケーションのサポートを継続することによって、Webアプリケーションの範囲を広げられるようにすること。
  • モジュラリティを利用して、JSFフレームワークとその他のクライアントやサーバサイドのWebアプリケーション技術との統合の機会を広げること。これによって開発者は、無理にJSF全体を使用することなく、個々のパーツを簡単に利用できるようになるだろう。例えば、リクエスト処理のライフサイクルは JSFのVIEWがなくても役に立つ。もう一つの例としては、JSFには堅牢な国際化(I18N)や地域化(L10N)の機能がある。UIにJSFのコンポーネントを使わなくても、この機能を使うことができるはずである。これを簡単に特徴付けると、「使いやすくマッシュアップ」するということである。
  • Java Persistence APIの利用により、データを簡単に見せられるようにすること。

JSF 2.0のドラフトがリリースされる前に、いくつかの新機能の追加についてコミュニティからリクエストが出されていた。JDJに掲載されている記事の中で、Shay Shmeltzer氏はJSFの次期バージョンに期待することのリストを挙げている(source)。まとめると次のようになる。

  • AJAXのJSFへの統合の標準化
  • JSFコンポーネント構築の単純化
  • スコープの追加
  • JSFフローへの新しいコンポーネントの導入
  • フローの再利用を可能にすること
  • ビジネス・コンポーネントのバインディングへの宣言型UIの追加


JSF 2.0のドラフトで取り組もうとしている課題の一つは、JavaScript言語から名前空間サポートの欠落に対処するために、Open Ajax Registryを(source)利用することである。Open Ajax Allianceは (source)Ajaxを使っているベンダやオープンソースプロジェクトの団体であり、OpenAjax Registryを維持している。このレジストリは集中型で業界規模のAjaxの登録機関で、オブジェクトの衝突を防ぐために業界全体に渡るAjaxのランタイム・ライブラリのリストを保持している。

このレジストリは、以下のような利益をもたらす(source)

このレジストリは、JavaScriptとマークアップの衝突を防ぐ他に、次のようなメリットがあります。

  • Ajaxライブラリの開発者がレジストリを利用すると、
    • 自分達のJavaScriptのグローバルオブジェクトや、実行時の拡張(JavaScriptとDOM)、ライブラリ独自のマークアップが、他のAjaxライブラリが使用している名前と衝突しないことを確かめることができます。
    • 複数のライブラリが同じ名前や拡張仕様を共有できるような、JavaScript環境を拡張しようとする作業を統合することができます。
  • ブラウザのベンダがレジストリを利用すると、
    • ブラウザに新たに組み込まれたJavaScriptの機能が、業界で既に使用されている名前と衝突しないことを確かめることができます。
  • Ajaxアプリケーションの開発者がレジストリを利用すると、
    • アプリケーションで使われているJavaScriptのグローバルオブジェクトはどれも、ポピュラーなAjaxライブラリで使われているグローバルオブジェクトと衝突しないことを保証することができます。

JSF 2.0のドラフトでは次のように規定されている。

トップレベルの名前空間であるjavaxがあり、これはOpen Ajax Allianceに登録されている。

Java Ajax: {
namespaceURI: http://www.sun.com,
version: "1.0",
globals_to_approve:["javax"],
comments: "Used in the JSF 2.0 specification.",
specificationURI:"http://www.jcp.org/en/jsr/detail?id=316",
email: "jsfaces@sun.com"
}

OpenAjax Allianceに従うためには、ライブラリは、ブラウザのJavaScriptエンジンがJavaScriptファイルをフェッチして解析するときに、 OpenAjax.registerLibrary()を使用してライブラリ自身を登録しなければならない。

JavaServer Faces 2.0のJavaScript APIを使用するページはどれも、トップレベルのJavaScriptオブジェクトの名前であるjavaxを、JavaScriptの連想配列で定義しなければならない。そのトップレベルのJavaScriptオブジェクトの中には、OpenAjax Hubの中で見つかるが、facesという名前のプロパティがなければならず、その値は別のJavaScriptの連想配列でなければならない。 facesという名前のJavaScriptオブジェクトの中には、さらに別のJavaScript連想配列がAjaxというキーで存在しなければならない。

if (javax == null || typeof javax ==  "undefined") {
var javax = new Object();
}
if (javax.faces == null || typeof java.faces == "undefined") {
javax["faces"] = new Object();
}
if (javax.faces.Ajax == null || typeof javax.faces.Ajax == "undefined") {
javax.faces["Ajax"] = new Object();
}

Javaやその他のWebフレームワークの詳細は、http://www.infoq.com/jp/webframeworkで入手可能である。

原文はこちらです:http://www.infoq.com/news/2008/06/jsf-2.0-early-draft

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

特集コンテンツ一覧

トップスポーツチームの監督に教わる秘訣

この論文では、氏が発見した原則を要約し、その原則をいかにしてソフトウェア開発に応用するかを説明します。

事例研究:Dutch Railwaysのプロジェクトにおける分散拠点でのスクラム・プロジェクト

この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。

Agile2008チーム参加レポート - 帰国そして変化

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。

SilverlightとJavaのインターオペラビリティ

マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。

Agile2008 チーム参加レポート - カンファレンス参加編

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。サブミッションが選択された人、そうでない人も含めて、個々の目的意識の確認、膨大なプログラムから聞きたいセッションの選択、旅行の準備、プレゼンテーションの準備の期間を終えて、無事当日を迎えました。

Agile2008 チーム参加レポート - 動機/準備編

筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。

Javaトラブルシューティングメルマガ総集編 2008/08~09

エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。

モデル駆動アプローチがうまく機能しない(しなくなる)8 つの理由

この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。