Xa tes o teu software instalado, pero aínda necesitas un método máis eficaz que permita aos teus usuarios técnicos ampliar a plataforma.
Aínda que OSGi é coñecido pola maioría dos desenvolvedores de Java, integralo no teu produto pode parecer unha tarefa desalentadora. A falta de claridade sobre o funcionamento preciso de OSGi confunde aínda máis o camiño a seguir.
En contraste con calquera cousa que lles gustaría experimentar, OSGi séntese máis como tentar navegar polo amplo mar para moitos desenvolvedores de Java.
Este artigo presentarache o tutorial de primavera de OSGi Felix mediante un programa sinxelo e explicará as súas vantaxes e outros detalles importantes.
Entón, que é OSGi?
A creación e distribución de módulos e compoñentes é posible grazas ao framework Java coñecido como OSGi (Open Service Gateway Initiative).
Destaca a encapsulación de funcións e o acoplamento solto, o que ofrece varias vantaxes aos desenvolvedores, incluída a funcionalidade modular que se pode transferir facilmente entre códigos fonte e probas que non precisan dependencias infinitas.
Como funciona OSGi?
Un sistema de compoñentes dinámicos para Java está definido por un conxunto de especificacións chamado OSGi. Estas especificacións permiten un enfoque de desenvolvemento no que unha aplicación constrúese a partir dunha serie de partes e despois empaquetada en paquetes.
Estes compoñentes utilizan servizos locais e baseados en rede para comunicarse. O obxectivo é facer que o código central do programa sexa o máis compacto posible. É posible un alto acoplamento entre este código e varios compoñentes.
Os elementos de construción reutilizables da aplicación chámanse compoñentes. Pense en funcións como un carro da compra para o seu sitio web de comercio electrónico ou unha aplicación de nómina para o seu sistema de xestión de persoal.
Os compoñentes poden usar OSGi para ocultar as súas implementacións doutros compoñentes e só proporcionarlles os datos necesarios a través dos servizos.
Isto evita que os compoñentes cambien involuntariamente os datos aos que non deberían ter acceso e xestiona as dependencias.
Todas as conexións entre compoñentes dunha aplicación OSGi realízanse mediante servizos nun mundo ideal. Un paquete Java contén a API que se especifica para os servizos.
A colaboración entre provedores de servizos e clientes require o uso de clases e/ou interfaces, que conforman a API.
Todos os compoñentes de OSGi están empaquetados en paquetes, cada un dos cales inclúe os recursos que necesitan para funcionar. Os paquetes teñen bastante claro o que necesitan do medio ambiente e de que son capaces.
Beneficios
- As aplicacións OSGi teñen acceso a repositorios de paquetes externos.
- O marco permite un deseño orientado a servizos a nivel de módulo.
- Permite xestionar as versións e dependencias dos paquetes de aplicacións ademais de estandarizar e facilitar a integración de bibliotecas de terceiros.
- As aplicacións son máis adaptables ás demandas cambiantes, son máis portátiles e son máis rápidas de redeseñar.
- A aplicación web pódese despregar como un grupo de paquetes OSGi versionados cunha vida útil dinámica grazas á integración do framework co modelo de programación Java EE.
- En lugar de instalarse como unha biblioteca de terceiros como parte da aplicación, o marco proporciona a montaxe declarativa e as probas unitarias simplificadas do Spring Framework nunha forma estandarizada que se proporciona como parte do tempo de execución do servidor de aplicacións.
- Para aplicacións corporativas formadas por varios paquetes versionados con ciclos de vida dinámicos, o marco ofrece illamento.
- Contén un repositorio de paquetes integrado que pode almacenar paquetes compartidos comúns e versionados utilizados por varias aplicacións, evitando que cada aplicación despregue unha copia separada de cada biblioteca compartida.
Comezando con OSGi Felix spring
Obtención dos recursos
Ao descargar a versión máis recente de Apache Karaf desde este sitio, podemos comezar a nosa aventura OSGi.
Baseado en Apache Felix, a implementación de Apache da especificación OSGi, Apache Karaf ofrece unha plataforma para aplicacións baseadas en OSGi.
Karaf ofrece varias funcións útiles ademais de Felix que nos axudarán a familiarizarnos con OSGi, como unha interface de liña de comandos que nos permitirá comunicarnos coa plataforma.
Punto de entrada para paquetes
Unha aplicación debe estar empaquetada como un paquete OSGi antes de poder executala nun ambiente OSGi. Ademais, debe especificarse o punto de entrada da aplicación; non é a función pública estándar void main(String[] args).
Entón, comecemos creando un "Ola mundo” aplicación baseada en OSGi.
Comezamos establecendo unha dependencia básica da API OSGi:
O tempo de execución de OSGi terá acceso á dependencia, polo que o paquete non necesita contela. Polo tanto, está marcado como subministrado.
Agora imos crear a clase simple HelloWorld:
As clases que actúan como puntos de entrada para paquetes deben implementar a interface BundleActivator proporcionada por OSGi.
Cando se inicia o paquete que contén esta clase, a plataforma OSGi chama á función start(). Por outra banda, pouco antes de que se deteña o paquete, chámase a función stop().
Non esquezamos que cada paquete só pode ter un BundleActivator. Ambas as dúas formas poden comunicarse co tempo de execución de OSGi usando o obxecto BundleContext que se dá.
Creando un paquete
Fai do pom.xml un verdadeiro paquete OSGi facendo os cambios necesarios.
Primeiro debemos expresar claramente que o noso obxectivo é producir un paquete.
Despois, usamos o complemento maven-bundle-plugin para empaquetar a clase HelloWorld como un paquete OSGi, cortesía da comunidade Apache Felix:
Os valores das cabeceiras OSGi que queremos incluír no ficheiro MANIFEST do paquete especifícanse na sección de instrucións.
Bundle-Activator é realmente o nome debidamente cualificado da solución BundleActivator que se empregará para iniciar e deter o paquete. É compatible coa clase que se acaba de crear.
Aínda que non é unha cabeceira OSGi, a cabeceira Private-Package indica ao complemento que engada o paquete ao paquete pero que non o faga accesible a outros complementos. O comando mvn install debe usarse para crear o paquete.
Instalación e execución do paquete
Comecemos Karaf executando este comando:
onde "KARAF HOME" refírese ao cartafol onde se configurou Karaf. Podemos usar o seguinte comando para instalar o paquete cando apareza o indicador da consola Karaf:
Usando o repositorio local de Maven é como se lle indica a Karaf que cargue o paquete.
Devolvendo o ID numérico do paquete, Karaf escríbeo. Este ID pode variar dependendo de cantos paquetes se instalaron previamente. O paquete instalouse correctamente e o comando para inicialo é o seguinte:
No momento en que inicias o paquete, aparece "Hello World by Jay". Agora podemos deter e eliminar o paquete usando:
A consola mostra "Goodbye World by Jay".
Conclusión
Os desenvolvedores poden engadir facilmente novas funcionalidades a unha aplicación web existente mentres a manteñen segura e illada doutros compoñentes do programa principal usando OSGi.
Aprendemos sobre OSGi nesta publicación, incluíndo como funciona, as súas vantaxes e un programa sinxelo. Non é difícil incorporar OSGi á túa propia aplicación.
Feliz codificación!
Deixe unha resposta