Numărul 9
Last issue

Dispozitive mobile

Get it on Google Play

Abonare revistă



Numerele anterioare


Numărul 25
Issue:25
Numărul 24
Issue:24
Numărul 23
Issue:23
Numărul 22
Issue:22
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

Mă fascinează conceptul de ”work-life balance” sau mai simplu găsirea acelui echilibru despre care se vorbește din ce în ce maides, între viața personală și cea profesională. Într-o eră tehnologică, în care timpul parcă zboară, este din ce în ce mai greu să îmbini cariera cu viața personală. Am întâlnit persoane care să ...

Problema concurenţei este legată de evoluţia sistemelor de operare şi din dorinţa de creştere a performanţelor aplicaţiilor. Sistemele de operare moderne au mai multe task-uri de executat în acelaşi timp. Deseori numărul de task-uri este mai mare decât numărul de procesoare. Pentru a rezolva această problemă, sistemul de operare ...

“Dacă vrei să nu muncești toată viaţa, fă ceea ce iubești cel mai mult” – Confucius . Aceste cuvinte îl descriu cel mai bine pe Marius Corîci. În 2003 a început o afacere în offline înfiinţând compania ITS Group ca și franciză pentru Romstal, cel mai mare retai- ler pentru instalaţii termo-hidro-sanitare din Sud-Est-ul Europ...

Toţi cei care au interacţionat, indiferent cât de puţin cu Microsoft Project sunt unanim de acord că este o foarte puternică unealtă de scheduling. Altfel spus, dacă îi definim şi detaliem task-urile, se pricepe foarte bine să construiască un plan (mai corect spus un schedule) mai bine ca oricine. Dar, pentru a putea defini clar task-ur...

Sponsori

ISDC

SmallFootprint

TPG



fortech accesa Betfair yardi accenture msg mozaic works

Media

Reclamă