【コラム】

Java API、使ってますか?

14 Webアプリケーション開発の要となるか - JSF 2.0がJSRに登場

14/60

JavaServer Faces 2.0の仕様策定開始

JSF(JavaServer Faces)はJSPとServletの仕組みを利用してWebアプリケーションを作成するためのフレームワークであり、昨年リリースされたJava EE 5にも含まれるAPIだ。現行バージョンはJSF 1.2で、これはJSR 252として仕様がまとめられている。

現在、JSFのエキスパートグループは次期バージョンにあたる「JavaServer Faces 2.0」の仕様策定に取りかかっており、この春にJava Community Processに対してJSRを提出、5月25日より2週間に渡ってJSR Review Ballotが行われている。今回は提出されたJSRを元にJSF 2.0の概要を紹介したい。

まず同エキスパートグループは、JSF 2.0仕様のコンセプトとして次のような内容を掲げている。

  • Webアプリケーションの生産性を最大限向上させる
  • Webアプリケーションのメンテナンスを容易にする
  • Ajaxを活用したリッチなインタフェースを容易に作成できるようにする
  • JavaScriptを使用しなくても同様にリッチなWebアプリケーションを作成できるようにする
  • モジュール化を進め、JSFフレームワークと、他のクライアントやサーバサイドアプリケーションとの親和性を確保する
  • Java Persistence APIによってデータの表示を簡単にする

これを見る限り、JSF 2.0では開発の容易性とリッチクライアントアプリケーションを強く意識しているのがわかる。

少し話が逸れるが、スペックリードであるEd Burns氏のブログこのエントリに「Menu of JSF 2.0 Features available for purchase」と題された表が掲載されている。この表はJSF 2.0の主要な新機能を実現するために必要なコストを、トータルが1000USドルとなるように評価したものだ。FaceletsやZero Deployment Time、EZComp、Ajaxなどに対して高いコストが見積もられているのが興味深い。

JSF 2.0の主な要件

さて、JSR 314ではJSF 2.0の主な要件を「Ease of Development」「New Features」「Runtime Performance and Scalability」「Adoption」の4つのカテゴリに分けてまとめている。現時点ですでに非常に多くの要件が挙げられており、JSF 1.2に対して大幅な変更が加えられることになりそうだ。

Ease of Development

Ease of Development(EoD)はJava EEにおける重要なコンセプトであり、JSFもJava EEの一部なので当然この点は重視されることになる。EoD実現のための要件としては主に次のようなものが挙げられている。

  • 最小限のJavaコーディングでカスタムコンポーネントを作成できるようにする
  • アノテーションを利用した"ゼロ-コンフィギュレーション"の実現
  • エラーメッセージの改善
  • デフォルトの例外処理の提供
  • JSFコンポーネントを自作した際、JSPタグハンドラまで自作する必要をなくす
  • JSFコンポーネントやManaged Bean、ナビゲーションルールを実行時に決定できるようにする
  • FaceletsやJSFTemplating、Tilesなどの統合
  • CRUDベースのアプリケーションを容易に開発できるようにする

また、コンテナ側で改善すべきとして次のようなものが挙げられている。

  • JSFアプリケーションを実行中にリアルタイムで修正できるようにする
  • WARの構成を改善

New Features

ユーザからの要望やフィードバックによって採り入れられる変更がこのカテゴリに分類される。ここには既存の機能の修正なども含まれる。具体的には次のような内容が挙げられている。

  • リクエスト処理のライフサイクルをAjax対応にする
  • コンポーネントツリーの構築とレンダリングを異なるライフサイクルに置く
  • Ajaxのライフサイクルでコンポーネントツリーを部分的にトラバースできるようにする
  • JSFページをブックマークできるようにする
  • クライアントサイド、コンポーネント内、およびフォームレベルでのバリデーションを可能にする(可能ならばJSR 303を導入)
  • コンポーネントに関連する静的リソースのサポート強化
  • Date Picker、Tree、Tab View、File UploadなどのコンポーネントをStandard HTML RenderKitに追加
  • ページを表示する際に実行されるアクションを指定できるようにする
  • 永続化されたデータに容易にアクセスできるようにする

Runtime Performance and Scalability

JSFの柔軟性を高めれば、それは実行時のパフォーマンスに大きく影響することになる。したがって機能の強化を有効なものにするためには、性能の改善と安定性の確保も同時に行わなければならないという。具体的には次のような要件が挙げられている。

  • コンポーネントの状態の保持を部分的なものにする
  • ステートレスコンポーネントのデフォルトの状態保持を見直す
  • イベント処理やページ内でのコンポーネントの連携を可能な限りクライアント側で行う
  • キャッシングを利用してレンダリング処理をスムーズにする
  • どの種類のリクエストが許可されているかをPhaseListenerで制御できるようにする

Adoption

このカテゴリには、JSFのユーザを増やすことも目的として追加される機能が分類される。その結果として、Webアプリケーションフレームワークとしての水準の向上を図るという。主なな要件としては以下のようなものが挙げられている。

  • クライアントベースのライフサイクルを有効にし、それによってドラッグ&ドロップなどを可能にする
  • ベンダ製UIComponentライブラリとの親和性を考慮してUIComponent仕様を改善する
  • JSF仕様の一部の機能だけをJava EEアプリケーションで利用できるようにする
  • RESTを使用したJSFアプリケーションリソースへのアクセスをサポート
  • RSS/Atomを使用したイベントの公開をサポート
  • REST(JSR 311)のサポート
  • スクリプト言語を使用したJSFアプリケーションの開発を可能にする
  • JSFアプリケーション開発のためのコマンドラインインタフェースを定める
  • ページ間での値の受け渡しをサポート

