Java の新たなバージョンである JDK 9 のリリースが約 2 ヶ月後に控えているが、最大の目玉と言っても過言はない Project Jigsaw がコミュニティから No を突きつけられた。この最近の流れを、極力意見を混ぜずに事実を淡々と紹介する。
Project Jigsaw とは
前提
- Java の機能は JSR (Java Specification Request) が JCP (Java Community Process) で承認されて初めて導入される
- Project Jigsaw も例外ではなく JSR 376: Java Platform Module System により JCP の承認プロセスを進めている
- JSR や JCP についての日本語解説は @yy_yank 氏の記事や @miyakawa_taku 氏の資料、浜松氏の資料 が参考になる。
最近の流れ
Project Jigsaw は Draft Releases の期間でした。なお、私は OpenJDK 実装をそれなりに読んでおり、各自の立場から反対意見の要約を示すことができないと思いますので、詳細な内容は紹介しません。詳しくはリンク先を確認してみて下さい。
2017/1/17 - 2/16 Early Draft Review
3/21 - 4/20 Public Review
- 公開審査(Public Rewiew)の名の通り、一般も含めてレビューやコメントを受け付け、 Spec Leadは全てのコメントを受けて検討を行う
- 4/14: Red Hat が反対意見を記事で公開
4/25 - 5/8 Public Review Ballot
- Executive Committee (執行委員会、以下EC) による投票が行われ、Public Review の承認可否判定が行われる
- ちなみにこれが通っても次は Final Release というフェーズに移り最後の投票が残されてる
- 4/28: IBM が JSR 用のメーリングリストで懸念と反対票に投じることを表明
- Concerns with JPMS spec and Jigsaw implementation
- 5/1 に InfoQ にもこの動向が掲載される:IBM and Red Hat to Vote "No" on Java Modules (Jigsaw)
- 5/5: Spec Lead (Oracle, Mark) が記事で反論を掲載
- An Open Letter to the JCP Executive Committee | Mark Reinhold
- 他の EC member に特定企業の利益のために否決されないように冷静な判断を望むという所見を示した
- 5/5: Red Hat がメーリングリストに反対理由について説明を投稿
- 5/8: Mark が上記反対理由について反論
- 5/8: 賛成 10, 反対 13 で否決。賛成票もコメント付きで次回までに改善を望んでいる物が多数でした。
これからどうなるか
JCP で定められている通り、否決された場合は Spec Lead と Expert Group は 30 日以内に EC から提起された懸念に対応するための仕様草案の更新・修正を行い、再び審査投票を実施します。この審査投票でも否決された場合は JSR は終了し、Expert Group は解散されます。
ただ、JDK 9 のリリース予定日が 7/27 と差し迫っている中、懸念に対する仕様変更はまだしも、その実装は更に時間がかかる可能性が高く、リリースにも影響が及ぶことは十分に考えられる状況です。現在はまだ投票結果が出たばかりなので、今後の動向に注目していく必要があります。
追記
追記1:Jigsaw 否決の内情について
EC member は全団体が頭ごなしに No と表明しているわけではありません。その一例として Tomitribe のコメントを紹介します。
Though a No vote feels like rejection we ultimately believe it is the most supportive vote for gaining a greater level of consensus we believe is necessary from a JSR, while still keeping time pressure.
Jigsaw における技術的な課題について指摘している団体もおりますが、懸念について駆け込み的に対応しようとした Expert Group とのコンセンサスの取り方について疑問を持ち、最初の投票で Yes と投じにくいと判断した団体も多くいるようです。各団体のコメントは投票結果のページから確認ができます。
追記2: JDK 9 の JSR
JDK 9 も同じタイミングで JSR 379 Java SE 9 Release Contents にて JCP の承認プロセスを実施していますが、こっちは賛成多数で可決しました。