JDKのモジュール化に関する以前の投稿(リンク) (InfoQ既報 (参考記事・英語))に対する続報として、Mark Reinhold氏がOpendJDK(リンク)プロジェクトの一部であるJigsawプロジェクト(リンク)を発表した。発表内容によると、
来年頃にJDK7をモジュール化するため、そして、JSR294の成果を活かすため、まもなくSun社はOpenJDKのコミュニティ内にJigsawプロジェクトを立ち上げる提案をするでしょう。
その成果として、当然のことながら、JDKのモジュール化という狭いゴールに焦点を当てた設計に基づくシンプルで低レベルなモジュール・システムが完成するでしょう。このモジュール・システムは開発者が自身のコードに適用することも可能で、Sun社もサポートするでしょうが、Java SE 7仕様に公式に取り込まれることはなく、他のSE 7実装でサポートされることもないでしょう。
もし仮にJava SEプラットフォームのこれ以降のバージョンで特定のモジュール・システムが含まれることになるとしたらSun社がJigsawモジュールをその標準モジュール・システムに移行するための手段を提供することでしょう。差し当たって私たちは他のモジュール・システム、特にOSGi、との互換性を保つ方法を模索しています。
現在定められているゴール - JDKのモジュール化 - は達成されるだろう。というのも、Apache Harmony(リンク)が(OSGiのマニフェストを使って)既にJDKはモジュール化可能であるということを実証しているからである。しかし、このゴールはまた別の理由で興味深い。一連の作業はJCPの外で行われているのである。
JSR 277(リンク)は可視化された進捗状況がなく、密室での実装というのは他の人が開発への参加したり影響を与えることを難しくするということを示した。このようなことはしばしば標準化を間違った方向へと導くのである。あまりにも詳細な実装方法に焦点を当て過ぎ、互換性の高さを忘れることになるのである。それだけに留まらずその標準というのは事後に記述されたので、ある問題(奇妙なバージョン番号(リンク)の問題のように)の解決方法が決まった時には既に遅すぎるという状態になっていた。この投稿によるとJSR277は「保留」状態のようであるが、実際には死んでいるも同然である。
JSR294(リンク)(以前はスーパー・パッケージ、現在はモジュール(リンク)と呼ばれる)をJSR277から分離するというのは素晴らしい判断だったでしょう。このことは、モジュール化を成し遂げるための言語仕様の変更はどの特定のモジュール化プロセスからも独立しているということを意味する。
この投稿によってOSGiは既にモジュール化におけるデファクト・スタンダードとして利用されていて、OSGiとの協力がとてもいいことであるということも示されている。このことはJigsawがOSGiをベースにするべきであるということを意味する訳ではない。実際、OSGiがJigsawと異なる方向へ向かうのではなく、共に歩んでいくことを提案している。
OSGi もしJSR 277のJAMモジュール・システムがJDKのモジュール化に相応しくない基盤であるなら、OSGiフレームワークはどうでしょうか?このモジュール・システムは十分に成熟、安定し、強固なものです。コア部分は既にJava仮想マシン上に、Apache Harmonyとして、実装されています。OSGiはJava言語とは統合されていませんが、Java SEプラットフォームの中ではなくて、その上に構築されています。
この最後の問題については修正されるかもしれません。Sun社は直接OSGiアライアンスと取り組んで、OSGiフレームワークの将来のバージョンではJSR 294の機能を実装する計画で、それによって(Java)言語とより統合されるでしょう。
私は、いくつかの変更は提案されているものの、将来OSGiでJSR 294のモジュールを扱うことが出来るようになると確信している。いずれにしても、来週のDevoxx 08(リンク)で話される「Javaにおけるモジュール化(リンク)」はJavaの将来を掲示するものとなるだろう。
原文はこちらです:http://www.infoq.com/news/2008/12/jigsaw-jsr277-dead