OSGi:Apache Felix和Apache Karaf有什么不同?

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

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

“轻量级OSGi容器”标签将Karaf与更多function丰富的OSGi容器形成鲜明对比, 而不是 Felix 。

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

Felix只是OSGi核心运行时。 Karaf提供基于Felix的“发行版”,通过添加其他function,例如控制台,SSH远程机制,文件部署程序等。

在这个Karaf架构图中,Felix(或其他OSGi实现 – 当前Equinox也支持)是OSGi框,其他框是Karaf添加的function:

卡拉夫建筑 因此,除非你有特定的需求,Karaf没有达到(需要访问底层的实现),通常使用它是有意义的,因为它提供了更多的“开箱即用”。

@Marcel Karaf不像Java EE服务器那样是单一的或巨大的。 这是一个非常苗条和简约的实现。 这是一个核心的产品,除了基本的控制台,文件加载,没有太多的function,所以你可以实际读取configuration文件等,它的最新的zip文件是19.1 MB的。 是啊。 小。 它可以轻松地在小型设备上运行,并可embedded式工作。

你可能想到的更像ServiceMix,它使用Karaf作为核心/内核。 但它包含CXF,ActiveMQ,Camel和其他完整configuration的库。 即使如此,他们有最小,中等和全尺寸。

真的,对于99%的项目来说,直接与Felix开始并不使用Karaf是没有意义的。

目前,有三种stream行的开源OSGi容器:

- 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项目维护一个称为Felix的通用OSGi容器。 这里用作ServiceMix和

ServiceMix和Karaf的主要区别在于ServiceMix捆绑了许多其他集成组件 – ActiveMQ消息代理,Camel路由引擎和其他一些东西

根据: http : //kevinboone.net/osgitest.html