■ 2/3 14:15-15:00 【オープンソース】軽量Javaへの潮流



●[プレゼンター]日立ソフトウェアエンジニアリング株式会社 研究部 技師 EJB
コンポーネントに関するコンソーシアムオープンソース研究会副主査 河村嘉之
●[説明]J2EEの開発の流れにいま大きな変化が起こっています。この講演では、
軽量コンテナとしてSpring Framework、ORマッピングツールとしてHibernate
用いながら、J2EEアプリケーションの開発に起きている新しい流れを紹介します。


●[話を聞いてみて]
ほぼ半分は用語解説で終わるセッション。
J2EE5.0開発の今後の流れとしては、
J2EE5.0、POJOO/Rマッピングツール+何らかのフレームワークという組み合わ
せが主流となりそうだ。
注目キーワードが次々と飛び出す派手なセッションだった。



参加者からの質問では、「河村さんは本当に具体的に実務を知っているのか?」
というような内容のことをやんわりと突っ込まれていた。


●[セッション記録]
EJBコンソーシアムの紹介。
http://www.ejbcons.gr.jp/indexn.html
EJBはコンテナマネージメントが大変面倒で、テストしにくかった。


軽量コンテナの特徴。
1 POJOを利用している。
POJOとは特定のクラスとかインターフェースを引き継いでいないシンプルなJAVA
オブジェクトのこと。自分の知らない所でどんな継承がされているかわからない
オブジェクトを使わずに済む。


2 IoC/'DIのサポート
オブジェクトをコンテナが生成し、呼び出しもコンテナ側から行う。オブジェク
ト間の結び付けもコンテナが担当するというしくみ。


3 AOPのサポート
アスペクト志向プログラミングのこと。
http://www.race.u-tokyo.ac.jp/~yoshimi/AOP/index-j.html#abstraction


また、軽量JAVAO/Rマッピングツールと協調して動かすことになるだろう。
O/Rマッピングツールは定型的なDB操作のコードを書く手間を削減してくれるもの。
「Statement st = hogehoge」といった定型文を書かなくて済む。


http://www.stackasterisk.jp/tech/java/hibernate01_01.jsp
O/Rマッピングツールを用いることで、データベースに対して直接オブジェク
トを入れたり、取り出したりする感覚でデータベースを操作することができるよ
うになります。 」とのこと。


HibernateO/Rマッピングツールの一種で以下のような特徴をもつ。
1 POJOで動く。
2 HQLが使える。
3 XMLjavaオブジェクトをRDBのテーブルとマップする。


SpringフレームワークHibernateの組み合わせがオススメ。
ただし、Hibernateを使うと新たにXMLを記述しなければならないので、コード量
は85%くらいしか減らない。
またXDocletも組合わせることになるだろう。
XDocletとはコード自動生成ツールである。
http://www.atmarkit.co.jp/fjava/rensai2/jakarta03/jakarta03.html


Springフレームワークを使ってテストをすると従来の問題を解決することが出来る。
1 コンテナにデプロイしなくてもテスト出来る。
2 お互い依存していて、どこをテストしているかわからないということがなく
なる。
3 CactusやJunitEEに比べてシンプル。


また、Springフレームワークなどの軽量コンテナを使うと、
1 デプロイしなくてもテストできる。
2 軽量コンテナによってクラス間を疎結合に保てるので、テスト範囲が明確に
なる。
というメリットがある。


「J2EE5.0になってもO/RマッピングPOJOを中心にした何らかのフレームワーク
を使ったシステムが中心になると予測される。」

●[参考資料]
Spring Frameworkとは、 「Spring Framework 覚書き」
http://hamasyou.com/archives/Engineer-Soul/springframeworkneooiaieaadiioceeocoeijta.php


アメリカではほとんどデフェクトスタンダードとなっているSpringはとても抽象
化した方法で、
トランザクション管理を行います。抽象化というのは実装に依存していないとい
う意味です。


Seasarとは
EJBコンテナへのアンチテーゼとも言うべき設計思想を持つオープンソースの軽
量コンテナである。
http://itpro.nikkeibp.co.jp/free/JAV/J2EE/20040412/1/


Spring Frameworkとは、
http://www.techscore.com/tech/Java/Spring/1.html


Spring FrameworkJ2EEシステムデザインの作者でもあるロッド・ジョンソン
らが作ったフレームワークである。
http://muimi.com/j/aop/spring/


「また他のフレームワーク?」
http://www.andore.com/money/trans/spring_ja.html#doc1_30
Springは潜在的にワンストップであり、
典型的なアプリケーションに関連するほとんどのインフラに用いることができる。
もはや他のフレームワークは必要ない。


軽量コンテナとはここでは、属するレイヤの異なるコンポーネント(Webフレー
ムワークとかデータアクセスとか)を組み合わせるコンテナをいう。


JunitとはJava開発環境でUnitテストをするためのフレームワークのこと。
JbossとはオープンソースJavaアプリケーション・サーバのこと。(Tomcatとか
Webspereと同じジャンルである)