【レポート】
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はビュー層に加えてコントローラ層の機能も持つ。つまり、コントローラからビジュアル層までを有機的に統合し、モデル層の情報を利用することが出来る技術といえる。
JSFを使った典型的なアプリケーションの構造としては、JSFのタグライブラリで拡張されたJSPによりWebインタフェース層を記述、Managed Beanと呼ばれるJava BeansとXML設定ファイルによりコントロール層を実装することとなる(以下、特に断りのない場合はこの構造を前提に話を進める)。JSFの実装においてはJSPのサポートが必須となる。
ここでStrutsとの相違点を1つ挙げるならば、Strutsは相性の良いテクノロジとして主にJSPをインタフェースに用いるが、JSFではJSP以外のテクノロジの利用もあらかじめ考慮されているということだ。例えばJakarta TapestryやMayaaで行われているような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などといった一般的なエディタがあれば問題ない。EclipseやNetBeans、Oracle JDeveloperなどのIDEを使っても良いだろう。筆者はIntelliJ IDEAを利用している。それぞれに特徴があり、相性の良いアプリケーションサーバ、デベロッパに要求されるスキルなどが異なってくる。使ってみてしっくり来るものを選べばよいだろう。- Javaについての基本知識
本稿の目的はJSFの紹介である。このためJavaの基本知識やJava EEアプリケーションのパッケージング方法などはカバーされない。とはいえ、ともにSunのサイトで得られる基本的な知識さえあれば問題ない。
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
9ストーリーズ ~バレンタインのエピソード~ [08:05 2/11] キャリア |
|
RX-7改フェラーリ登場!/マジックRX-7XX 【大阪オートメッセ2012】 [08:04 2/11] キャリア |
|
【連載】鉄道トリビア 第137回 山手線と京浜東北線から●●●が消えた!? [08:00 2/11] ライフ |
|
JRグループ、「周遊きっぷ」を見直し - 19の周遊ゾーンが3/31で販売終了に [07:30 2/11] ライフ |
|
「青春18きっぷ」春季用は2/20発売 - 夏季用・冬季用の発売は現時点で未定 [07:30 2/11] ライフ |