【レポート】

Java EE 5時代のアプリケーション開発の鍵 - JSFとは?

1 JSFとは

    大野晋一  [2006/01/01]

    Java EE(現J2EE)とはJSRとして標準化された多くの技術の集合であり、その組み合わせもまたJSRとして標準化されたものである。JSR 244として策定の進む次期Java EE 5では、EJBのバージョンアップなど多くの話題があるが、新たにJava EE標準として追加されるJSFも注目される。

    JSFとはJava-Server-Faces(正式な表記はJava ServerFaces)の頭文字を取ったもので、"faces"とつく名前からも解るように3層のMVC Web開発においてビジュアル層を表現することができる。Sunでは、"JavaServer Faces technology simplifies building user interfaces for JavaServer applications. "(JavaServer Faces Technologyより引用)と表現しており、いわゆるEoD(Ease of Development)を意識したものであることが解るだろう。

    そして、JSFはビュー層に加えてコントローラ層の機能も持つ。つまり、コントローラからビジュアル層までを有機的に統合し、モデル層の情報を利用することが出来る技術といえる。

    Freedom of choice

    JSFを使った典型的なアプリケーションの構造としては、JSFのタグライブラリで拡張されたJSPによりWebインタフェース層を記述、Managed Beanと呼ばれるJava BeansとXML設定ファイルによりコントロール層を実装することとなる(以下、特に断りのない場合はこの構造を前提に話を進める)。JSFの実装においてはJSPのサポートが必須となる。

    ここでStrutsとの相違点を1つ挙げるならば、Strutsは相性の良いテクノロジとして主にJSPをインタフェースに用いるが、JSFではJSP以外のテクノロジの利用もあらかじめ考慮されているということだ。例えばJakarta TapestryMayaaで行われているようなHTMLへのインジェクションも可能だし、Macromedia Flexを利用してFlashをインタフェースに使うといったことも容易に行うことが出来る。この点はRich Application Interfaceの注目される現在のシステムに適合するという意味で、JSF採用の大きな理由となりえる。

    実装については後述するが、JSFはプラガブルな構造となっている。上述したインタフェースの取り替え以外にも、コントローラ層も同様に取り替えが可能だ。また、ビジネス層やモデル層についての制約も無い。Springを用いても良いし、JSFとともにJava EEの標準となるEJB 3.0を用いても良いだろう。

    こういったビューやモデルを強制しないというJSFの自由さは、まさに「今風」であり、Java EEに標準化されたという点もあわせて今後のメインストリームとなりうる条件を備えている。

    本稿ではJSFの概要を解説しながら、Java EE 5時代のアプリケーション開発におけるJSFの位置づけを探る。まず最初にJSFの構造について概要を示しながら実現される機能とカバーする範囲、そしてその特徴を把握する。次に実際に極シンプルなJSFアプリケーションを実装しながらJSFアプリケーションの構成要素を理解する。さらにEJB 3.0と組み合わせることでJava EE 5時代のアプリケーション開発をシンプルな形で体験する。本稿を通してJava EEの実現するシンプルさと、これに寄与するJSFのスマートさを体感して欲しい。

    用意しておくもの

    本稿では2つのサンプルアプリケーションを実際に示すことになる。手元でこれらを実装したいという場合、以下のものが必要だ。筆者が使っている組み合わせはJava SE 5/Apache MyFaces 1.1.1/JBoss AS 4.0.3 SP1/IntelliJ IDEAだが、好きなものを選んで欲しい。できるかぎりこれらに依存しない記述を心掛けたつもりだ。
    • Java SE 5(JDK 1.5)
      Sun Microsystemsから提供されるJava SE 5。JSFの利用にJDK 1.5が必要というわけではないが、EJB 3.0を利用するサンプルでは必須となる。JREではなくJDKを用意すること。
    • JSFの実装
      現在利用できるJSFの実装については主なものを後述するが、本稿ではApache MyFacesのバージョン1.1.1を利用する。
    • Web ContainerもしくはJ2EE Container
      本稿ではJSPを通じてJSFを利用するため、Web Containerが必須。ここではJBoss Application Server 4.0.3 SP1を利用している。ただし、同梱されているHibernate関連のライブラリはHibernate Core 3.1/Hibernate Annotations 3.1 beta 7/Hibernate EntityManager beta 5に入れ替えている。
    • エディタなど
      開発環境についてはemacsやviなどといった一般的なエディタがあれば問題ない。EclipseNetBeansOracle JDeveloperなどのIDEを使っても良いだろう。筆者はIntelliJ IDEAを利用している。それぞれに特徴があり、相性の良いアプリケーションサーバ、デベロッパに要求されるスキルなどが異なってくる。使ってみてしっくり来るものを選べばよいだろう。
    • Javaについての基本知識
      本稿の目的はJSFの紹介である。このためJavaの基本知識やJava EEアプリケーションのパッケージング方法などはカバーされない。とはいえ、ともにSunのサイトで得られる基本的な知識さえあれば問題ない。

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン