【发布时间】:2018-12-28 10:48:43
【问题描述】:
我正在开发一个应用程序,我需要构建一个非常小且最小的插件容器。
以下是我想要实现的目标。
- 应用程序被分成更小的插件,打包为 Jars。
- 插件容器应该获取它们并加载所有 jar。
- 每个插件都不应干扰其他插件,并且应该与它的依赖库一起独立运行。基本上所有插件都应该在运行时隔离。
我尝试使用 OSGI 容器,但它增加了很高的复杂性。还有许多与 OSGI 不兼容的第三方库会产生需要大量时间来调试的问题。还检查了 Spring Boot、JPF 等,但不是很感兴趣。所以想到了使用非常小的本土插件框架。
我不知道该怎么做以及从哪里开始。请任何人都可以指出正确的方向,在那里我可以获得有关此的详细信息。
提前谢谢你。
【问题讨论】:
-
应用程序需要 UI 吗?它将是一个网络应用程序?或者它会是一种守护进程?
-
听起来像是你可以用 Docker + Kubernetes 之类的东西来实现的。不确定您到底想做什么。
-
应用程序不需要 UI。但是所有插件都应该能够相互交互。容器应该有一个小的服务注册中心。
-
如果您的目标是让插件开发人员的一切都保持简约(但不介意使用更复杂的框架作为您的插件平台),OSGI 可能是一个不错的选择。例如,几年前,我将 Apache Karaf 用于模块化 Web 应用程序 - 插件开发人员所要做的就是实现一些服务接口并将带有(非 osgi)库的 jar 放在 Karaf 自动运行 jar 的文件夹中作为 OSGI 包。
标签: java plugins containers modularity loose-coupling