Apache Karaf是Apache Felix的子项目。它被定义为“轻量级OSGi容器”。
我不明白我何时应该使用重量级以及何时使用轻量级。他们的网站没有解释太多。
答案 0 :(得分:203)
'轻量级OSGi容器'标签与更多功能丰富的OSGi容器形成鲜明对比,不与Karaf。
引用Guillaume Nodet(Karaf的作者)Felix:
Felix只是OSGi的核心运行时。 Karaf通过添加其他功能(例如控制台,SSH远程处理机制,文件部署程序等)提供基于Felix的“分发”。
在这个Karaf架构图中,Felix(或其他OSGi实现 - 当前from here也支持)是OSGi框,其他框是Karaf添加的功能:
因此,除非您具有Karaf无法满足的特定需求(需要访问底层实现),否则使用它通常是有意义的,因为它提供了更多“开箱即用”。
答案 1 :(得分:5)
@Marcel Karaf不像Java EE服务器那样单片或巨大。这是一个非常苗条和极简主义的实现。它是一个核心产品,除了基本控制台,文件加载以外,没有太多功能,因此您可以实际读取配置文件等。最新的zip文件是19.1 MB。是啊。小。它可以轻松地在小型设备上运行,并可以嵌入式工作。
你可能会想到的更像是使用Karaf作为核心/内核的ServiceMix。但它包括完整配置的CXF,ActiveMQ,Camel和其他库。即使这样,他们也有最小,中等和全尺寸。
真的,对于99%的项目来说,直接与Felix开始而不是使用Karaf是没有意义的。
答案 2 :(得分:-1)
目前,有三种流行的开源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.
Apache项目维护一个名为Felix的通用OSGi容器。 这里用作ServiceMix和
ServiceMix和Karaf之间的主要区别在于 ServiceMix捆绑了许多其他集成组件--ActiveMQ 消息代理,Camel路由引擎和其他一些东西