リリーススケジュール

JSR 314は、本稿執筆時点ではExective CommitieによるJSR Review Ballotが行われている最中であり、これは6月4日(現地時間)に終了する。可決すれば正式にエキスパートグループが形成され、具体的なドラフトの作成が開始される。現時点でのリリーススケジュールでは、Eary Draft Reviewは今年10月、Public Reviewが2008年2月、Public Review Ballotが同3月に行われる予定となっている。

当然ながらスケジュールは状況に応じて変動すると思われるが、最終的にJava EE 6への統合を目指しているため、それに間に合うようにProposed Final Draftを公開したいとのことである。なおJava EE 6はJSR 313として仕様の策定が開始されており、来年第3四半期での最終リリースを目指している。

14/60

インデックス

連載目次
第60回 どうなる? 今後のJavaプラットフォーム(Java SE編)
第59回 どうなる? 今後のJavaプラットフォーム(Java EE編)
第58回 Java SE 7の要注目機能"クロージャ"はどうなるのか その6
第57回 Java SE 7の要注目機能"クロージャ"はどうなるのか その5
第56回 Java SE 7の要注目機能"クロージャ"はどうなるのか その4
第55回 Java SE 7の要注目機能"クロージャ"はどうなるのか その3
第54回 Java SE 7の要注目機能"クロージャ"はどうなるのか その2
第53回 Java SE 7の要注目機能"クロージャ"はどうなるのか
第52回 Early Draftが公開されたJSF 2.0
第51回 EJBから独立したJava Persistence 2.0
第50回 モバイルJavaの新しい潮流となるか - MSA 2.0のドラフト公開
第49回 やっぱり基本はServlet - Servlet 3.0のEarly Draftを読む
第48回 JOGLで3Dプログラミング その4
第47回 JOGLで3Dプログラミング その3
第46回 JOGLで3Dプログラミング その2
第45回 JOGLで3Dプログラミング
第44回 JARファイルを効率的にネットワーク転送するためのPack200形式
第43回 Early Draftで把握するEJB 3.1の新機能
第42回 次世代の携帯端末向けJava仕様"MIDP 3.0"はどうなるか その2
第41回 次世代の携帯端末向けJava仕様"MIDP 3.0"はどうなるか その1
第40回 リソースアダプタによる接続の仕組み
第39回 JCAを利用したシステム間接続
第38回 Java EEと外部システムの接続性を支えるJCAがバージョンアップ
第37回 Javaのモジュラリティ強化を担う"スーパーパッケージ"とは
第36回 JSR 308対応のコンパイラを試す
第35回 公開されたJSR 308のEarly Draftを検証する
第34回 スクリプト言語とJavaを結びつけるJSR 223
第33回 Java EE環境に統一されたコンポーネントモデルを提供するJSR 299 その2
第32回 Java EE環境に統一されたコンポーネントモデルを提供するJSR 299 その1
第31回 Javaの文法がそのまま使えるスクリプト言語"BeanShell"
第30回 Javaアプリケーションにオブジェクトのキャッシュ機構を提供するJCache API
第29回 Javaアプリケーションからのリソース管理を可能にするJSR 284
第28回 XMLデータソースへの問い合わせはJSR 225で
第27回 Portlet Specification 2.0をもっと手軽に利用する
第26回 次期Javaポートレット仕様となるJSR 286
第25回 JSFとポートレットをつなげるJSR 301
第24回 Webサービス向けのポートレット仕様「WSRP」
第23回 高い相互運用性を実現するポートレットAPI - JSR 168
第22回 Java EE環境でタスクのスケジューリングを可能にするJSR 236
第21回 Java EE環境でのスレッドプログラミングを可能にするJSR 237
第20回 音声認識/合成のためのAPI - Java Speech APIとJSR 113
第19回 JSR 291でJavaプラットフォームにダイナミックコンポーネントモデルを導入
第18回 JAX-RSで簡単RESTful - JSR 311
第17回 待望のServlet 3.0がJSRに登場 - JSR 315
第16回 アノテーションを使ってバグ退治 - JSR 305
第15回 アノテーションをさらに広い範囲で利用可能にするJSR 308
第14回 Webアプリケーション開発の要となるか - JSF 2.0がJSRに登場
第13回 Webサービス経由でのJMX Agentへの接続を可能にするJSR 262
第12回 Javaアプリケーションのモジュール化をサポートするJava Module System
第11回 "NIO.2"がやってきた - JSR 203: More New I/O APIs for the Java Platform
第10回 JSR 295: Beans Bindingの参照実装を試す
第9回 けっこう便利! 単位を扱うAPI -- JSR 275: Units Specification
第8回 アノテーションでバリデーション - JSR 303: Bean Validator
第7回 Swing開発の救世主となるか - Swing Application Framework
第6回 JavaBeansのプロパティを同期させるバインディングAPI
第5回 誰よりも早く"Java SE 7"を睨む
第4回 日時情報の取り扱いを改善する JSR 310: Date and Time API
第3回 古いAPIも進化している!? - JSR 919: JavaMail 1.4
第2回 JSR 1 リアルタイムJava仕様
第1回 JCPによって進められるJava関連技術の標準化

もっと見る

提供:マイナビ

会員登録はこちら

大学・大学院・短大・専門学生向けの就職情報サイト「マイナビ2010」「マイナビ2009」に今すぐ登録しよう!  大手企業からベンチャー企業までの約13,000社の企業情報を公開、エントリーが可能です。2010年卒予定の方は「マイナビ2010」に、2009年卒予定の方は「マイナビ2009」に登録してください。

毎日コミュニケーションズはプライバシーマークを取得しています。



人気記事

一覧

イチオシ記事

新着記事