TSM - Recenzia carții: OSGi în Action

Silviu Dumitrescu - Line manager@Telenav

OSGi este acronimul pentru "Open Services Gateway inițiative" şi reprezintă un framework ce defineşte un modul dinamic de sistem pentru Java. Originile framework-ului se află undeva la începutul anilor 2000.

Tipul de tehnologie pe care OSGi-ul îl foloseşte, deşi se bazează pe Java, este relativ diferit faţă de ceea ce ştiam până acum: programarea orientată pe obiecte sau, mai încolo, în enterprise, programarea orientată pe componente.

Cartea pe care v-o supun atenţiei, OSGi în Action, avându-i ca autori pe Richard S. Hall, Karl Pauls, Stuart McCulloch şi David Savage, este, ca stil de abordare, una dintre preferatele mele. Dacă reuşiţi să parcurgeţi întreg materialul cărţii şi să înţelegeţi toate amănuntele, care abundă, cu siguranţă că veţi şti OSGi. Mai mult, sunteţi în stare să contribuiţi la tendinţele actuale de dezvoltare ale tehnologiilor de programare. Este un domeniu în care doresc să vă însoţesc.

Primul aspect pe care vreau să-l evidenţiez este că specificaţiile OSGi au multiple implementări. Eclipse RCP versiunea 4 foloseşte implementarea Equinox, care constituie un mediu de execuţie pe care aplicaţiile Eclipse se bazează. În Eclipse cea mai mică unitate de modularizare este plugin-ul. Termenii plug-in şi bundle sunt aproape sinonimi, adică un plug-in Eclipse este un bundle OSGi şi viceversa. Eclipse Equinox extinde conceptul de bundle cu conceptul de extension point.

Făcând o scurtă descriere a modelului folosit de OSGi, acesta este împărţit pe trei layer-e:

Acestea sunt câteva dintre cele mai importante concepte furnizate de OSGi. Detalii şi numeroase exemple puteţi găsi în carte.

Materialul cărţii este structurat în trei părţi: elemente introductive (modularitate, cicluri de viaţă, servicii), detalii despre elementele de baza OSGi (transformarea unui jar într-un bundle, împărţirea aplicaţiei în bundle-uri, testarea aplicaţiei, debug-area unei aplicaţii, versionare, gestiunea aplicaţiei) şi topicuri avansate.

După cum am văzut până în acest moment, acest framework modifică stilul clasic de dezvoltare al unei aplicaţii. Întrebarea firească ar fi unde este integrat acest framework? În primul rând în aplicaţii ce dezvoltă fat clients.

Pătrunderea OSGi-ului în lumea Java Enterprise este încă la început. Poate singura aplicabilitate cunoscută şi apreciată a OSGi-ului este la nivelul serverelor de aplicaţie: Glassfish V3, Websphere, etc. În plus, modelul orientat pe layer-e al OSGi-ului este cât de cât asemănător cu ceea ce oferă EJB-urile.

De asemenea, OSGi se foloseşte ca model sau integrat în serviciul de rețea JINI (asemănător cu RMI, dar mai avansat), tehnologia JMX (Java Management Extension) şi altele. În partea avansată a conceptelor expuse în această carte, autorii prezintă relaţia care există între model şi component (capitolul 11, pagina 345). Interesantă este concluzia: modulele lucrează cu un cod static şi dependente la compilare în timp ce componentele lucrează cu instanţe şi dependenţe la execuţie.

Specificaţiile OSGi definesc şi un model componentă, care de fapt este o componentă specială numită service-oriented component model. Acest model se bazează pe legarea la execuţie a serviciului furnizat de serviciul cerut folosind un service-oriented interaction pattern. Aceasta conduce la o flexibilitate sporită în compunerea aplicaţiei. Marea slăbiciune a modelului componentă OSGi este că lasă componentelor gestionarea manuală a dependenţelor de la service-layer deşi cele de la modul layer sunt gestionate automat. Soluţia a fost găsită de OSGi Alliance printr-un component framework numit Declarative Services.

Pe lângă aceasta, autorii mai prezintă iPOJO ca model componentă(în secţiunea 12.2, pagina 391). iPOJO simplifică crearea dinamică a aplicaţiilor orientate pe servicii din OSGi. Partea finală a cărţii se ocupă de legătura ce ar putea exista între aplicaţiile web, mai precis modul în care OSGi poate lucra într-un context web.

După cum afirmau şi autorii, modelele folosite de OSGi sunt încă într-o stare primitivă. Se susţine chiar că OSGi este acolo unde era programarea orientată pe obiecte acum 25 de ani. Tendinţa este însă, de folosire pe scară cât mai largă a acestei tehnologii.

Deşi pare dificil şi cel puţin inconfortabil, folosirea OSGi-ului aduce numeroase îmbunătăţiri în lumea dinamică a aplicaţiilor. Doar ideea update-ului şi instalării de module fără a opri aplicaţia dă numeroase motive de gândire dezvoltatorilor.

Poate ultimul lucru care ar trebui remarcat este acela că parcurgerea acestei cărţi necesită cunoştinţe avansate de Java Standard, cunoştinţele de Java Enterprise fiind utile doar pentru înţelegere paralelor făcute de autori şi pentru a simţi adevăratul progres pe care OSGi-ul îl aduce în lumea dezvoltatorilor de soft.

 

Vă doresc lectură plăcută şi aştept observaţii şi păreri!