24

Java 8 with Project Jigsaw は、SDK にモジュール システムをもたらします。パッケージの一部(組み込み)であるため、良いことだと思います。OSGi もモジュール システムを提供しますが、コンテナーが必要です。しかし、それとは別に、それらの間の主な違いは何ですか。

OSGi を使用する場合、標準の JDK 8 リリースを使用して OSGi を実行できますか?

デフォルトの SDK にそのような機能が含まれている場合、OSGi は関連しますか? 私の理解では、OSGi と Jigsaw の両方を使用して、ser ベースのアプリ (サーブレットなど) だけでなく、通常のモジュラー Java アプリケーションを作成できますよね?

OSGi、Java Modularity、および Jigsawの質問に対する回答によると、おそらく JRE には Jigsaw モジュール システムが必要です。JRE で言うと、OP は Java で記述された IO、CORBA、RMI などの Java 標準ライブラリを意味すると思いますか、それとも対象となるこれらの基礎となるクラス ライブラリの実装ですか? Jigsaw プロジェクトのページを読むと、前者だと思います。後者の場合、Java コードを作成する他の Java 開発者にどのように役立つのでしょうか? クラス ライブラリは C/C++ で記述されています。誰でも明確にしてもらえますか?

これは OSGi 対ジグソーではありません。どちらを使用するかを本当に理解したいです。新しいアプリケーション (デスクトップであろうとサーバーであろうと) を作成する場合は、標準的な実装によって時代遅れにならず、放棄されたままになる可能性のあるテクノロジに基づいていたいと考えています。OSGi が時代遅れだと言っているわけではありません。私は OSGi が好きです。OSGi自体の将来の方向性は何か、全体像を見ています。

4

1 に答える 1

26

すでにコメントに書かれているように、Java 8 には Jigsaw は同梱されません。おそらくJava 9。

また、JavaOne 2013 で Mark Reinhold 氏の講演に参加しましたが、Jigsaw が目指す方向は Java 開発者にとって一般的に開かれていないように聞こえました。つまり、Jigsaw は JRE によって JRE (読み取り: rt.jar) 自体をモジュール化するために使用されます。ただし、Java 開発者が使用することは想定されていません。与えられた理由の 1 つは、Jigsaw が Maven や OSGi などの既存のソリューションと競合してはならないというものでした。もう 1 つの理由は、sun.* 内部パッケージへのアクセスをシャットダウンすることでした。

しかし、その日遅くに BOF に参加していた人から、コミュニティから Java 開発者向けに Jigsaw を開くようにとの要求があったことも聞きましたが、それに関する最新情報は聞いていません。

いずれにせよ、OSGi は Jigsaw で正常に動作するはずです。しかし、古い sun.* パッケージやその他の内部 JRE コードを使い続けると、多くのライブラリが Java 9 で壊れます。

2015 年 3 月の更新

EclipseCon 2015 で、Mark Reinhold が Java 9 の更新に関する基調講演を行いました。Java 9 には、Java 用のモジュール システムが含まれます。これは JRE/JDK を対象としており、それを使用したい任意の Java アプリケーションでも利用できます。ただし、範囲は少し変更されました。

主な違い (2015 年 3 月現在) は次のとおりです。

  • クラス ローダー- Jigsaw はクラス ローダーを使用しません。モジュールとクラスローダーを操作するのはランタイム (アプリケーションサーバーや OSGi など) 次第です。
  • 依存関係- Jigsaw では、モジュールへの依存関係を名前で指定できますが、パッケージ レベルでは指定できません。
  • 動的サービス- OSGi によって提供されるランタイム サービス モデルは、Jigsaw によって提供されません。

Jigsaw は、他のランタイムまたはビルド時のモジュール システム (OSGi や Maven など) を置き換えたり、競合したりすることを意図したものではありません。実際、Jigsaw は両方と (何らかの形で) 相互運用できるようにすることを意図しています。

于 2013-12-20T16:56:03.050 に答える