私は、中央のスレッドによって監視されている間に複数の異なるタスクを実行できるプログラムを作成するというアイデアをいじっています。アイデアは、実行時/実行中に個別のモジュールを探してロードするコアプログラムを作成することです。これらのモジュールは、完成したオブジェクトを別のモジュールに渡す前に独自のタスクを実行します。別のモジュールは、完成品を Web サーバーにアップロードしたり、結果データを事前に定義されたファイル/フォルダー構造に整理したりするなどの処理を行います (画像を参照)。基本的な概念のため)。
私はこれまで Java のモジュラー設計を実際に扱ったことはありません。私の過去のプログラムはすべて完全に自己完結型であったため、どこから始めればよいかほとんどわかりません。
私の目標は、外部ライブラリをコア プログラムに格納することです (たとえば、AWS SDK for Java は、.jar 自体を最大約 18 MB まで発射できます)。 1 行のバグを修正するためだけに、18 MB 以上の自己完結型プログラム全体を再配布する必要があります。さらに、必要に応じて、プログラム全体を再起動することなく、個々のモジュールを更新できるようにしたいと考えています。これにより、1 つの更新中に他のモジュールが動作し続け、全体的なダウンタイムが短縮され、プログラムが必要な時間だけが更新されるようになります。完全にシャットダウンするのは、コアへの更新が行われたときです。
私が知りたいのは、これは可能ですか(私はそう仮定しています) 、もしそうなら; 何を調べる必要がありますか/どのように設定しますか? (私は車輪を再発明しようとしていますか? もしそうなら、どこでその車輪を見つけることができますか?)
の使用を調べて、ここServiceLoader
で例を試してみましたが、それを使用してあるモジュールを別のモジュールに向ける方法や、コアからライブラリ クラスを取得できるかどうか、または "アクティブな更新」が言及されました。これまでに見たのは、(私の例では) コアがモジュールにアクセスできるということだけですが、モジュールがコアにアクセスするかどうか/どのようにアクセスするかはわかりません。
それが投稿に関連しているかどうかはわかりませんが、私はすべての作業を Eclipse 内で行っています (利用可能な IDE 固有のツールがある場合に備えて言及する価値があると考えました)。