Numărul 9
Last issue

Dispozitive mobile

Get it on Google Play

Abonare revistă



Numerele anterioare


Numărul 22
Issue:22
Numărul 21
Issue:21
Numărul 20
Issue:20
Numărul 19
Issue:19
Ediții anterioare

Recenzia carții: OSGi în Action

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:

  • Unitatea logică fundamentală a unei aplicaţii ce foloseşte OSGi este modulul sau bundle-ul, aşa cum mai este cunoscut. Un modul este un jar (colecţie de fişiere class şi artefacte) împreună cu un fişier de metadate (manifest). Metadatele conţin, printre altele, numele pachetelor care sunt vizibile (accesibile) din exteriorul bundle-ului. În acest mod se extinde conceptul de modificator de vizibilitate (private, public, protected sau package) pe care îl oferă Java. Mai mult, fişierul manifest declară explicit care sunt pachetele de care bundle-ul depinde. Un aspect important, de luat în calcul, este acela că se verifică consistenţa dependenţelor cu respectarea versiunii. Astfel, pentru un acelaşi modul putem avea mai multe versiuni simultan încărcate.
  • Ciclul de viaţă al unui modul este gestionat printr-un layer special. Aici este întrucâtva asemănător conceptului de ciclu de viaţă al componentelor enterprise. Acela era gestionat de către container, dar prin metode callback dezvoltatorul putea face diverse operaţii la trecerea dintr-o stare în alta. Deosebirea fundamentală era că modificările se făceau la execuţie şi nu la compilare, ca în cazul OSGi. Controlul ciclului de viaţă în OSGi are un rol important în administrarea dinamică a bundle-lului. Astfel, bundle-ul poate fi adăugat sau şters din aplicaţie fără restartarea acesteia.
  • Un al treilea element important în framework este serviciul gestionat de layer-ul de serviciu. Serviciul este oarecum asemănător unui serviciu web, prin intermediul căruia bundle-urile pot comunica. Ideea de bază, considerată şi o bună practică, este că vom expune doar o interfaţă, considerată un contract între ofertantul de servicii şi client. Serviciul poate fi publicat într-un registru de servicii unde clienţii îl pot căuta.

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!



Silviu Dumitrescu

Consultant Java
@ .msg systems Romania



Related Articles

Am plăcerea sa vă prezint primul număr al revistei Today Software Magazine. Ideea a pornit de la faptul că fiind o comunitate numeroasă în Cluj, precum și în celelalte mari orașe din România, programatorii sunt conectați profesional în marea majoritate a timpului la evenimentele din cadrul firmei. Studiul tehnologiilor sau a limbajelor ...

În numărul anterior am discutat despre Kinect, o tehnologie oferită de Microsoft ce poate monitoriza întreg corpul utilizatorilor în timp real. După o scurtă introducere, am inclus o secvență de cod pentru inițializarea device-ului, o inițializare simplă și potrivită pentru o aplicație introductivă, de tip Hello World. În continua...

Moment.js este o librărie javascript creată cu scopul de a facilita parsarea, validarea, manipularea și formatarea datelor. Orice dezvoltator de software s-a confruntat la un moment dat cu problema operării cu valori de tip date/time. Acestea dădeau mereu bătăi de cap când venea vorba de a fi folosite în efectuarea unor calcule relativ ...

În ultimul număr am descoperit lumea pe care Hadoop o formează și care este secretul prin care putem să stocăm zeci și chiar sute de TB fără nici un fel de probleme. Aceasta se bazează pe un sistem de tip master-slave extrem de simplu, dar care funcționează foarte bine....

Am văzut în numărul trecut statisticile referitoare la reușita proiectelor ce arată că rata de succes este de 24% considerând rezultatele anului 2009. Pentru a diminua riscurile unui eșec, fiecare companie se adaptează situațiilor dificile aplicând mecanisme menite să transforme potențiale pierderi într-o reușită. Într-o perspectivă generalizată folosirea intensivă a unor procese sau echipe cu grad ridicat de experiență se pot impune ca demersuri și soluții eficiente.


Citește

Sponsori

ISDC

SmallFootprint

TPG



fortech accesa Betfair yardi hp accenture mozaic works

Media

Reclamă