OSGi: Quais são as diferenças entre o Apache Felix e o Apache Karaf?

131

O Apache Karaf é um subprojeto do Apache Felix . É definido como "um contêiner OSGi leve".

Não entendo quando devo usar o peso pesado e quando usar o peso leve. O site deles não explica muito isso.

GabiMe
fonte

Respostas:

209

O rótulo 'container OSGi leve' contrasta o Karaf com outros contêineres OSGi ricos em recursos, não com o Felix .

Para citar Guillaume Nodet (autor de Karaf) daqui :

Felix é apenas o tempo de execução principal do OSGi. O Karaf fornece uma "distribuição" baseada no Felix, adicionando outros recursos, como um console, um mecanismo de comunicação remota SSH, um implementador de arquivos e muito mais.

Neste diagrama da arquitetura Karaf, Felix (ou outra implementação OSGi - atualmente o Equinox também é suportado) é a caixa OSGi, as outras caixas são os recursos adicionados pelo Karaf:

Arquitetura Karaf Portanto, a menos que você tenha necessidades específicas que não sejam atendidas pelo Karaf (exigindo acesso à implementação subjacente), geralmente faz sentido usá-lo, pois fornece mais 'pronto para uso'.

Matthew Murdoch
fonte
5
Um recurso interessante de qualquer contêiner OSGi é que você pode selecionar apenas os pacotes configuráveis ​​necessários e implementá-los em seu contêiner. Portanto, meu conselho seria primeiro arquitetar seu aplicativo e depois escolher o que você precisa. O conselho para "apenas instalar a plataforma inteira porque ela é rica em recursos" parece um pouco com o retorno aos enormes servidores de aplicativos Java EE. Agora não estou dizendo que o Apache Karaf seja tão grande quanto esses, estou apenas afirmando que você pode e deve apenas implantar o que realmente precisa.
Marcel Offermans
1
Parece-me que esta resposta está incompleta, pois não menciona o caso de uso da incorporação do Felix em um aplicativo (sem a necessidade de usar um contêiner como o Karaf) - por exemplo, para fornecer capacidade de plug-in - que é minha interpretação do seguinte link. Estou errado? (Eu não sou especialista.) Link: felix.apache.org/documentation/subprojects/…
J Woodchuck
6

@Marcel Karaf não é monolítico ou enorme como um servidor Java EE. É uma implementação muito pequena e minimalista. É um produto principal, sem muitas funcionalidades, além de um console básico, carregamento de arquivos para que você possa realmente ler arquivos de configuração, etc. O arquivo zip mais recente é de 19,1 MB. Sim. Pequeno. Ele pode ser executado facilmente em dispositivos pequenos e trabalhar de forma integrada.

O que você pode estar pensando é algo mais parecido com o ServiceMix, que usa o Karaf como núcleo / kernel. Mas inclui CXF, ActiveMQ, Camel e outras bibliotecas em sua configuração completa. Mesmo assim, eles têm tamanhos mínimo, médio e completo.

Realmente, para 99% dos projetos por aí, não faria sentido começar diretamente com Felix e não usar o Karaf.

Ranx0r0x
fonte
-1

Atualmente, existem três contêineres OSGi de código aberto 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

O projeto Apache mantém um contêiner OSGi de uso geral chamado Felix. Aqui é usado como ServiceMix e

A principal diferença entre o ServiceMix e o Karaf é que o ServiceMix agrupa vários outros componentes de integração - o broker de mensagens ActiveMQ, o mecanismo de roteamento Camel e algumas outras coisas

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

Alejandro Hdz
fonte