OSGi:Apache Felix和Apache Karaf有什么区别?

143

Apache KarafApache Felix的子项目,被定义为“一个轻量级的OSGi容器”。

我不明白何时应该使用重量级和何时应该使用轻量级。他们的网站没有太多解释。

3个回答

218

'轻量级OSGi容器'标签是将Karaf与功能更丰富的OSGi容器进行对比,并不是Felix进行对比。

引用Guillaume Nodet(Karaf的作者)在这里的话:

Felix只是OSGi核心运行时。Karaf通过添加其他功能(如控制台、SSH远程机制、文件部署器等)提供了基于Felix的“发行版”。

在这张Karaf架构图中,Felix(或其他OSGi实现 - 目前也支持Equinox)是OSGi框,其他框是Karaf添加的功能:

Karaf Architecture 因此,除非您有特定的需求无法通过Karaf满足(需要访问底层实现),否则通常使用Karaf更为合适,因为它提供了更多的“开箱即用”功能。


7
任何OSGi容器的一个好处是,您可以选择只需要的捆绑包并将它们部署到容器中。因此,我的建议是首先设计您的应用程序,然后再挑选所需内容。建议“安装整个平台,因为其功能丰富”听起来有点像回到庞大的Java EE应用程序服务器。现在我并不是说Apache Karaf和那些巨型服务器一样大,我只是在强调您可以、也应该只部署实际需要的内容。 - Marcel Offermans
2
对我来说,这个答案似乎不完整,因为它没有提到嵌入Felix在应用程序中的使用情况(无需使用容器如Karaf)——例如提供插件功能——这是我对以下链接的理解。我错了吗?(我不是专家。) 链接:http://felix.apache.org/documentation/subprojects/apache-felix-framework/apache-felix-framework-launching-and-embedding.html#embedding-the-felix-framework - Woodchuck
Karaf 默认使用 Felix 还是 Equinox?谢谢。 - Diego Ramos

8
@Marcel Karaf不像Java EE服务器一样庞大或臃肿。它是一个非常纤薄和极简的实现,它只包含基本控制台、文件加载等少量功能。它是一个核心产品,最新的zip文件大小为19.1MB。非常小巧,可以轻松运行于小型设备并嵌入其中。
你可能想到的是类似ServiceMix这样的东西,它使用Karaf作为核心/内核。但它包括CXF、ActiveMQ、Camel和其他库在其完整配置中。即使如此,它们也有最小、中等和完整大小可供选择。
事实上,对于99%的项目而言,直接使用Felix而不是Karaf并没有意义。

0

Currently, there are three popular open source OSGi containers:

  - Equinox. It is the modular Java runtime at the heart of the Eclipse IDE,
  - Knopflerfish, Is an open source implementation of the OSGi R3 and OSGi R4 specifications. 
  - Apache Felix. Is the open source OSGi container from the Apache Software Foundation.

http://www.javaworld.com/article/2077837/java-se/java-se-hello-osgi-part-1-bundles-for-beginners.html

Apache项目维护一个通用的OSGi容器叫做Felix。它被用作ServiceMix和。
引用部分:
ServiceMix和Karaf的主要区别在于,ServiceMix捆绑了其他集成组件——ActiveMQ消息代理、Camel路由引擎和一些其他组件。
根据:http://kevinboone.net/osgitest.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接