IBM WebSphere Application Server 7 Feature Packs: OSGI, JPA 2.0 i XML
Kako pomiriti potrebu programerâ da softversko rješenje razvijaju koristeći novije tehnologije i potrebu sistemskog sektora za čuvanjem verzije aplikativnog servera? IBM ima rješenje: WebSphere Application Server Feature Packs. Feature packs, u slobodnom prijevodu modernizacijski paketi, produžuju životni vijek verzije aplikativnog servera donoseći prijeko potrebna tehnološka osvježenja. Primjer je WAS 6.1, koji je i nakon 4 godine u mnogim tvrtkama aktualna verzija. U softverskom je svijetu to jako dugo razdoblje, a ne bi bilo moguće bez modernizacije kroz feature packove. U međuvremenu je i aktualna verzija 7.0 dobila nekoliko zanimljivih paketa modernizacije. U protekle dvije godine, otkako je sedmica izašla, dogodilo se podosta toga. U prvom je redu dovršena nekolicina standarda koji, svaki na svoj način, olakšavaju razvoj i predstavljaju najbolje programske prakse. Standardi koje izdvajamo jesu: OSGi Service Platform Enterprise Specification Release 4 version 4.2, JPA 2.0 i XML standardi XSLT 2.0, XPath 2.0 i XQuery 1.0. Podrška za sve nabrojeno dostupno je kroz dva paketa modernizacije koje predstavljamo u nastavku.
Feature Pack for OSGi Applications and Java Persistence API (JPA) 2.0
OSGI
Većina današnjih softverskih rješenja uglavnom koristi nekolicinu biblioteka u svrhu ispunjenja poslovnih zahtjeva. Takav način implementacije spada među dobre prakse (ne otkriva se topla voda), ali donosi i nove izazove. Biblioteke trećih strana pakiraju se zajedno s razvijenim izvršnim kodom u arhivu koja se šalje na deployment. Kako, u općenitom slučaju, imamo više kopija istih biblioteka, to rezultira neoptimalnim korištenjem resursa aplikativnog servera. Duplikati zauzimaju (skupu) radnu memoriju i diskovni prostor. Kako bismo riješili taj problem, dvije aplikacije možemo deployati kao tri odvojena modula; kao dva modula s izvršnim kodom i treći sa zajedničkim bibliotekama. To je, pojednostavljeno, konceptualna ideja OSGI specifikacije. Pojavljuje se i razlika u terminologiji pa u OSGI okruženju module nazivamo bundleovima. Bundleovi opisuju međuovisnost kroz pakete koje potražuju i koje nude OSGI okruženju. Na taj način naše dvije aplikacije instaliramo kao tri bundlea, a otkrivanje i povezivanje međusobnih ovisnosti prepuštamo OSGI okruženju. Tim smo mehanizmom programere (i ostale uključene) u velikoj mjeri riješili problema koji se popularno nazivaju JAR hell. Naime, OSGI bundle osim naziva specificira i verziju biblioteka koje su potrebne za funkcioniranje modula. Tako je moguće deployati više verzija iste biblioteke bez glavobolje izazvane međuovisnostima.

