OSGi: Jakie są różnice między Apache Felix i Apache Karaf?

133

Apache Karaf jest podprojektem Apache Felix . Jest określany jako „lekki kontener OSGi”.

Nie rozumiem, kiedy powinienem używać wagi ciężkiej, a kiedy lekkiej. Ich strona nie wyjaśnia tego zbyt wiele.

GabiMe
źródło

Odpowiedzi:

211

Etykieta „lekki pojemnik OSGi” kontrastuje Karaf z bardziej bogatymi w funkcje pojemnikami OSGi, a nie z Felixem .

Cytując Guillaume Nodet (autora Karafa) stąd :

Felix to tylko podstawowe środowisko uruchomieniowe OSGi. Karaf zapewnia „dystrybucję” opartą na Felixie, dodając inne funkcje, takie jak konsola, mechanizm zdalny SSH, narzędzie do wdrażania plików i inne.

Na tym schemacie architektury Karaf, Felix (lub inna implementacja OSGi - obecnie obsługiwana jest również Equinox ) jest oknem OSGi, pozostałe pola to funkcje dodane przez Karaf:

Architektura Karaf Dlatego jeśli nie masz konkretnych potrzeb, które nie są spełniane przez Karaf (wymagające dostępu do podstawowej implementacji), zwykle ma to sens, ponieważ zapewnia więcej „po wyjęciu z pudełka”.

Matthew Murdoch
źródło
5
Jedną z fajnych cech każdego kontenera OSGi jest to, że możesz wybrać tylko potrzebne pakiety i wdrożyć je w swoim kontenerze. Dlatego radzę najpierw zaprojektować swoją aplikację, a następnie wybrać to, czego potrzebujesz. Porada „po prostu zainstaluj całą platformę, ponieważ jest bogata w funkcje” brzmi trochę jak powrót do ogromnych serwerów aplikacji Java EE. Teraz nie mówię, że Apache Karaf jest w przybliżeniu tak duży jak te, po prostu zwracam uwagę, że możesz i powinieneś po prostu wdrożyć to, czego faktycznie potrzebujesz.
Marcel Offermans
1
Wydaje mi się, że ta odpowiedź jest niepełna, ponieważ nie wspomina o przypadku użycia osadzania Felixa w aplikacji (bez konieczności używania kontenera takiego jak Karaf) - na przykład w celu zapewnienia możliwości wtyczki - co jest moją interpretacją następujący link. Czy się mylę? (Nie jestem ekspertem.) Link: felix.apache.org/documentation/subprojects/ ...
J Woodchuck
6

@Marcel Karaf nie jest monolityczny ani ogromny, jak serwer Java EE. To bardzo smukła i minimalistyczna realizacja. Jest to podstawowy produkt bez wielu funkcji poza podstawową konsolą, ładowaniem plików, aby można było odczytać pliki konfiguracyjne itp. Najnowszy plik ZIP ma 19,1 MB. Tak. Mały. Może łatwo działać na małych urządzeniach i pracować w osadzonych.

To, o czym możesz pomyśleć, to coś bardziej jak ServiceMix, który używa Karaf jako jądra / jądra. Ale zawiera biblioteki CXF, ActiveMQ, Camel i inne w pełnej konfiguracji. Nawet wtedy mają minimalne, średnie i pełne rozmiary.

Naprawdę, dla 99% projektów nie miałoby sensu rozpoczynać bezpośrednio od Felixa i nie używać zamiast tego Karaf.

Ranx0r0x
źródło
-1

Obecnie istnieją trzy popularne kontenery OSGi typu open source:

  - 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

Projekt Apache utrzymuje kontener OSGi ogólnego przeznaczenia o nazwie Felix. Tutaj jest używany jako ServiceMix i

Główną różnicą między ServiceMix i Karaf jest to, że ServiceMix zawiera kilka innych elementów integracji - broker komunikatów ActiveMQ, silnik routingu Camel i kilka innych rzeczy

Według: http://kevinboone.net/osgitest.html

Alejandro Hdz
źródło