Avete digià u vostru software in u locu, ma avete sempre bisognu di un metudu più efficau di permette à i vostri utilizatori tecnichi per espansione a piattaforma.
Ancu s'è OSGi hè ben cunnisciutu da a maiò parte di i sviluppatori di Java, l'integrazione in u vostru pruduttu pò sembrà un compitu spropositu. A mancanza di chiarezza annantu à u funziunamentu precisu di l'OSGi cunfundisce ancu a strada.
In cuntrastu à tuttu ciò ch'elli vulianu sperimentà, OSGi si senti più di pruvà à navigà u largu mare à parechji sviluppatori Java.
Stu articulu vi intruduce à u tutoriale primavera OSGi Felix cù un prugrammu dritta è andà à traversu, i so vantaghji, è altri ditagli impurtanti.
Allora chì hè OSGi?
A creazione è a distribuzione di moduli è cumpunenti hè pussibule da u framework Java cunnisciutu cum'è OSGi (Open Service Gateway Initiative).
Enfatiza l'incapsulazione di e funzioni è l'accoppiamentu loose, chì offre parechji vantaghji à i sviluppatori, cumprese a funziunalità modulare chì hè facilmente trasferibile trà i codici fonte è teste chì ùn anu micca bisognu di dependenze infinite.
Cumu funziona l'OSGi?
Un sistema di cumpunenti dinamichi per Java hè definitu da un settore di specificazioni chjamati OSGi. Queste specifiche permettenu un approcciu di sviluppu induve una applicazione hè custruita da una quantità di parti è poi imballata in fasci.
I servizii lucali è basati in rete sò utilizati da questi cumpunenti per cumunicà. Fà u codice core di u prugramma cum'è compactu cum'è fattibile hè u scopu. High coupling trà stu codice è parechji cumpunenti hè pussibule.
L'elementi di custruzzione riutilizzabili di l'applicazione sò chjamati cumpunenti. Pensate à e funzioni cum'è un carrettu di shopping per u vostru situ web di e-commerce o una applicazione di paga per u vostru sistema di gestione di u persunale.
I cumpunenti ponu utilizà OSGi per ammuccià e so implementazioni da altri cumpunenti è furnisce solu e dati necessarii per elli via servizii.
Questu impedisce à i cumpunenti di cambià involontariamente e dati chì ùn anu micca accessu è gestisce e dipendenze.
Tutte e cunnessione trà i cumpunenti in una applicazione OSGi sò fatti attraversu servizii in un mondu ideale. Un pacchettu Java cuntene l'API chì hè specificatu per i servizii.
A cullaburazione trà i servizii di serviziu è i clienti richiede l'usu di classi è / o interfacce, chì custituiscenu l'API.
Tutti i cumpunenti OSGi sò imballati inseme in fasci, ognuna di e quali include e risorse chì necessitanu per funziunà. Bundles sò abbastanza chjaru di ciò chì anu bisognu di l'ambiente è ciò chì sò capaci di.
benefici
- L'applicazioni OSGi anu accessu à i repositori di bundle esterni.
- U quadru permette u disignu orientatu à u serviziu à u livellu di u modulu.
- Permette di gestisce e versioni è dipendenze di i pacchetti di l'applicazioni in più di standardizà è rende più faciule l'integrazione di biblioteche di terzu.
- L'applicazioni sò più adattabili à e dumande cambiante, più portable, è più veloci à reingegneria.
- A applicazione web pò esse implementatu cum'è un gruppu di bundle OSGi versionati cù una vita dinamica grazie à l'integrazione di u framework cù u mudellu di prugrammazione Java EE.
- Invece di esse stallatu cum'è una libreria di terzu cum'è parte di l'applicazione, u quadru furnisce l'assemblea dichjarazione è a prova di unità simplificata di u Spring Framework in una forma standardizzata chì hè furnita cum'è parte di u runtime di u servitore di l'applicazioni.
- Per l'applicazioni corporative custituite da parechji bundle versionati cù cicli di vita dinamichi, u framework offre isolamentu.
- Contene un repository di bundle integratu chì pò almacenà bundle cumuni è versionati cumuni utilizati da parechje applicazioni, impediscendu à ogni applicazione di implementà una copia separata di ogni biblioteca spartuta.
Accuminciari cù OSGi Felix primavera
Ottene e risorse
Scarichendu a versione più recente di Apache Karaf da stu situ, pudemu inizià a nostra avventura OSGi.
Basatu nantu à Apache Felix, l'implementazione Apache di a specificazione OSGi, Apache Karaf furnisce una piattaforma per l'applicazioni basate in OSGi.
Karaf furnisce diverse funzioni utili nantu à Felix chì ci aiuterà à familiarizà cun OSGi, cum'è una interfaccia di linea di cummanda chì ci permetterà di cumunicà cù a piattaforma.
Puntu d'entrata per i Bundles
Una applicazione deve esse imballata cum'è un bundle OSGi prima di pudè esse eseguitu in un ambiente OSGi. Inoltre, u puntu di entrata di l'applicazione deve esse specificatu; ùn hè micca a funzione standard public static void main(String[] args).
Allora cuminciamu à creà un "Hola Monde” applicazione basatu annantu à OSGi.
Cuminciamu per stabilisce una dipendenza basica di l'API OSGi:
U runtime OSGi averà accessu à a dependenza, per quessa, u bundle ùn hà micca bisognu di cuntene. Per quessa, hè marcatu cum'è furnitu.
Avà criemu a classa diretta HelloWorld:
E classi chì agiscenu cum'è punti di entrata per i bundle devenu implementà l'interfaccia BundleActivator furnita da OSGi.
Quandu u bundle chì cuntene sta classa hè lanciata, a piattaforma OSGi chjama a funzione start (). Da l'altra parte, pocu prima chì u bundle hè arrestatu, a funzione stop() hè chjamata.
Ùn ci scurdemu chì ogni fasciu pò avè solu un BundleActivator. E duie manere ponu cumunicà cù u runtime OSGi utilizendu l'ughjettu BundleContext chì hè datu.
Crià un Bundle
Fate u pom.xml un veru bundle OSGi facendu i cambiamenti necessarii.
Prima ci vole à sprime chjaramente chì u nostru scopu hè di pruduce un fasciu.
Dopu, usemu u maven-bundle-plugin per imballà a classe HelloWorld cum'è un bundle OSGi, cortesia di a cumunità Apache Felix:
I valori di l'intestazione OSGi chì vulemu include in u schedariu MANIFEST di u bundle sò specificati in a sezione d'istruzzioni.
Bundle-Activator hè veramente u nome qualificatu currettamente di a suluzione BundleActivator chì serà impiegata per inizià è piantà u bundle. Hè cumpatibile cù a classa appena creata.
Mentre ùn hè micca un header OSGi, l'intestazione Private-Package urdina à u plugin per aghjunghje u pacchettu à u bundle, ma solu ùn rende micca accessibile à altri plugins. U cumandimu di installazione mvn deve esse usatu per creà u bundle.
Installazione è esecuzione di u Bundle
Cuminciamu Karaf eseguendu stu cumandamentu:
induve "KARAF HOME" si riferisce à u cartulare induve Karaf hè statu stallatu. Pudemu aduprà u cumandimu seguitu per installà u bundle quandu u prompt di a cunsola Karaf appare:
Utilizà u repositoriu Maven locale hè cumu Karaf hè dettu di carricà u bundle.
Riturnendu l'ID numericu di u fasciu, Karaf scrive. Stu ID pò differisce secondu quanti bundle sò stati installati prima. U bundle hè statu stallatu cù successu, è u cumandimu per lancià hè u seguitu:
U mumentu chì lanciate u pacchettu, "Hello World by Jay" mostra. Ora pudemu arrestà è caccià u bundle usendu:
A cunsola mostra "Goodbye World by Jay".
cunchiusioni
I sviluppatori ponu facilmente aghjunghje una nova funziunalità à una applicazione web esistente mentre a mantene a sicura è isolata da altri cumpunenti di u prugramma principale usendu OSGi.
Avemu amparatu nantu à OSGi in questu post, cumpresu cumu funziona, i so vantaghji è un prugramma simplice. Ùn hè micca difficiule d'incorporà OSGi in a vostra propria applicazione.
Felice codificazione!
Lascia un Audiolibro