ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 9
Abonament PDF

Recenzia carții: OSGi în Action

Silviu Dumitrescu
Line manager@Telenav



PROGRAMARE

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!

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects