Javaでプラグインシステムを構築する最善の方法



Answers

OSGi使用してください。

これはEclipseプラグイン・システムの基盤です。 EquinoxはEclipseの実装(ライセンスEPL)であり、 FelixはApacheプロジェクトの実装(Apache Public Licenseのライセンス)です。

Eclipseは、OSGiがあなたが言及したポイントをカバーできる具体的な例を提供します(またはEclipse / SWT / JFaceの完全なスタックが必要な場合は、 Eclipse RCPの上にアプリケーションを構築することもできます)。

Question

Javaアプリケーション用のプラグインシステムはどのように実装しますか?

以下を実現する(開発者向けの)使いやすいシステムを持つことが可能ですか?

  • ユーザーはプラグインをアプリのサブディレクトリに配置します
  • プラグインは設定画面を提供できます
  • フレームワークを使用する場合、ライセンスは商業開発と互換性がありますか?



私は、上記の問題を解決するためにOSGiを推奨することは非常に貧しいアドバイスだと思います。 OSGiは「正しい選択」ですが、上記のようなシナリオでは、JPFか自家開発の最小限のフレームワークで十分です。




数年前、私はそのようなプロジェクトを始めました。私はすぐに準備ができればいいと思っています。NetBeansとEclipseのようなプロジェクトに触発されましたが、少し違ったものに変わりました。 OSGiは良い選択のように見えますが、プロジェクトと比較する機会はありませんでした。これは前述のJPFと似ていますが、同時に多くの点で異なっています。

私を動機づけた基本的なアイデアは、Webアプリケーション、デスクトップアプリケーション、またはJWSアプリケーション(これはUIをカバーしていない - まだ)をコア機能として分離しないで、Javaアプリケーションをできるだけ簡単に構築することです。

私はいくつかの目標を持ってプロジェクトを作りました。

  • Webアプリケーションやデスクトップアプリケーションを構築しても、同じ方法でアプリケーションを起動する必要はありません。単純なメインメソッドです。空のWeb.xml宣言はありません(標準のWeb記述子を使用することに反対しているわけではありませんがプラグインシステムではうまくいきません。そこでは、「サーブレット」を追加します。私はそれらをRequestHandler(あなたの意志で動的)と呼んでいます。
  • Eclipseからのものではなく、別のアプローチである「拡張ポイント」の周りに「拡張」を簡単に挿入できます。
  • すべてのプラグインは登録されているので(XMLファイル)、アプリケーションはビルドシステムとは独立して自己展開可能でなければなりません。もちろん、oursideの世界とのリンクであるAntタスクとMaven MOJOがあります。終了すると、アプリケーションが呼び出され、特定の場所に自己展開するよう指示されます。
  • Mavenから借りたものであれば、リポジトリ(Maven 1&2リポジトリを含む)からコードをダウンロードできるので、リポジトリにアクセスできる限り、アプリケーションを単一の小さなjarとしてデプロイすることができます(いつか便利です。アップデート - あなたのウェブアプリケーションが新しいバージョンがあると通知されるというアイデアが気に入らないのですが、それはダウンロードされただけで、インストールにはあなたの許可が必要ですか?
  • システム状態に関する基本的なアプリケーション監視、障害発生時の電子メール通知






Links