Međuodnosi bundleova u OSGi okruženju
Service registry
Osim biblioteka, OSGI okruženje omogućuje da se bundleovi funkcionalno povezuju servisima. Kroz service registry moguće je Plain Old Java Objects (POJO) servise registrirati, pronaći te konzumirati iz drugog bundlea. Uz znanje da OSGI omogućuje instaliranje, povezivanje i pokretanje bundleova bez ponovnog pokretanja samog kontejnera, vidimo da taj mehanizam omogućuje komponentni razvoj softverskog rješenja. Na programeru je da napiše kod te ga zapakira u jedan od bundlea softverskog rješenja (podatkovni, integracijski, prezentacijski), a na OSGI izvršnom okruženju je da bundleove poveže s potrebnim bibliotekama i servisima.
Pretvorba EAR-a u OSGI bundle
Razveselit će vas da standardne (JEE) web-aplikacije možemo pretvoriti u web application bundles (WEB) na veoma jednostavan način. Dovoljno je promijeniti ekstenziju datoteke iz .ear u .eba te je importirati u WebSphere® Application Server kao Asset. To je dovoljno za početak, no za puno iskorištenje mogućnosti OSGI kontejnera potrebno je softversko rješenje dizajnirati kroz međusobno povezane module.
JPA 2.0
Mapiranje objekata u relacijski model (bazu podataka) jedna je od prvih zadaća postavljenih pred Java enterprise aplikacije. Tradicionalno, taj se posao obavlja pomoću JDBC specifikacije koja apstrahira različitosti implementacija relacijskih baza podataka. U slučajevima kada se traži povećana produktivnost i fleksibilnost, na štetu smanjene kontrole nad SQL upitima, JDBC nije dovoljan. Moderniji i sve češće upotrebljavan način rada s bazom podataka jest uporaba programskih alata za objektno-relacijsko mapiranje. Java standard programskog okruženja za mapiranje definiran je kroz specifikaciju JSR 220, a standard nazvan Java Persistence API (JPA 1.0). WAS 7 dolazi s implementacijom specifikacije. Kako to obično biva, u prvoj verziji specifikacije nisu pokriveni svi slučajevi uporabe pa je tako nedavno završena nadogradnja, verzija 2.0. Kroz paket modernizacije WAS-a 7, zajedno s podrškom za OSGI, dolazi i podrška za JPA 2.0. To nije slučajno. Naime, kao dio OSGI enterprise specifikacije definira se posebna vrsta Persistence i Client bundleova. Na taj je način moguće implementirati Persistance bundle koristeći JPA 2 tehnologiju i deployati ga u OSGI kontejner kako bi ih ostali (Client) bundleovi mogli upotrebljavati u situacijama kada je potrebno raditi s bazom podataka.
Nove funkcionalnosti JPA 2.0
Projekti na kojima se već upotrebljava JPA, ili oni koji su u fazi dizajna, trebali bi razmotriti prelazak na verziju 2.0 zbog nekoliko razloga:
- Bolja je podrška za kompliciranije scenarije kao što su ugniježđeni (embeddable) objekti i složeni primarni ključevi.
- Criteria query API – omogućava nam da umjesto da pišemo upite kao slobodan tekst koristimo Javu i sve blagodati razvojnog okruženja (code completion, provjeru sintakse…).
- Bean validation – uz metapodatke(anotacije) o mapiranju moguće dodati i one za validaciju.
- Veća je količina poboljšanja koja nije vidljiva izvana kao, npr., bolja podrška za serijalizaciju.
JPA 2.0 dio je JEE 6 standarda koji će biti podržan u WebSphereu 8, a kroz ovaj paket modernizacije možete ga koristiti već danas.
Feature Pack for XML
Možete li se sjetiti novije aplikacije u čijem ste razvoju sudjelovali a da ona u nekom segmentu ne koristi XML? Ja ne mogu. Danas, u SOA svijetu, XML je de facto standard za razmjenu podataka preko žice (wire format). Zbog toga je bitno, složit ćete se, imati mogućnost korištenja zadnje W3C specifikacije XML standarda. Feature Pack for XML u WAS 7 donosi podršku za sljedeće standarde:
- Extensible Stylesheet Language Transformations (XSLT) 2.0
- XML Path Language (XPath) 2.0
- XML Query Language (XQuery) 1.0
Ta su tri standarda međusobno povezana. XPath se koristi u XSLT 2.0 transformacijama, a podskup je XQuery 1.0 specifikacije. Zbog toga podrška za te tri specifikacije dolazi u paketu. Kroz podršku za XSLT 2.0 dobivamo podršku za sve ugrađene tipove u XML Schemi i veći broj novih operatora i funkcija. Bez obzira na to želimo li dokument transformirati koristeći korisnički definirane funkcije ili pak u više izlaznih dokumenata, sada nam je to omogućeno. XPath je standardan način za poslove izvlačenja određenih elemenata iz XML dokumenta. Zadatak koji je danas veoma čest. Verzijom 2.0 na raspolaganju imamo povećan skup operatora i funkcija. Na taj način operacije koje su s XPathom 1.0 bile teške ili nemoguće s verzijom 2.0 postaju jednostavne. Za kompliciranije scenarije, koje je do sada bilo teško riješiti bez programiranja u Javi, feature pack donosi implementaciju XQuery 1.0 specifikacije. XQuery je jezik sa sintaksom koja uključuje XPath i izraze slične SQL-u. Često ćemo ga koristiti kao jezik za izvlačenje podataka iz XML repozitorija. Baš kao SQL za rad s relacijskom bazom podataka. Zapravo DB2 v9 podržava XML tip podatka, a zajedno s njime i XQuery kao jezik za manipulaciju podacima. Tako je dobrodošla podrška za XQuery i u WAS-u kako bi se olakšao rad s podacima u XML formatu.
Za kraj alati. Razvoj rješenja koji koristi Feature pack for XML podržan je u RAD-u 7.5.5.1 nadalje. Moguće je i debugiranje XSLT 2.0 transformacija, što RAD stavlja ispred sličnih alata. Podrška za OSGI i JPA 2.0 dostupna je kroz betu Rational Application Developera 8.0.
Cilj ovog kratkog pregleda modernizacijskih paketa za WAS 7.0 bio je približiti vam tehnologije koje postaju dostupne i koje će vam, nadamo se, ubrzati razvoj softverskih rješenja. OSGI, JPA 2.0 i XQuery tehnologije su čije je vrijeme došlo. Kako biste ih koristili već danas, dovoljno je besplatno skinuti feature pack arhive s IBM-ovih stranica te ih instalirati na već postojeću instalaciju WAS-a 7.
Miroslav Rešetar

