
O OSGi ou Open Services Gateway Initiative é uma arquitetura baseada em aplicações modulares e de bibliotecas.
Cada aplicação modular ou bundle tem seu funcionamento independente.
Tecnicamente, cada bundle é um jar com MANIFEST.MF contendo no seu cabeçalho as especificações do OSGi.
A plataforma OSGi permite ligar, desligar, reiniciar os módulos independentemente. Além das funcionalidades citadas, existem outras funcionalidades na plataforma.
Por não ter acoplamento entre os módulos, fica simples a manipulação dos componentes.
Apache Karaf.
O Apache Karaf é uma plataforma baseado em OSGi com implementação chamado Apache Félix.
A plataforma permite que o controle seja feita de forma intuitiva via linha de comando.
Para baixar a documentação e aplicação acesse: https://karaf.apache.org/.
Testando Karaf e um Bundle.
Com a versão do Karaf mais atual na máquina, entre no diretório bin do Karaf e execute no terminal:
$./karaf start

Baixe um exemplo no meu repositorio Git: https://github.com/sidneynakatani/nakatani-osgi.git.
Gere um build e instale o jar no terminal do Karaf:
>bundle:install mvn:osgi-example/nakatani-osgi/0.0.1-SNAPSHOT

Agora vamos executar e parar o bundle:
> bundle:start 48
> bundle:stop 48

Podemos listar os bundles:
>list

Conclusão.
O Apache Karaf permite criar aplicações em forma de módulos ou bundles de forma fácil, rápida e de baixo acoplamento utilizando a especificação OSGi.