我一直在玩弄创建一个程序的想法,该程序可以执行多个不同的任务,同时受到中央线程的监控。这个想法是创建一个核心程序,该程序将在运行时/运行时查找并加载单独的模块。这些模块将执行自己的任务,然后将完成的对象传递给另一个模块,该模块将处理诸如将成品上传到 Web 服务器或将结果数据组织到预定的文件/文件夹结构(见图基本概念)。 我以前从未真正使用过 Java 中的模块化设计。我过去的所有程序都是完全独立的,所以我几乎不知道从哪里开始。
我的目标是将外部库存储在核心程序中(例如,AWS SDK for Java,它本身可以将 .jar 拍摄到大约 18MB),以便在进行更新时几乎可以立即分发单独的模块,而不是必须重新分发整个 18MB+ 的独立程序来修复一个 1 行错误。此外,我希望能够在必要时更新单个模块,而不必重新启动整个程序,允许其他模块在更新一个模块时继续工作,减少整体停机时间,以便程序只需要一次完全关闭是对核心进行更新时。
我想知道的是,这可能吗(我假设是这样),如果是的话;我应该研究什么/我将如何进行设置?(我是在尝试重新发明轮子吗?如果是这样,我在哪里可以找到所说的轮子?)
我研究了使用 aServiceLoader
并玩弄了这里的示例,但是我不确定如何使用它将一个模块指向另一个模块,或者它是否可以从核心检索库类,也不确定它是否可以执行“主动更新”提到。到目前为止,我所看到的是(在我的示例中)核心可以访问模块,但我不确定模块是否/如何访问核心。
不确定它是否与帖子相关,但我在 Eclipse 中完成了所有工作(如果有可用的 IDE 特定工具,值得一提)。