[Java] Project Jigsaw: Modular run-time images

原文はこちら。
http://mreinhold.org/blog/jigsaw-modular-images

以前投稿したように、Project Jigsawがいくつかのステップを踏んでJDK 9に組み入れられています。
Project Jigsaw: Phase Two
http://mreinhold.org/blog/jigsaw-phase-two
Project Jigsaw
http://openjdk.java.net/projects/jigsaw/
JDK 9
http://openjdk.java.net/projects/jdk9/
JEP 200ではJDKのモジュラー構造を定義し、JEP 201ではJDKのソースコードをモジュラー型に再編成し、そしてJEP 220ではモジュールをサポートするようにJDKおよびJREランタイムイメージを再構成します。実際のモジュールシステムはJSR 376(現在作業中)で定義し、対応するJEP(まだ発行されていません)によって実装される予定です。
JEP 200: The Modular JDK
http://openjdk.java.net/jeps/200
JEP 201: Modular Source Code
http://openjdk.java.net/jeps/201
JEP 220: Modular Run-Time Images
http://openjdk.java.net/jeps/220
Java Platform Module System JSR (376)
http://openjdk.java.net/projects/jigsaw/spec/
ソースコードの再編成(JEP 201)は今年の8月に実施しました。このステップは計画的なものであって、開発者やエンドユーザーには影響はありませんでした。モジュラーランタイムイメージ(JEP 220)に対するほとんどの変更が先週後半に統合され、JDK 9早期アクセス版ビルド41でご利用頂けるようになっています。
JDK™ 9 Early Access Releases
9 Build b41
https://jdk9.java.net/download/
このステップはソースコードの再編成とは対照的に、開発者やエンドユーザーにとって大きな影響が及ぶことが想定されます。この作業の詳細はJEP(JEP 220)に記載されていますが、以下に主要な点を書き出しておきます。
  • JREとJDKイメージには現在、理想的な構造が存在します。以前はJDKイメージはJREをjreサブディレクトリに埋め込んでいましたが、現在はJDKイメージは、はからずも開発ツールや以前からJDKにあったその他のアイテムの完全なセットを含むシンプルなランタイムイメージです。
  • ユーザーが編集可能な構成ファイルは以前libディレクトリにありましたが、これは今後は新たなconfディレクトリにうつります。libディレクトリに残るファイルはランタイムシステムのプライベートな実装の詳細であり、開いたり、変更したりするべきではありません。
  • エンドースド・オーバーライド機能(Endorsed Standards Override Mechanism)は削除されました。
    Java Endorsed Standards Override Mechanism
    http://docs.oracle.com/javase/8/docs/technotes/guides/standards/index.html
    この機能を利用しているアプリケーションは、java.endorsed.dirsシステムプロパティを設定するか、もしくはjarファイルをJREのlib/endorsedディレクトリに配置しなければ動作しません。同様の機能をJDK 9の後期でupgradable modulesとして提供する予定にしています。
    Upgradeable modules
    http://openjdk.java.net/projects/jigsaw/goals-reqs/03#upgradeable-modules
  • 拡張機能メカニズム(extension mechanism)は削除されました。
    The Extension Mechanism
    http://docs.oracle.com/javase/8/docs/technotes/guides/extensions/index.html
    この機能を使っているアプリケーションは、java.ext.dirsシステムプロパティを設定するか、もしくは以前拡張としてインストールしたjarファイルをJREのlib/extディレクトリに配置しなければ動作しません。ほとんどの場合、jarファイルは拡張として以前インストールされているので、それらをクラスパスの前に単に結構です。
  • rt.jartools.jardt.jarという内部ファイルは削除されました。これらのファイルの中身は現在より効率良い形式でlibディレクトリのimplementation-privateファイルに格納されています。以前tools.jardt.jarに入っていたクラスやリソースファイルは、JDKイメージにブートストラップ・クラスローダやアプリケーション・クラスローダを使うと、現在もなお確認することができます。
  • 新しい、組み込みNIOファイルシステムプロバイダを使って、ランタイムイメージに格納されているクラスやリソースファイルにアクセスすることができます。以前rt.jarやその他の内部jarファイルを読んでいたツールは直接このファイルシステムを使うようにアップデートすべきです。
これらの変更の結果、アプリケーション、特にJDKの内部構造に依拠しているIDEやその他の開発ツールが壊れる可能性があることを認識していますが、パフォーマンスやセキュリティ、メンテナンス性の向上を実現するこうした変更がより大きな価値を生み出すと考えています。既に主要なIDEのメンテナンス担当者に対し、こうした変更があること、必要に応じて支援する準備が整っていることを伝えました。
既存のアプリケーションをJDK 9 build 41以後で実行したときに障害が発生し、それがこの再編成によるもので、JEP 220にや上記の変更内容にあるものが原因でない、と考える場合には、是非jigsaw-devメーリングリストへ知らせる(まだ購読していない場合には、まず購読してください)か、bugs.java.comからバグレポートを上げてください。どうぞよろしくお願いいたします。
jigsaw-dev -- Technical discussion about Project Jigsaw
http://mail.openjdk.java.net/mailman/listinfo/jigsaw-dev
Java Bug Database
http://bugs.java.com/

0 件のコメント:

コメントを投稿