2008-09-16 11 views
5

私は完全にモジュールに基づいているシステムを開発するつもりです。システムベースは、プラグインについて知り、プラグインを開始し、それらのモジュールが通信する方法を提供できるようサポートする必要があります。理想的には、新しいモジュールを入れて、自由に未使用のモジュールを引き出すことができなければならず、モジュールは互いの機能を利用できるようにする必要があります。モジュールやプラグインに基づいてシステムを開発するとき、どうすればよいですか?

このシステムは、さまざまなモジュールで大量のものが発生するシミュレーションシステムの基礎として使用する必要があります。他のモジュールは、それに基づいて何かを実行したいかもしれません。

私が開発しようとしているシステムは、Javaになる予定です。私はそれを見て、私は名前のような情報を持つモジュールを記述するXMLを含む各モジュールのサブフォルダを持つフォルダを持つつもりです。私は、このようなことをするカスタムClassLoaderを書く必要があるかもしれないと思います。

私のアイデアが実際に水を保持しているのかどうかは分かりません。もちろん、プロトタイプを作るつもりです。しかし、以前は真にモジュラーシステムに取り組んだことはありませんでしたが、この問題を克服する最良の方法が何であるかはわかりません。

どこから始めたらよいですか?この種のシステムを開発する際に共通の問題や落とし穴がありますか?アイソレーションを維持しながらモジュールを互いに話し合わせるにはどうすればいいですか(モジュールを削除し、それを使用していた別のモジュールはそのままです)。私が読むことができるガイド、仕様、または記事がありますか?どこから始めたらよいか教えてください。 Javaに基づいている方が良いでしょうが、これは必須条件ではありません。私が今探しているのはアイデアでありコードではないからです。

フィードバックは高く評価されます。

答えて

9

間違いなくOSGiをご覧ください。それは、コンポーネント/ Javaのためのプラグインメカニズムであることを目指しています。実行時にコードをモジュール化(いわゆるバンドル)し、バンドルを更新することができます。実装パッケージを他のバンドルからの不要なアクセスから完全に隠すこともできます。 APIのみを提供します。

EclipseはOSGiを実装して使用するための最初の主要なオープンソースプロジェクトでしたが、プラグインのインストールや更新は一切行わず、リスタートしませんでした。あなたがゼロから始めれば、それはあなたにプラグインシステムのための非常に良いフレームワークを与えるでしょう。

Apache Felixは、完全なオープンソースの実装です(他にもEclipse Equinoxなどがあります)。

+0

ご利用いただきありがとうございます。それは非常に迅速な答えであり、私を始めさせるのに十分なものでした。再度、感謝します! –

1

Springを詳細に調べることなく、OSGIやEclipse RCPフレームワークを熟知しておくことで、念頭に置く必要がある基本的な概念がわかります。

0

これは数多くの方法ですが、Reflectionを使用すると簡単なことができます。 XMLファイルのファイル名(reallityのクラス)を記述します。あなたはそれがどんなタイプであるかをチェックして、それを反映させて戻すことができます。クラスには、外部ファイル/クラスが実際にモジュールの1つであるかどうかを見つけるための共通のInterfaceがあります。 Reflexionに関するいくつかの情報があります。

このようなプリコンパイルされたフレームワークを使用することもできます。link textこれは、モジュール/プラグインを作成する最初の良いステップを提供します。

1

もう1つのオプションは、Java 1.6で追加されたServiceLoaderです。

関連する問題