InfoQはこれまでにも、一般に“Project Jigsaw”と呼ばれているJSR 376 - the Java Platform Module Systemについて、その開発状況を報告してきた。今回、非常に珍しい動きとして、IBMとRed Hatの両社が、現在の形式のJigsawに対して“反対”票を投じることを公表した。
このプロジェクトはJavaの標準モジュールシステムを実現しようという試みで、元々はJava 7にスケジュールされていたが、Mark Reinhold氏によるプランBの発表後にJava 8へと移行された。2012年7月にはOracleによってさらに延期され、Java 9へと移行したが、Jigsawの複雑さと広範なテストの必要性のためにこのスケジュールさえも遅れている、というのが現状だ。
Jigsawのスコープは素晴らしい。モノリシックなJavaランタイムをモジュール化するだけでなく、強力なカプセル化を実現することによって、Javaコードからプラットフォームライブラリへのアクセスを、公開インターフェース経由のみに制限しようとしている。単に他のモジュール内部へのリーチを不可能にするだけではないのだ。
それだけではない。Oracleはこのモジュールシステムを、アプリケーションコードで使用するのみならず、JDK自体にも採用しようとしている。この目的のためにJSR 376専門家グループは、アプリケーションレベルのモジュラリティに加えてJDKについても、あらゆる面から議論を重ねてきた。
標準化プロセス以外にも、Jigsawとスコープ上の重複範囲を持った2つのメインモジュール実装が存在する。Red HatのJBossモジュールと、IBMを含むベンダのコンソーシアムによって見直しの進むOSGiである。
これらのベンダはいずれも、Javaのメジャーバージョンなど“プラットフォームリリース”の構成項目を含む、Javaの新たな標準をすべて承認する責を負う、Java Community Process Executive Committeeの25社のメンバの一部である。このようなリリースは、2/3の賛成を持って承認されることが必要とされている。
OpenJDKメーリングリストで両社の決定を発表したIBMのTim Ellison氏は、次のようにコメントしている。
JSRが現時点においてもまだ、公開レビューを終えて次の最終提案に進む手筈ができていない、という私たちの現状を考慮した結果として、IBMも反対票を投じます。
仕様に関する現在の公開レビュー草案に対して、JSR 376専門家グループと一般ユーザから指摘されている問題点や懸念は妥当なものであり、さらなる議論と解決が必要なことは間違いありません。メーリングリストに文書化された問題に対処するために、私たちは、専門家グループの全メンバによる作業の継続を提案します。
本仕様を次の段階に進める前に、IBMとしては、専門家グループ全体のコンセンサスをより深めたいと考えています。
Ellison氏のこの投稿は、氏とMark Reinhold氏、Scott Stark氏(Red Hat)との間で個人的に交わされた文書に対する返信であると思われる。Stark氏のコメントは、
現時点では、Red Hatは、JPMSのこの公開プレビュー草案の承認には投票しません。Javaコミュニティにとって最も利益になるものではないからです。
問題なのは、IBMやRed Hatが提供する既存のシステムとJigsawとの、完全な相互運用の実現が難しいことだ。しかしながら、どちらのシステムも市場ではそれほど有力でないため、影響を受けるものにとって苦痛はあるものの、大部分のJavaプロジェクトは、これら非互換性の影響を受けることはない。
しかし、Jigsawの問題は、OSGiやJBossモジュールだけには留まらない。Javaの世界において、コードのパッケージングおよび配布ステムとして支配的なのはMavenだ。Jigsawは、Mavenベースのプロジェクトが、JARファイルにパッケージされたコードからモジュールに移行するためのアップグレードパスを提供していない。
懸念事項の詳細については、Red Hatが社外のMaven専門家とともに著した共同文書に記されている。Mavenの最も大きな役割は“自動モジュール”であると理解される。従ってコミュニティの大多数にとっては、Mavenに関わる状況の方が、現存するベンダのモジュールシステムとの互換性よりもはるかに大きな問題となる可能性があるのだ。
London Java Communityのリーダである(JCP Executive Committeeの投票メンバでもある)Martijn Verburg氏は、InfoQに次のように語っている。
ECメンバがこの早い時期に、これほど公式に、投票の意思について発言するのは異例のことです。これはJPMSと事実上のJigsawの実装に関して、Javaエコシステムの主要企業が重大な懸念を持っていることの証拠です。モジュール仕様と実装は、これまで、Javaのセキュリティ改善とランタイムのコンパクト化に大きな役割を果たしてきましたが、他の一般的なモジュールシステムとのギャップを埋めるツールの構築にはいまだ至っておらず、事の是非は別としても、JavaプラットフォームにPython2/3の時の断絶のような不安を引き起こしています。
Javaの新バージョン開発サイクルのこれほど遅い時期において、ここまであからさまな意見の不一致と強い反対があるというのは、まったく前例のないことだ。今回の投票は公開レビューに対するものであって、最終的な批准投票ではないにせよ、これは明らかに危険信号である。
Java 9のデリバリに関してOracleが発表しているタイムラインは、他ベンダやコミュニティの表明している見解と衝突することになるようだ。方向性を変えてJava 9の提供を再度遅らせるのか、あるいは主要ベンダやコミュニティ参加者の反対を押し切ってでも自らのモジュール化バージョンを強行するのか、現時点では明らかになっていない。
この記事を評価
- 編集者評
- 編集長アクション