OSGi: Quelles sont les différences entre Apache Felix et Apache Karaf?

132

Apache Karaf est un sous-projet d' Apache Felix . Il est défini comme "un conteneur OSGi léger".

Je ne comprends pas quand dois-je utiliser le poids lourd et quand utiliser le poids léger. Leur site n'explique pas trop cela.

GabiMe
la source

Réponses:

210

L'étiquette «conteneur OSGi léger» contraste avec Karaf avec des conteneurs OSGi plus riches en fonctionnalités, pas avec Felix .

Pour citer Guillaume Nodet (l'auteur de Karaf) d'ici :

Felix n'est que le moteur d'exécution principal d'OSGi. Karaf fournit une "distribution" basée sur Felix en ajoutant d'autres fonctionnalités telles qu'une console, un mécanisme de communication à distance SSH, un déployeur de fichiers et plus encore.

Dans ce diagramme de l'architecture Karaf, Felix (ou une autre implémentation OSGi - Equinox est également supporté actuellement) est la box OSGi, les autres cases sont les fonctionnalités ajoutées par Karaf:

Architecture de Karaf Par conséquent, à moins que vous n'ayez des besoins spécifiques qui ne sont pas satisfaits par Karaf (nécessitant un accès à l'implémentation sous-jacente), il est généralement judicieux de l'utiliser car il fournit plus «prêt à l'emploi».

Matthieu Murdoch
la source
5
Une fonctionnalité intéressante de tout conteneur OSGi est que vous pouvez sélectionner uniquement les bundles dont vous avez besoin et les déployer dans votre conteneur. Mon conseil serait donc de commencer par concevoir votre application, puis de choisir ce dont vous avez besoin. Le conseil de "simplement installer toute la plate-forme car elle est riche en fonctionnalités" ressemble un peu à revenir aux énormes serveurs d'applications Java EE. Maintenant, je ne dis pas qu'Apache Karaf est presque aussi grand que ceux-là, je veux juste dire que vous pouvez et devez simplement déployer ce dont vous avez réellement besoin.
Marcel Offermans
1
Il me semble que cette réponse est incomplète en ce qu'elle ne mentionne pas le cas d'utilisation de l'incorporation de Felix dans une application (sans avoir besoin d'utiliser un conteneur tel que Karaf) - par exemple pour fournir une capacité de plugin - ce qui est mon interprétation du lien suivant. Ai-je tort? (Je ne suis pas un expert.) Lien: felix.apache.org/documentation/subprojects
J Woodchuck
6

@Marcel Karaf n'est pas monolithique ou énorme comme un serveur Java EE. C'est une mise en œuvre très mince et minimaliste. C'est un produit de base sans beaucoup de fonctionnalités autres qu'une console de base, le chargement de fichiers pour que vous puissiez réellement lire les fichiers de configuration, etc. Le dernier fichier zip est de 19,1 Mo. Ouais. Petit. Il peut facilement fonctionner sur de petits appareils et fonctionner en mode intégré.

Ce à quoi vous pensez peut-être, c'est quelque chose qui ressemble plus à ServiceMix qui utilise Karaf comme noyau / noyau. Mais il inclut CXF, ActiveMQ, Camel et d'autres bibliothèques dans sa configuration complète. Même dans ce cas, ils ont des tailles minimales, moyennes et complètes.

Vraiment, pour 99% des projets, il ne serait pas logique de commencer directement avec Felix et de ne pas utiliser Karaf à la place.

Ranx0r0x
la source
-1

Actuellement, il existe trois conteneurs OSGi open source populaires:

  - 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

Le projet Apache gère un conteneur OSGi à usage général appelé Felix. Ici est utilisé comme ServiceMix et

La principale différence entre ServiceMix et Karaf est que ServiceMix regroupe un tas d'autres composants d'intégration - le courtier de messages ActiveMQ, le moteur de routage Camel et d'autres choses.

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

Alejandro Hdz
la source