OSGi: Was sind die Unterschiede zwischen Apache Felix und Apache Karaf?

131

Apache Karaf ist ein Teilprojekt von Apache Felix . Es ist als "leichter OSGi-Container" definiert.

Ich verstehe nicht, wann ich das Schwergewicht und wann das Leichtgewicht verwenden soll. Ihre Seite erklärt dies nicht zu viel.

GabiMe
quelle

Antworten:

209

Das Label "Lightweight OSGi Container" kontrastiert Karaf mit funktionsreicheren OSGi-Containern, nicht mit Felix .

Um Guillaume Nodet (Karafs Autor) von hier aus zu zitieren :

Felix ist nur die OSGi-Kernlaufzeit. Karaf bietet eine auf Felix basierende "Distribution", indem andere Funktionen wie eine Konsole, ein SSH-Remoting-Mechanismus, ein Datei-Deployer und mehr hinzugefügt werden.

In diesem Diagramm der Karaf-Architektur ist Felix (oder eine andere OSGi-Implementierung - derzeit wird auch Equinox unterstützt) die OSGi-Box. Die anderen Boxen sind die von Karaf hinzugefügten Funktionen:

Karaf Architektur Daher ist es in der Regel sinnvoll, diese zu verwenden, es sei denn, Sie haben bestimmte Anforderungen, die von Karaf nicht erfüllt werden (Zugriff auf die zugrunde liegende Implementierung erforderlich), da dies mehr "out of the box" bietet.

Matthew Murdoch
quelle
5
Eine nette Funktion jedes OSGi-Containers ist, dass Sie nur die benötigten Bundles auswählen und in Ihrem Container bereitstellen können. Mein Rat wäre also, zuerst Ihre Anwendung zu entwerfen und dann auszuwählen, was Sie brauchen. Der Ratschlag, "nur die gesamte Plattform zu installieren, weil sie reich an Funktionen ist", klingt ein bisschen wie die Rückkehr zu den riesigen Java EE-Anwendungsservern. Jetzt sage ich nicht, dass Apache Karaf annähernd so groß ist wie diese, ich möchte nur darauf hinweisen, dass Sie nur das bereitstellen können und sollten, was Sie tatsächlich benötigen.
Marcel Offermans
1
Es scheint mir, dass diese Antwort insofern unvollständig ist, als sie den Anwendungsfall der Einbettung von Felix in eine Anwendung nicht erwähnt (ohne dass ein Container wie Karaf verwendet werden muss) - zum Beispiel um Plugin-Funktionen bereitzustellen -, was meine Interpretation des ist folgender Link. Liege ich falsch? (Ich bin kein Experte.) Link: felix.apache.org/documentation/subprojects/…
J Woodchuck
6

@Marcel Karaf ist nicht monolithisch oder riesig wie ein Java EE-Server. Es ist eine sehr schlanke und minimalistische Implementierung. Es ist ein Kernprodukt ohne viele andere Funktionen als eine Basiskonsole, das Laden von Dateien, damit Sie tatsächlich Konfigurationsdateien usw. lesen können. Die neueste Zip-Datei ist 19,1 MB groß. Ja. Klein. Es kann problemlos auf kleinen Geräten ausgeführt werden und in Embedded arbeiten.

Was Sie vielleicht denken, ist eher ServiceMix, das Karaf als Kern / Kernel verwendet. Es enthält jedoch CXF-, ActiveMQ-, Camel- und andere Bibliotheken in seiner vollständigen Konfiguration. Selbst dann haben sie minimale, mittlere und volle Größen.

Wirklich, für 99% der Projekte da draußen wäre es nicht sinnvoll, direkt mit Felix zu beginnen und stattdessen nicht Karaf zu verwenden.

Ranx0r0x
quelle
-1

Derzeit gibt es drei beliebte Open-Source-OSGi-Container:

  - 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

Das Apache-Projekt verwaltet einen universellen OSGi-Container namens Felix. Hier wird als ServiceMix und verwendet

Der Hauptunterschied zwischen ServiceMix und Karaf besteht darin, dass ServiceMix eine Reihe anderer Integrationskomponenten bündelt - ActiveMQ-Nachrichtenbroker, die Camel-Routing-Engine und einige andere Dinge

Laut: http://kevinboone.net/osgitest.html

Alejandro Hdz
quelle