さまざまな種類の計算機を「プラグイン」できるようにする、実装しているサービスの単純なプラグインフレームワークを実装する方法を決定しようとしています。
Javaプラグインフレームワークについての number の投稿を読んだ後、最も一般的なオプションは次のようです:
OSGIは私たちが必要とする以上のもののようです。
「独自にローリング」することは問題ありませんが、一般的なライブラリを再利用するのは良いことです。
それでは、JPFとJSPFです。 JPFは活発に開発されていないようです。
JSPFは非常にシンプルで、本当に必要なものはすべて揃っています。しかし、私はそれについてあまり聞いていません。 StackOverflowで post を1つだけ見ました。他の誰かがJSPFの経験がありますか?または、このデザインの選択に関する他のコメントはありますか?
更新:これには必ずしも正しい答えがあるわけではありません。シンプルなソリューション。ニースガイドをEoHに感謝します。
明確に定義されたSPIおよび構成の一部で十分かもしれない)よりも1つだけ(または数個のみ)非常に複雑ではない「拡張ポイント」を計画している場合、使用する必要はありません。プラグインフレームワーク。
構成の一部とは、プラグインを見つけるための何らかのメカニズムを意味します。たとえば、META-INF/services/
のようなもの、または単に構成ファイルにプラグインをリストします。
詳細(リクエストに応じて):
SPI = Service Provider Interface 、「APIの実装者側の同等物」。詳細については、APIとSPIの違いを検索してみてください。ただし、このコンテキストでは、プラグインによって実装されるインターフェースの空想的な用語にすぎません(つまり、プラグインの契約を定義します)。
Ethan Nicholasによる素敵な短い記事「 サービスプロバイダーインターフェイスの作成 」では、独自のSPIを作成する方法について説明しています。 Javaプラットフォーム自体。
META-INF/services/
は、SPIを作成するためのより一般的なアプローチと見なすことができます。詳細については、 JARファイル仕様 の各セクションを参照してください。
(免責事項:私はJSPFの作者です。ですから、私のコメントは一粒の塩と一緒に書いてください;-)
私がJSPFを使い始めた主な理由は、今と同じ問題があったからです。論文プロジェクト1)を拡張可能にし、2)ある程度明確なコード構造にするための簡単な解決策を探していました。
既存のフレームワークを使用することに決めなかった理由は、それらのほとんどが最初は非常に重いため、ドキュメントを読むのに迷ってしまい、元のタスクをほとんど忘れていたためです。だから、あなたの声明によると
さまざまな種類の計算機を「プラグイン」できるようにする、実装しているサービスの単純なプラグインフレームワークを実装する方法を決定しようとしています。
JSPFを試してみて、1〜2時間でどのくらい遠くまで行くことができると思います。
ただし、最終的な決定は、正確に何を達成したいか、および特定の状況にも少し依存します。
プロジェクトを構築したり、プロジェクトにプラグインをロードしたりするためにそれを使用している多くの個人から肯定的な結果を聞いています。一方、自分のプログラミングスタイルとうまく調和していないと感じたために、この部門で再び破棄した人もいます。
だから、あなたの質問に簡単に(そして確かに偏った方法で)答えるには、私は
OSGiプロジェクトおよびチーム用
[〜#〜] jpf [〜#〜]プロジェクトおよびチーム用
[〜#〜] jspf [〜#〜]プロジェクトおよびチーム用
あなたのシナリオに最も適したプラグインフレームワークを見つけていただければ幸いです。そして、あなたが何を試みても、私はあなたの結果について聞いて幸せです。
本当に簡単な解決策が必要な場合は、 jin-plugin を試してください。これは、JavaおよびPHP用の最小限のプラグインフレームワークです。