InfoQ が以前に報じたように,Oracle が計画する Java モジュール化フレームワークである Project Jigsaw は Java 9 まで延期される見込みである。Mark Rainhold 氏が先週行った 発表 に対して,しかし Java エコシステムのすべての開発者たちの反応は迅速だ。Jigsaw は当初,2011 年の Java 7 において公開される予定だったものだ。それが Java 8 に延期され,今回さらに 2015 年まで延期されることになった。
Mark Reinhold 氏のブログに対する反応は,大きく3つのグループに分かれている。
- 早期リリース,頻繁なリリースという意味で,アジャイル開発として適切な判断である。Jigsaw が遅れているならば次のリリースまで延期して,Java 8 を予定通り公開するべきだ。
- Jigsaw のない Java 8 では,それが書き込まれているディスクほどの価値もない。Jigsaw のリリースを待つべきだ。
- Jigsaw はすでに2回延期されている。いつになったら公開されるのか,分かったものではない。Oracle は Jigsaw を諦めて,既存のテクノロジに重点を移すべきだ。
Project Jigsaw が目標とする要件は2つある。
- Java プラットフォームを独立した個別のモジュールに分割して,必要に応じて取捨選択できるようにすること。
- モジュール化されたアプリケーションを構築し,提供するためのプラットフォームを提供すること。
今回のニュースに対する反応は,これら両極のどちらに依存するかによって異なっているようだ。
Java アプリケーションのモジュール化フレームワークとして OSGi がすでに十分確立していると考える OSGi 支持者たちは,Oracle の選択した方向性に不満を持っている。
OSGi の元テクニカルディレクタ Peter Kriens 氏は InfoQ に対して,モジュール化の実現を待つことは止めて OSGi に移行する時期に来ている,と語った。
Sun/Oracle が "ここで開発されたものではない" シンドロームの実践に7年間も浪費することがなかったななら,今よりもはるかに建設的な成果を得られたに違いありません – OSGi の採用が叶わなかったのが彼らの不安や確信のなさ,疑念の結果であることは明らかです。今回の新しい "計画" が実施されれば,2015 年頃には VM の (限定的な) モジュール化が実現されるでしょう。結果として JSR 277 以降の 10 年間,OSGi 設立後の 17 年間という貴重な歳月が,すべて無駄になってしまうのです。モジュール化のメリットを期待してこれまで Jigsaw を待っていたのならば,今こそ OSGi を採用すべき時です。他に代替手段は存在しませんし,ツーリングも bndtools で大きく改善されています。
OSGi でエンタープライズエキスパートグループの議長を務めた Eric Newcomer 氏は,可能だったかも知れない他の選択肢について話してくれた。
私たちは4年前に,Jigsaw 関係者に共同作業の提案をしました。彼らはそれを辞退しました。今になって私は,その時の不幸な意思決定の対価をすべての人たちが負うことになるのではないか,と心配しています。
モジュール性は (Jigsaw の関係者も認めているように) 本質的に難しい問題です。汎用的なソリューションとして OSGi を使用することの可能性について,彼らが真剣に評価を行ったとは思えません。
OSGi エキスパートである Paremus Ltd の Neil Bartlett 氏は,今回の件を 機会逸失 と捉えている。
少なくとも 2015 年まで,私たちはモジュール化 JRE のメリットを得られなくなったのだと思います。OSGi を使用している開発者にとっても,その他の Java プラットフォームで開発を行っているすべての人々にとっても,これはとても残念なことです。そもそも JRE が必要なコア機能に分解可能であることを望まない人がいるでしょうか。現在の JRE に OSGi を対応させる方法にも,いまだ多くのニーズが存在しています。JRE がモジュール化されれば,OSGi バンドルから JRE に対して,特定のバージョンのモジュールセットを要求するようなことも可能になるでしょう。逆にバンドルで使用されている API が所定のものに限られていることをコンパイル時に検証することも可能でしょう。バンドルを提供するために必要な JRE モジュール決定するために,OSGi R5 レゾルバを使用することもできるかも知れません。 私は今でも,将来的にこのポイントに到達できることを願っているのです。
Eclipse 財団のエグゼクティブディレクタである Mike Milinkovitch 氏から寄せられた意見は,もっと深刻なものだ。
モジュール化モデルとそれ自体のモジュール化の両方が,Java プラットフォームに対して大きなメリットのあることは確実です。この重要な成果が 2015 年まで延びてしまったのは残念なことです。特に心配なのは,これが組み込みとモバイルにおける Java のロードマップに影響するのではないか,という点です。圧倒的な速さで急成長を続けているこれらのセグメントにおいてさらに2年遅れるということは,Java 自体の通用性と妥当性に疑問を投げかけることになります。組み込みおよびモバイル開発者にとって魅力的なビジネスや技術的ストーリを持たないプラットフォームはすべて,次第に不適切なものになっていくリスクにさらされているのです。
一方でこの遅延は,"その他" の Java モジュール化技術に活躍の機会を与えてくれるものでもあります。OSGi が長期的に生き残るためには改善が必要です。この2年は,OSGi 支援者にとっての執行猶予期間でもあるのです。特により多くの Java 開発者を OSGi コミュニティに惹きつけるためには,ツールとユーザビリティに関する開発のステップアップが求められます。
Elipse はこの件のすべてから大きな影響を受けます。Java 開発者の 60 から 70% が Eclipse を使用しているからです。さらに私たちのコミュニティでは,OSGi を Eclipse プラグインモデルの土台として使用することも決定しています。2つのテクノロジが今後も安泰であり続けることは,Eclipse コミュニティの将来にとっても重要であることは確実です。
一方で Oracle の開発担当 VP である Cameron Purdy 氏は,アジャイルの立場から 次のように述べている。
Jigsaw のリリースが遅れるのは残念ですが,適切なリリースが行われることが重要です。そのための延期であれば,それもよいでしょう。中途半端なものを Java に急いで盛り込む方が,遙かに罪なことだと思います。そもそも事を正しく行おうとするとき,予想以上に時間が掛かるのは当然なのです。
共通するテーマは,こうなった以上,他に何が期待できるのかということだ。Markus Karg 氏が Reinhold 氏のブログへコメントで,それを うまく表現している。
すでに JDK 7 から外されたJigsaw をさらに JDK 8 から外すというのは,ちょっとおかしな話です。次はどうするのでしょう? 9 の次は 10,10 の次は 11 なのでしょうか? あきらめて Maven を使ったらどうですか。すでに完成していますし,ちゃんと動きますよ。
Spring Source で Groovy 開発を指揮する Guillaume Laforge 氏は 次のように語っている。
Groovy 2 で私たちは,過度にモジュール化を進めることをしませんでした ... 次期 Java 8 に含まれるはずのものとは,重複したくなかったのです。しかし今,この先2年間はそれが開発者の手に入らないことになりました。製品に反映されるのはさらに3年後でしょう :-( 要するに Jigsaw が開発に供されるようになるのは,本当に公開されるならばですが,5年以上先になる,ということです。いくら機能やタスクが大きいとは言え,これは長すぎます。
Kirk Knoernschild 氏は Oracle に対して,検討すべき実践的なアドバイスをいくつかツイートしている。
冗談はさておき,Java 8 でモジュールシステムをリリースせずに Java 9 で JDK をモジュール化するというのはどういうことでしょう。2つ同時にリリースするつもりなのでしょうか?
人々の失望は明らかだ。Oracle が Project Jigsaw をリリースするまでの間,開発チームはそれを待つか,あるいは何らかの代替策を採用するかの選択を迫られることになる。