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

Gab*_*iMe 127 osgi apache-felix apache-karaf

Apache KarafApache Felix的子项目.它被定义为"轻量级OSGi容器".

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

Mat*_*och 206

在"轻量级的OSGi容器"标签对比Karaf与功能更丰富的OSGi容器,菲利克斯.

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

Felix只是OSGi的核心运行时.Karaf通过添加其他功能(如控制台,SSH远程处理机制,文件部署程序等)提供基于Felix的"分发".

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

卡拉夫建筑 因此,除非您具有Karaf无法满足的特定需求(需要访问底层实现),否则使用它通常是有意义的,因为它提供了更多"开箱即用".

  • 任何OSGi容器的一个很好的功能是,您可以只选择所需的捆绑包并将它们部署到容器中.所以我的建议是首先构建你的应用程序,然后选择你需要的东西."只安装整个平台,因为它功能丰富"的建议听起来有点像回到庞大的Java EE应用服务器.现在我并不是说Apache Karaf就像那些那么大,我只是说明你可以而且应该只是部署你真正需要的东西. (4认同)
  • 在我看来,这个答案是不完整的,因为它没有提到在应用程序中嵌入 Felix 的用例(不需要使用诸如 Karaf 之类的容器)——例如提供插件功能——这是我对以下链接。我错了吗?(我不是专家。)链接:http://felix.apache.org/documentation/subprojects/apache-felix-framework/apache-felix-framework-launching-and-embedding.html#embedding-the-felix-框架 (2认同)

小智 5

@Marcel Karaf并不像Java EE服务器那样庞大或庞大。这是一个非常苗条和极简的实现。它是一个核心产品,除了基本控制台,文件加载功能之外,没有太多功能,因此您可以实际读取配置文件等。它的最新zip文件为19.1 MB。是的 小。它可以轻松地在小型设备上运行并在嵌入式环境中工作。

您可能会想到的更像是ServiceMix,它使用Karaf作为核心/内核。但它包括完整配置的CXF,ActiveMQ,Camel和其他库。即使这样,它们的大小仍然最小,中等和完整。

确实,对于其中的99%的项目,直接从Felix开始而不使用Karaf毫无意义。