OSGi: ¿Cuáles son las diferencias entre Apache Felix y Apache Karaf?

Respuestas:

209

La etiqueta de 'contenedor OSGi liviano' contrasta a Karaf con más contenedores OSGi ricos en funciones, no con Felix .

Para citar a Guillaume Nodet (autor de Karaf) desde aquí :

Felix es solo el tiempo de ejecución principal de OSGi. Karaf proporciona una "distribución" basada en Felix al agregar otras características como una consola, un mecanismo de control remoto SSH, un desplegador de archivos y más.

En este diagrama de la arquitectura Karaf, Felix (u otra implementación de OSGi, actualmente Equinox también es compatible) es el cuadro OSGi, los otros cuadros son las características agregadas por Karaf:

Arquitectura Karaf Por lo tanto, a menos que tenga necesidades específicas que Karaf no satisfaga (que requieren acceso a la implementación subyacente), por lo general, tiene sentido usar esto, ya que proporciona más "fuera de la caja".

Matthew Murdoch
fuente
55
Una buena característica de cualquier contenedor OSGi es que puede seleccionar solo los paquetes que necesita e implementarlos en su contenedor. Entonces, mi consejo sería primero diseñar su aplicación y luego elegir lo que necesita. El consejo de "simplemente instalar toda la plataforma porque tiene muchas funciones" suena un poco como volver a los enormes servidores de aplicaciones Java EE. Ahora no estoy diciendo que Apache Karaf sea tan grande como esos, solo estoy señalando que puedes y debes implementar lo que realmente necesitas.
Marcel Offermans
1
Me parece que esta respuesta está incompleta porque no menciona el caso de uso de incrustar a Felix en una aplicación (sin la necesidad de usar un contenedor como Karaf), por ejemplo, para proporcionar capacidad de complemento, que es mi interpretación de la siguiente enlace. ¿Me equivoco? (No soy un experto.) Enlace: felix.apache.org/documentation/subprojects/…
J Woodchuck
6

@Marcel Karaf no es monolítico o enorme como un servidor Java EE. Es una implementación muy delgada y minimalista. Es un producto básico sin mucha funcionalidad que no sea una consola básica, carga de archivos para que realmente pueda leer los archivos de configuración, etc. El último archivo zip es de 19.1 MB. Si. Pequeña. Puede ejecutarse fácilmente en dispositivos pequeños y trabajar en forma integrada.

En lo que puede estar pensando es en algo más como ServiceMix que usa Karaf como núcleo / núcleo. Pero incluye CXF, ActiveMQ, Camel y otras bibliotecas en su configuración completa. Incluso entonces tienen tamaños mínimos, medianos y completos.

Realmente, para el 99% de los proyectos que existen, no tendría sentido comenzar directamente con Felix y no usar Karaf.

Ranx0r0x
fuente
-1

Actualmente, hay tres contenedores OSGi de código abierto populares:

  - 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

El proyecto Apache mantiene un contenedor OSGi de uso general llamado Felix. Aquí se usa como ServiceMix y

La principal diferencia entre ServiceMix y Karaf es que ServiceMix incluye otros componentes de integración: el agente de mensajes ActiveMQ, el motor de enrutamiento Camel y algunas otras cosas.

De acuerdo: http://kevinboone.net/osgitest.html

Alejandro Hdz
fuente