在哪个领域使用 OSGI 有意义?

In which area using OSGI make sense?

我正在尝试了解 OSGI。它似乎是为创建智能系统而设计的,比如智能家居、物联网等。 OSGI 还有其他用例吗?用于分析平台或 AI 系统的 OSGI 是否有意义? 对不起,我的问题真的很天真。

对我来说,OSGi 最重要的特性是能够在 运行 时间 plug/unplug 代码模块而不停止 JVM,因此其他模块(除非依赖于 plugged/unplugged一)继续运行。

例如,Liferay Portal (7.0+) 基于 OSGi 构建,因为它需要 add/remove 功能和应用程序在 运行 时间不中断门户本身。 相反,如果您需要向 Spring 应用程序添加库(甚至是 SPI),您至少必须停止它,在 pom 中添加依赖项,编译并再次 运行。

使用 OSGi 还有其他优势(模块化和封装是关键点),但我认为这是主要优势,我不知道任何其他 java 技术可以做到这一点。

无论如何,最好知道 OSGi 不是小菜一碟。这些优点有一个缺点是学习曲线陡峭,而且很多try-and-error。 所以,在我看来,OSGi的使用应该仔细评估,综合考虑。