JAM(Java Application Module)キター!!!

Javaでソフトウェア開発を行う際に、今やオープンソースを使わない開発ってのは考えられないですが、そのオープンソース利用の際に困るのがjarファイルのバージョン互換性。
例えばstruts + hibernateなんてのはよくある組み合わせだと思うのですが、それぞれを利用するにはstruts.jarとかhibernate.jarなんかをクラスパス上に置くだけでは動かない。実行に必要な数々のライブラリもあわせてクラスローディングされてないといけない。そうなったとき問題となるのが共通している依存ライブラリのバージョン違い。例えばhibernatestrutsも利用する「antlr.jar」というライブラリがあるのですが、hibernate3.2.6GAに含まれるのが2.7.6でstruts1.3.9に含まれるのが2.7.2。実際バージョンが異なっているのですが、こういう場合、よりバージョンの高い方を採用することになると思います。多分動くだろうという淡い期待のもと。。


ただ、本来あるべき姿でいうと、ライブラリごとに依存性をまとめた状態で配布すべきなんです。例えばhibernateが必要としているモジュールは一式全部まとめた状態で配布し、strutsが必要としているモジュール一式を全部まとめた状態で配布する。でもってhibernateはantlr2.7.6に依存し、strutsはantlr2.7.2に依存しておく。それが出来たらなぁ・・・
と、前振りが長くなりましたが、ついにこれができそうなのが、Java 7の新機能のJAMなんです。
詳しくは以下のサイトで紹介されていますので是非一読あれ。期待が膨らみますなぁ。


http://journal.mycom.co.jp/articles/2007/05/21/jsr277/index.html
http://journal.mycom.co.jp/column/jsr/012/index.html