I-16-3. Webアプリケーション構築で利用できるOSSフレームワーク

オープンソースによるWebアプリケーション開発フレームワークを紹介する。Struts、JSF、IBATIS、Hibernate、Seasar II、Springといった代表的なフレームワークを紹介し、それぞれの開発内容の違いについて解説する。

【学習の要点】

* StrutsはJavaのWeb MVCフレームワークとして広く利用されている。

* HibernateはJavaのO/Rマッピングフレームワークとして広く利用されている。

* IBATISはHibernateなどと異なりSQLを直接記述できるので、柔軟なデータベースアクセスが可能である。

* Seasar2は国産のDIコンテナで、日本語ドキュメントが非常に豊富である。

図I-16-3. 開発フレームワークの主なOSS実装

【解説】

1) OSSのWeb MVCフレームワーク

* Struts(Apache Struts) http://struts.apache.org/

Strutsは、ServletとJSPの技術を用いてWebアプリケーションを開発する際に利用する、Web MVCフレームワークで、Apacheソフトウェア財団のトップレベルプロジェクトとして開発が進められている。Strutsを利用してWebアプリケーションを開発する際には、Model部分であるActionクラス、View部分であるJSPページとViewに埋め込まれるActionFormクラスを作成し、これらの関連をXMLの設定ファイルに記述する。

* JSF(JavaServer Faces) http://java.sun.com/javaee/javaserverfaces/

JSFは、JSR(Java Specification Request)に定められたJavaにおけるWeb MVCフレームワークの標準仕様である。JSFでは、Webページ表示を構成するコンポーネントをUIコンポーネントと呼び、高度に抽象化されている。また、標準でJSPカスタムタグライブラリを提供しているが、View部分にJSPを強制するわけではなく、別のものに置き換えることも可能である。JSFの代表的なOSS実装は以下の通りである。

- Sunの参照実装 http://java.sun.com/javaee/javaserverfaces/download.html

- Apache MyFaces http://myfaces.apache.org/

- ICEFaces http://www.icefaces.org/main/home/index.jsp

2) OSSのO/Rマッピングフレームワーク

* Hibernate http://www.hibernate.org/

Hibernateは、オブジェクトのプロパティと関係データベースのカラムとのマッピングをXMLで記述しておくことで、O/RマッピングをHibernateに移譲できる。

* IBATIS http://ibatis.apache.org/

IBATISはApacheソフトウェア財団のトップレベルプロジェクトとして開発が進められている。Hibernateなどと異なり、SQL文と、そのSQL文を呼び出すメソッド名、およびSQL文の実行結果として取得された結果セットのマッピング先クラス名をXMLで記述し、O/Rマッピングを実現する。SQL文を直接記述できるため、柔軟なデータベースアクセスを行いつつ、ソースコードからはインピーダンスミスマッチの問題を排除できる。

3) OSSのDIコンテナ

* Seasar2 http://s2container.seasar.org/

Seasar2は、DIとAOP(アスペクト指向プログラミング)をサポートした軽量コンテナである。O/RマッピングフレームワークであるS2DaoやS2JDBCや、JSF実装のTeedaなど、サブプロジェクトで連携先エンジンが開発されているほか、S2JSFやS2Struts、S2Hibernateなどを使用することにより、他のエンジンとシームレスに統合できる。設計思想としてLess Configurationを掲げており、大抵のアプリケーションで同様であろう部分は、極力設定をしなくても動作するように意識されている。国産であるため、日本語ドキュメントが非常に豊富である。

* Spring Framework http://www.springframework.org/

Spring Frameworkは、DIとAOPをサポートした軽量コンテナで、JDBCによるデータベースアクセスを抽象化するレイヤやMVCフレームワークを内包している。またStrutsやHibernateとの連携機能を持つ。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。