■ 2/3 14:15-15:00 【オープンソース】軽量Javaへの潮流
●[プレゼンター]日立ソフトウェアエンジニアリング株式会社 研究部 技師 EJB
コンポーネントに関するコンソーシアムオープンソース研究会副主査 河村嘉之
●[説明]J2EEの開発の流れにいま大きな変化が起こっています。この講演では、
軽量コンテナとしてSpring Framework、ORマッピングツールとしてHibernateを
用いながら、J2EEアプリケーションの開発に起きている新しい流れを紹介します。
●[話を聞いてみて]
ほぼ半分は用語解説で終わるセッション。
J2EE5.0開発の今後の流れとしては、
J2EE5.0、POJO、O/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
また、軽量JAVAはO/Rマッピングツールと協調して動かすことになるだろう。
O/Rマッピングツールは定型的なDB操作のコードを書く手間を削減してくれるもの。
「Statement st = hogehoge」といった定型文を書かなくて済む。
http://www.stackasterisk.jp/tech/java/hibernate01_01.jsp
「O/Rマッピングツールを用いることで、データベースに対して直接オブジェク
トを入れたり、取り出したりする感覚でデータベースを操作することができるよ
うになります。 」とのこと。
HibernateもO/Rマッピングツールの一種で以下のような特徴をもつ。
1 POJOで動く。
2 HQLが使える。
3 XMLでjavaオブジェクトを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 Frameworkは J2EEシステムデザインの作者でもあるロッド・ジョンソン
らが作ったフレームワークである。
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と同じジャンルである)