Ja teniu el vostre programari instal·lat, però encara necessiteu un mètode més eficaç per permetre als usuaris tècnics ampliar la plataforma.
Tot i que OSGi és conegut per la majoria de desenvolupadors de Java, integrar-lo al vostre producte pot semblar una tasca descoratjadora. La falta de claredat sobre el funcionament precís d'OSGi dificulta encara més el camí.
En contrast amb qualsevol cosa amb què els agradaria experimentar, OSGi se sent més com intentar navegar per l'ample mar per a molts desenvolupadors de Java.
Aquest article us presentarà el tutorial de primavera d'OSGi Felix mitjançant un programa senzill i us detallarà els seus avantatges i altres detalls importants.
Aleshores, què és OSGi?
La creació i distribució de mòduls i components és possible gràcies al marc de Java conegut com OSGi (Open Service Gateway Initiative).
Destaca l'encapsulació de funcions i l'acoblament fluix, que ofereix diversos avantatges als desenvolupadors, inclosa la funcionalitat modular que es pot transferir fàcilment entre codis font i proves que no necessiten dependències interminables.
Com funciona OSGi?
Un sistema de components dinàmics per a Java es defineix per un conjunt d'especificacions anomenades OSGi. Aquestes especificacions permeten un enfocament de desenvolupament on una aplicació es construeix a partir d'una sèrie de parts i després s'empaqueta en paquets.
Aquests components utilitzen serveis locals i basats en xarxa per comunicar-se. L'objectiu és fer que el codi bàsic del programa sigui tan compacte com sigui possible. És possible un acoblament elevat entre aquest codi i diversos components.
Els elements de construcció reutilitzables de l'aplicació s'anomenen components. Penseu en funcions com un carretó de la compra per al vostre lloc web de comerç electrònic o una aplicació de nòmines per al vostre sistema de gestió de personal.
Els components poden utilitzar OSGi per ocultar les seves implementacions d'altres components i només proporcionar-los les dades necessàries mitjançant serveis.
Això evita que els components canviïn involuntàriament dades a les quals no haurien de tenir accés i gestiona les dependències.
Totes les connexions entre components d'una aplicació OSGi es fan mitjançant serveis en un món ideal. Un paquet Java conté l'API que s'especifica per als serveis.
La col·laboració entre proveïdors de serveis i clients requereix l'ús de classes i/o interfícies, que conformen l'API.
Tots els components OSGi estan empaquetats en paquets, cadascun dels quals inclou els recursos necessaris per funcionar. Els paquets tenen força clar què necessiten del medi ambient i de què són capaços.
Beneficis
- Les aplicacions OSGi tenen accés a repositoris de paquets externs.
- El marc permet un disseny orientat al servei a nivell de mòdul.
- Permet gestionar les versions i dependències dels paquets d'aplicacions a més d'estandarditzar i facilitar la integració de biblioteques de tercers.
- Les aplicacions són més adaptables a les demandes canviants, més portàtils i més ràpides de reenginyeria.
- A aplicació web es pot desplegar com un grup de paquets OSGi versionats amb una vida útil dinàmica gràcies a la integració del framework amb el model de programació Java EE.
- En lloc d'instal·lar-se com a biblioteca de tercers com a part de l'aplicació, el marc proporciona el muntatge declaratiu i les proves d'unitat simplificades del Spring Framework en una forma estandarditzada que es proporciona com a part del temps d'execució del servidor d'aplicacions.
- Per a aplicacions corporatives formades per diversos paquets versionats amb cicles de vida dinàmics, el marc ofereix aïllament.
- Conté un dipòsit de paquets integrat que pot emmagatzemar paquets comuns i versionats compartits utilitzats per diverses aplicacions, evitant que cada aplicació desplega una còpia separada de cada biblioteca compartida.
Començant amb OSGi Felix spring
Obtenció dels recursos
En baixar la versió més recent d'Apache Karaf de aquest lloc, podem començar la nostra aventura OSGi.
Basat en Apache Felix, la implementació Apache de l'especificació OSGi, Apache Karaf proporciona una plataforma per a aplicacions basades en OSGi.
Karaf ofereix diverses funcions útils a la part superior de Felix que ens ajudaran a familiaritzar-nos amb OSGi, com ara una interfície de línia d'ordres que ens permetrà comunicar-nos amb la plataforma.
Punt d'entrada per a paquets
Una aplicació s'ha d'empaquetar com a paquet OSGi abans que es pugui executar en un entorn OSGi. A més, s'ha d'especificar el punt d'entrada de l'aplicació; no és la funció pública estàndard void main(String[] args).
Així que comencem per crear un "Hola món” aplicació basada en OSGi.
Comencem establint una dependència bàsica de l'API OSGi:
El temps d'execució de l'OSGi tindrà accés a la dependència, per tant, el paquet no cal que la contingui. Per tant, està marcat com a subministrat.
Ara creem la classe HelloWorld senzilla:
Les classes que actuen com a punts d'entrada per als paquets han d'implementar la interfície BundleActivator proporcionada per OSGi.
Quan es llança el paquet que conté aquesta classe, la plataforma OSGi crida a la funció start(). D'altra banda, poc abans que el paquet s'atura, es crida la funció stop().
No oblidem que cada paquet només pot tenir un BundleActivator. Ambdues maneres es poden comunicar amb el temps d'execució OSGi mitjançant l'objecte BundleContext que es dóna.
Creació d'un paquet
Feu que el pom.xml sigui un veritable paquet OSGi fent els canvis necessaris.
Primer hem d'expressar clarament que el nostre objectiu és produir un paquet.
A continuació, utilitzem el connector maven-bundle-plugin per empaquetar la classe HelloWorld com a paquet OSGi, cortesia de la comunitat Apache Felix:
Els valors de les capçaleres OSGi que volem incloure al fitxer MANIFEST del paquet s'especifiquen a la secció d'instruccions.
Bundle-Activator és efectivament el nom qualificat de la solució BundleActivator que s'utilitzarà per iniciar i aturar el paquet. És compatible amb la classe acabada de crear.
Tot i que no és una capçalera OSGi, la capçalera Private-Package indica al connector que afegeixi el paquet al paquet, però simplement no el faci accessible per a altres connectors. L'ordre mvn install s'ha d'utilitzar per crear el paquet.
Instal·lació i execució del paquet
Comencem Karaf executant aquesta comanda:
on "KARAF HOME" fa referència a la carpeta on es va configurar Karaf. Podem utilitzar l'ordre següent per instal·lar el paquet quan aparegui l'indicador de la consola Karaf:
Utilitzant el dipòsit local de Maven és com se li diu a Karaf que carregui el paquet.
En retornant l'identificador numèric del paquet, Karaf l'escriu. Aquest identificador pot variar en funció de quants paquets s'hagin instal·lat prèviament. El paquet s'ha instal·lat correctament i l'ordre per llançar-lo és el següent:
En el moment en què inicieu el paquet, es mostra "Hello World by Jay". Ara podem aturar i eliminar el paquet utilitzant:
La consola mostra "Goodbye World by Jay".
Conclusió
Els desenvolupadors poden afegir fàcilment noves funcionalitats a una aplicació web existent mentre la mantenen segura i aïllada d'altres components del programa principal utilitzant OSGi.
Hem après sobre OSGi en aquesta publicació, incloent com funciona, els seus avantatges i un programa senzill. No és difícil incorporar OSGi a la vostra pròpia aplicació.
Feliç codificació!
Deixa un comentari