我希望了解osgi,并发现每个教程都需要eclipse或使用eclipse开发(这会使我的理解变得复杂),这使我感到困惑
是否可以在没有月蚀的情况下使用春分,并且有一个如何做到这一点的例子?
答案 0 :(得分:3)
您可以创建没有Eclipse的OSGi应用程序。您在许多教程中看到的是使用Eclipse插件开发环境(PDE)进行OSGi开发。这是一种方法,但不是唯一的方法。
在许多类似Apache Karaf的Apache项目中,您可以看到非常不同的基于Maven的OSGi开发。在这种情况下,您将创建普通的maven项目,只需添加一个插件即可使用OSGi元数据增强jar。对于简单的捆绑包,这就是您所需要的。 例如,请参见karaf examples和tutorials。如果使用karaf作为OSGi服务器,则可以在OSGi框架的Equinox和felix之间进行选择。
第三种方法是使用bndtools。这又是一个eclipse插件和maven插件,但是与PDE完全不同的开发工作流程。 bndtools的新示例也基于Maven,例如在Apache Karaf中,但是它们使用不同的程序集。作为example see this。它可以仅使用Maven进行构建,但是使用bndtools eclipse插件可以使其更容易。
当Karaf使用功能作为主要的装配单元时,bndtools使用OSGi存储库+要求。
因此,您可以选择三种不同的样式。每个都有不同的优点和缺点。 尤其是karaf风格也非常适用于intellij。
答案 1 :(得分:2)
OSGi是一个标准。 Equinox是此标准的实现。正如在Equinox主页上提到的那样,Equinox甚至是参考实现(http://www.eclipse.org/equinox/):
Equinox OSGi核心框架实现被用作参考实现,因此它实现了最新OSGi核心框架规范的所有必需功能
因此,可以,可以使用其他OSGi实现:Apache Felix,...(请参阅https://en.wikipedia.org/wiki/OSGi_Specification_Implementations)。如果选择Felix,则将不再使用Equinox。但是两者都实现了OSGi规范:https://osgi.org/javadoc/osgi.core/7.0.0/
此外,您必须将OSGi实现与您选择的开发环境(IDE)区分开。 Eclipse是一个模棱两可的术语,适合于两者。即使选择Felix实现,也可以在Eclipse中进行编码。
我认为,如果您发现的大多数样本都是基于Eclipse Equinox并在Eclipse中开发的,则其结果是: -Equinox是OSGi的参考实现 -Eclipse IDE包含许多工具,可通过PDE(插件开发环境:https://www.eclipse.org/pde/)来开发OSGi应用程序
总而言之,我想说Eclipse可能累积了与OSGi一起使用的最佳IDE和实现。据我所知,遵循基于Eclipse的教程对您来说是一件好事,只是请记住,Equinox是一种OSGi实现,可以用Felix等其他实现代替。