BT

Java 9ではCORBAがデフォルトクラスパスから削除される

| 作者: Abraham Marín Pérez フォローする 9 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2016年6月22日. 推定読書時間: 2 分 |

原文(投稿日:2016/06/07)へのリンク

モジュールシステムへの継続的な移行の一環として,CORBAを始めとする一部のJava EEモジュールがJava 9以降,デフォルトのクラスパスに含まれなくなる。ディストリビューションには引き続きデフォルトで同梱されるが,開発者がそれを使用する場合は,コマンドラインフラグによる明示的な指定が必要だ。モジュール対応のアプリケーションは必要なモジュールを明示的に指定しなければならないので,この変更の影響を受けるのは,Java 9をターゲットとする非モジュールアプリケーションに限られる。

The State of the Module System”で説明されているように,Java 9で追加されるモジュール機能は,開発者がすぐに使用を強いられるものではなく,後方互換性のためのオプションがいくつか提供されている。その中のひとつが,従来の非モジュールコードをJava 9でコンパイル可能にするオプションだ。これを実現するため,コンパイラは,非モジュール化コードを”無名モジュール”と呼ばれる特殊なモジュールに追加する。このモジュールにはデフォルトですべてのパッケージが含まれており,明示的な依存関係は存在しない。

残念なことに,無名モジュールが明示的な依存関係を持たないという事実が,モジュール解決においては問題となる。モジュール化されたJavaアプリケーションでは,コンパイルされたモジュールは,必要な依存関係を明示したリストを保持している。コンパイラはこの情報と,依存対象の依存関係とを合わせて,コンパイルされたモジュールが直接的ないし間接的に必要とする全モジュールの推移閉包(transitive-closure)を含むグラフを計算する。無名モジュールにはこの依存関係が示されていないため,モジュールグラフを計算する上でのルートとして使用できないのだ。

この問題を解決するため,Java 9では,コードが無名モジュールにコンパイルされる場合に,ルートモジュールとしていくつかのデフォルト値を用いる必要がある。最新の変更では,このデフォルトルートモジュールがjava.se.eeからjava.seに変更された。これによって,すべてのJava EEの拡張機能がデフォルトでは使用できなくなったが,独自のJava EEパッケージ実装を備えたアプリケーションサーバでの衝突を避けるためには有効だ。

Java 9へのマイグレーションは実施したいが,モジュールシステム対応のためにアプリケーションを書き直す予定はない,という場合は,アプリケーションのコンパイル時あるいは実行時にコマンド行引数 “-addmods <module.name>” を指定することによって,依存対象をクラスパスに改めて追加することができる。

 
 

この記事を評価

関連性
形式
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT