OSGi 子系统可以替代 Eclipse 功能吗?

Posted

技术标签:

【中文标题】OSGi 子系统可以替代 Eclipse 功能吗?【英文标题】:Can OSGi subsystems replace Eclipse features? 【发布时间】:2015-09-19 19:28:30 【问题描述】:

OSGi R5 Enterprise 版本包含子系统规范。

OSGi 子系统是否包含 Eclipse 特性的所有功能? 是否有适合它的工具?

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

感谢您的意见,我想我会试一试的。我认为如果使用 bnd/Bndtools 的“纯”OSGi 社区可以通过 OSGi 子系统直接使用“Eclipse Feature”,他们可能会受益。【参考方案2】:

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

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

【讨论】:

你能提供这些陈述的一些来源吗?据我了解,SubSystem 实际上是 Eclipse 功能的标准化:coderthoughts.blogspot.ch/2013/04/osgi-subsystems.html 否;功能安装到同一个实例中,而 osgi 子系统是一组分区的捆绑包,在同一 OSGi 运行时中看不到其他捆绑包。它更类似于同一个 tomcat 容器中的不同 webapps。无论如何,它们在后来的规范中被修改为一个简单的连接/隐藏协议,而不是一个嵌套框架。 @AlBlue 不仅如此。是的,core 进行了最低限度的更新以包括连线过滤器......但还有基于这些过滤器的子系统服务规范(OSGi 企业规范,第 134 章),以创建具有范围区域的完整子系统概念等

以上是关于OSGi 子系统可以替代 Eclipse 功能吗?的主要内容,如果未能解决你的问题,请参考以下文章

OSGi 的替代品? [关闭]

如何将特定的 java 模块嵌入到 OSGi 包中?甚至可能吗?

在 JUnit 测试的上下文中使用 OSGi 声明式服务

实现类 Eclipse 的 OSGi 启动器

还有更多类似 OSGi 的吗?

如何在eclipse中基于maven创建osgi的bundle