OSGi 子系统能否替代 Eclipse 功能?

Can OSGi subsystems replace Eclipse features?

OSGi R5 企业版包含子系统规范。

此映射的目的是重新使用现有 eclipse 功能,例如基于 felixbnd/bndtools 的基础架构。

子系统和功能实际上是两个正交的东西。 Eclipse 特性是一组可以安装到 OSGi 运行时中的包。实际上,具有很多 Require-Bundle 元素的捆绑包和一个功能之间几乎没有什么区别,就要求安装它们而言。

另一方面,OSGi 子系统是允许嵌套 OSGi 运行时的建议方法。然而,在 OSGi 规范的最终版本中,它们被更通用的布线结构所取代;但无论如何,他们做了完全不同的事情。

是的......有点。子系统比 Eclipse 功能强大但也更复杂。

一个功能就是一组包。您可以将多个功能安装到单个 OSGi 框架中,每个功能的包可以相互交互,例如通过导入包或绑定服务。这使得它们难以测试和推理,因为与其他功能一起安装时,单独工作的功能可能无法工作。

子系统也是一组束,但它还包括一定程度的隔离。您可以控制来自一个子系统的包、服务和其他功能是否对任何其他子系统的成员可见。因此它们更容易预测。

不幸的是,构建子系统是一项复杂得多的任务,据我所知,没有专门的工具来处理这个问题。我们在 bnd/Bndtools 中没有做任何事情来帮助解决这个问题。但是,嘿,它是开源的……欢迎投稿 ;-)