Archive for 7月, 2012
Project Jigsaw: 列車に乗り遅れる
Project Jigsaw: 列車に乗り遅れる
(オリジナルの投稿:現地時間2012/07/17 08:58:00 -07:00)
この記事は Mark Reinhold によって記載されたブログ記事の翻訳です、
Java SE 8 のリリースに伴う重要な変更となる可能性があるため翻訳致しました。
オリジナルの記事:Project Jigsaw: Late for the train
Project Jigsaw の目的は、Java SE プラットフォームに標準のモジュールシステムを設計し実装を行う事です、そしてプラットフォーム自身、そして JDK に対してもそのモジュールシステムを適用します。jigsaw は現在 Java 8 での提供を予定しています。
そして提案した Java SE 8 の開発スケジュールは2013年 9月頃に最終リリースを行うために、5月に主要な機能を完成させるように作業を行っています。進捗は着実に進んでいますが、いくつかの重要な課題が残っています。またプラットフォームの要求に対する重大な変更のような内容に対する、幅広い評価、レビュー、フィードバックを頂くための十分な時間がない事も重要です。そこで、Project Jigsaw を次のリリースである Java 9 への延期を提案したいと思っております。将来にわたる全ての Java SE のリリースを予測可能とするために、今回さらに通常の2年後のリリースサイクルに対して、明示的に目指す事を提案したいと思います。
ゴール:
Java プラットフォームに対する標準のモジュールは、大規模なアプリケーション開発、保守、配布を容易にし、最終的には開発者が JAR の地獄から逃れ、脆弱でエラーが発生しやすいクラスパスのメカニズムからも逃れる事ができます。実際のモジュール対応の Java プラットフォームは設定をカスタマイズする事が可能で、大規模なサーバから小さな組み込み機器までスケールします。長期的にはハイエンドの Java ME プラットフォームと Java SE の融合を可能にします。モジュールプラットフォーム上に構築されたモジュールアプリケーションは、より迅速にダウンロードする事が可能で、含まれるコードの実行時のパフォーマンスをより効率的に最適化する事ができます。
進捗:
これらのゴールに向かって最初の作業は暫く OpenJDK コミュニティの Project Jigsaw で行われます。主要なステークホルダーと共同で記述したドラフトの要求仕様ドキュメントに従って、これまでモジュールシステムの初期設計を行ってき、そしてJDK のモジュール化に使用しました。そして誰もがダウンロードし評価可能なプロトタイプの実装をオープンソースで公開しました。
この進捗状況にも関わらず、いくつかの重要な技術的課題が残っていました。既存コードの互換性を維持しながら Java SE プラットフォームと JDK のモジュール化を実現するためには、仕様と実装の両方を通じて慎重に変更を加えなければならない、とても繊細な作業が求められます。それ以上に Java プラットフォームでサポートしているコンテナに対する設計やプロトタイプに対する実装も必要です。例えば、統合開発環境、Java EE アプリケーションサーバ、アプレットコンテナなどで、これらの全てでそれぞれある程度の量の実装が必要になります。
我々はこれらの問題を抱えていたとしても、システムを動作させる事ができる事を確信していますが、これらを実現するためには、2013 年 5 月には間に合わない可能性が非常に高くなってきました。
時間変更
特定の技術的な課題を乗り越え、時間を先延ばしにする事で、真のモジュール対応 Java プラットフォームを提供する事が重要であり、最終的に全体の Java エコシステムに影響を与えます。そして Java プラットフォーム自身の配備方法を変更するだけでなく、開発者の構築方法、ライブラリ、フレームワーク、ツール、アプリケーションといった配備方法等も変更するでしょう。
そこで、我々は標準の Java プラットフォームモジュールシステムを定義するために、将来の JSR もしくは Java SE 8 プラットフォーム(JSR 337)の中で、さらにはProject Jigsaw のコミュニティ内で、設計と仕様の両方に関する全セグメント領域に渡る所から幅広い評価、検証、フィードバックを得るために十分な時間が必要と考えています。我々は残り10ヶ月という短い期間で実装を完了させるために、全体的に影響を及ぼすような深い変更を試みるべきではないと考えております。
この点で、非常に分かりやすいオプションがあります。Jigsawが完了するまで Java 8 のリリースを遅らせ、おそらく 2014 年の中旬に最終リリースをスリップさせる。もしくは Java 8 のリリースはスケジュール通りに行い、Jigsaw を Java 9 に延期させる。
スケジュールと機能
他の方法で厳しい選択を考えると一般的に、電車が駅を出発する際に、期待する全ての乗客が乗車するまで待つべきか?もしくは電車を先に行かせ、乗り遅れた人に次ぎの電車を待つように伝えるべきか、またその電車は予定通りに正確に出発するか?
私が Java の仕事に携わって以来、開発者、パートナー、顧客が、定期的かつ予測可能な製品のリリースサイクルを強く求めているという事を何度も聞いた事があります。企業が安定性を求める一方で開発者は急速な技術革新を求めています。そして2年周期というリズムはバランスが良いように思います。従って関連する全ての方々(新しい機能に取り組む方、新しい機能を使いたい方)にとって、一定のリリースタイミングに関するリズムを持ち、リリースプロセスに疎結合な革新の継続的なパイプラインとして開発プロセスを構築するので健全ではないかと想定しています。
主要な機能が目的の電車から乗り遅れたとしても、それは大変残念な事ではありますが、世界の終わりではありません。また次の電車がやってきて予定時刻に発車するでしょう。
リリース間隔の重視(ビートを保つ)
私が考える最良の選択は、Project Jigsaw を Java 9 に延期し、隔年のリリースサイクルが前進する事を目指しています。
この計画で進めば Java 8 は 2013 年の 9月頃に時間通りに出荷する予定です。その他の機能である Project Lambda(JSR 335)、新しくなった Date/Time API (JSR 310)、Type Annotations (JSR 308)、そして既に進行中の小さな機能等は予定通り含まれます。
そして、Java 9 は2年後である 2015 年 9月頃で Jigsaw は間違いなく入る予定です。その他まだ未決定の機能も含まれる予定です。その間 Jigsaw の作業はフルスピードで進めます。
Project Jigsaw を 2015 年に延期する事は喜ばしい決定ではありません。しかし最良の選択肢があるようには見えませんでした。そこで本日、私は Java SE 8 (JSR 337) の専門家グループに意見を求めました。