Download as odt, pdf, or txt
Download as odt, pdf, or txt
You are on page 1of 10

TEMA:

RAZGLEDNICA SA JAVA2DAYS
KONFERENCIJE

AUTOR:

IGOR POPOV

12. NOVEMBAR 2009.


JavaSvet - otvorena java zajednica

Sadržaj
Sadržaj..................................................................................................................2
Uvod.....................................................................................................................2
O konferenciji.........................................................................................................3
Java Enterprise Edition 6..........................................................................................3
Ostale specifikacije..............................................................................................4
Enterprise Java Beans 3.1........................................................................................4
Asinhrono izvršavanje..........................................................................................4
Singleton bean....................................................................................................5
Cronoliki timer servis...........................................................................................5
Svi smo mi POJO.................................................................................................5
EJB Lite..............................................................................................................6
JNDI..................................................................................................................6
Proširivost EJB-a..................................................................................................6
GlassFish v3...........................................................................................................6
OSGi Arhitektura.................................................................................................7
GlassFish Profili...................................................................................................7
Embedovanje GlassFish-a.....................................................................................8
Portabilnost enterprise aplikacije...............................................................................8
Clouds and clusters.................................................................................................9
Hazelcast............................................................................................................9
DMTF standardizacija...........................................................................................9
Prezentacioni sloj...................................................................................................10
Apache Wicket...................................................................................................10
Popravka JSF-a..................................................................................................10
Zaključak.............................................................................................................11

Uvod
Java2Days konferencija se po prvi put organizovala ove godine i jedna je među retkima,
ako ne i jedina, pored IT Dana održanog u organizaciji JavaSveta, koja se u ovom delu
Evrope bavi trendovima Java razvoja. Održala se tokom dva dana, 8. i 9. oktobra ove,
2009. godine u Inter Expo centru lociranom na periferiji Sofije, glavnog grada Bugarske.
Kao registrovana Java korisnička grupa, JavaSvet je dobio pozivnicu da učestvuje u ovom
događaju, tako da su domaći javaši imali svoje „predstavnike” u Bugarskoj. Rezultat
odlaska jeste i ovaj izveštaj kojim konferenciju želimo da približimo i onima koji možda
nisu bili u mogućnosti da je posete.
U nastavku će biti predstavljena sama konferencija, tematske celine koje su obrađene,
kao i predavači koji su svoje znanje i iskustvo podelili sa prisutnima. Biće prikazani
najzanimljiviji aspekti predavanja koja su prikazala kako nova rešenja iz Java sveta mogu
da nam olakšaju svakodnevni rad obezbeđujući nove, prirodnije i efikasnije načine za
rešavanje poznatih problema.

O konferenciji
Može se reći da je konferencija imala za cilj da obradi tri oblasti za koje se pretpostavlja
da će biti relevantne Java zajednici u narednom periodu.
Na prvom mestu se našla Java Enterprise u svom šestom izdanju. Ovu oblast su

Razglednica sa Java2Days konferencije – Igor Popov 2


JavaSvet - otvorena java zajednica

predstavili, između ostalih, Reza Rahman kao član Java EE 6 i EJB 3.1 ekspertske grupe i
jedan od autora poznate knjige EJB 3 in Action, kao i Alexis Moussine Pouchkin ispred
Sun-a sa zvanjem GlassFish evanđeliste. Imajući na umu da je Java EE 6 najavljena za
decembar ove godine i da je GlassFish v3 njena referentna implementacija, moglo se i
unapred zaključiti da će ova predavanja biti veoma aktuelna.
Druga oblast koja je dobila dosta pažnje na Java2Days konferenciji jeste Cloud
Computing u okviru koje je obrađeno i nekoliko rešenja za klastere. Pošto trenutno
popularno tumačenje cloud-a isti predstavlja kao još jedan hype, bilo je zanimljivo čuti
John Willis-a, jednog od predavača, kako izjavljuje, da parafraziram, „Ako vam bilo ko iz
firme sa Fortune 500 liste kaže da ne koriste cloud... jednostavno lažu.”
Treća oblast je bila posvećena rešenjima za prezentacioni sloj što je, razumljivo,
izazvalo najveće interesovanje u publici i tome proporcionalni broj pitanja. Možda je
najzapaženije bilo predavanje Andrew Lombardi-a o Wicket framework-u tokom kojeg se
neprestano osvrtao na nedostatke konkurentskih rešenja, na šta se kasnije prirodno
nadovezao Josh Long dajući savete kako od JSF ideje napraviti nešto što se i može
koristiti u praksi. Jedan od zanimljivijih momenata na celoj konferenciji se desio tokom
FAQ sesije kada je Andrew izneo zapažanje da Google Web Toolkit, o kojem je prethodno
pričao Heath Kesler, usled nemogućnosti korektnog indeksiranja strana u stvari nije
kompatibilan sa search engine-om iste kompanije. Usledilo je par momenata tišine tokom
koje je Heath zamišljeno gledao u daljinu, da bi potom iskreno klimnuo glavom i pridružio
se opštem smehu koji je nakon toga usledio.
Tokom dva dana Java2Days konferencije tempo predavanja je bio veoma intenzivan, tako
da su se do ručka mogla čuti tri predavanja, između ručka i predugo iščekivane kafe
pauze još dva i konačno u trećem delu maratona i dodatna četiri. I tako u dve sale
paralelno, barem tokom prvog dana. Ukupan saldo konferencije bio je 25 tema iz
pomenute 3 oblasti koje je za zainteresovane uši preko 400 javaša približilo 18
predavača iz Francuske, Amerike, Britanije, Turske i naravno, zemlje domaćina,
Bugarske. Možda je zanimljivo, ali i isto toliko neupotrebljivo, napomenuti da je jedan od
predavača došao iz američkog gradića koji se nalazi na svega par kilometara od South
Park-a koji očigledno stvarno postoji!

Java Enterprise Edition 6


Predavanja koja su se bavila novom verzijom Java Enterprise su „Java EE 6 Preview”, „EJB
3.1 Preview”, „Get real with Java EE 6 – GlassFish v3 is swimming your way” i „Is my
J2EE/JavaEE application portable - Should I care?” Ključne reči ovde su bile Java EE 6, EJB
3.1, GlassFish v3 i portabilnost.
Java EE 6 sadrži nova verziju EJB-a - EJB 3.1 koja donosi još lakši razvoj, približava
enterprise logiku malim i srednjim aplikacijama i razbija iluziju da je ista namenjena samo
za velike sisteme i ozbiljnije kompanije. Sada je moguće napraviti običnu web aplikaciju,
odnosno WAR artifakt govoreći Maven jezikom, tako da u sebi uključuje i EJB bean-ove
koji više nisu ekskluzivno vlasništvo EAR-a. Takođe, bean je sada dodatno smršao time
što u određenim situacijama može biti definisan bez upotrebe interfejsa, koji u velikom
procentu slučajeva ne donose nikakvu dodatnu vrednost konačnom dizajnu sistema. Još
jedna od promena jeste ta da se konačno iz upotrebe izbacuju, odnosno – čine se
opcionim, XML konfiguracioni fajlovi. Kada se XML pojavio kao veliki „izum“, prva ideja je
bila primeniti ga svugde, jer je on „savršeno” rešenje za sve probleme. Vremenom se
ispostavilo da to i nije baš tako i da cepkanje jedne logičke celine na više fajlova, na
primer na EJB klasu i na EJB deskriptor ili na servlet klasu i web deskriptor, nije
najpraktičniji pristup. Sada @WebServlet, @WebFilter sa još par drugih anotacija mogu u

Razglednica sa Java2Days konferencije – Igor Popov 3


JavaSvet - otvorena java zajednica

potpunosti zameniti informacije do sada čuvane u web.xml fajlu.


Kao što je u prethodnoj verziji EJB-a entity bean izmešten u sopstvenu specifikaciju – JPA
(Java Persistance API), tako je i u ovoj verziji porodica bean-ova pretrpela određene
izmene. Uveden je nov tip – singleton bean dok message driven bean polako ide u penziju
na čije mesto dolazi ni manje ni više nego – anotacija!

Ostale specifikacije
Tokom konferencije su se spominjale i mnoge druge specifikacije kojima možda i nije bilo
posvećeno celokupno predavanje, ali to nikako ne mora da znači da su manje važne.
Noviteti koji će takođe biti sastavni deo Java EE 6 paketa su, između ostalih, i Servlet 3.0
(JSR 315) sa podrškom za konfigurisanje kroz anotacije i za registraciju servleta i filtera iz
koda, JPA 2.0 (JSR 317) sa uključenim Criteria API-em, JSF 2.0 (JSR 314) sa upotrebom
Facelet-a i WebBean-ova, JCDI 1.0 aka WebBeans (JSR 299) koji zamenjuje JSF-ove
managed bean-ove i uvodi standardizovani Dependency Injection 1.0 (JSR 330), kao i
Bean Validation 1.0 (JSR 303) koji uvodi anotacije tipa @NotNull i @Size.

Enterprise Java Beans 3.1


Glavna komponenta Java EE 6 platforme jeste nova podverzija Enterprise Java Beans
specifikacije – EJB 3.1. Iako je možda na prvi pogled promena mala i decimalna, ne treba
je potceniti. Donosi mnogo prečica, prirodnijih pristupa i kod čisti od još boilerplate koda.
Anotacije su maksimalno korišćene kao sredstvo komunikacije između programera i
aplikativnog kontejnera u pitanju i programiranje se pomerilo još korak bliže meta
programiranju.
U nastavku je dat pregled nekih izmena i noviteta koje donosi ova specifikacija.

Asinhrono izvršavanje
Da li se sve više bližimo meta programiranju? Odgovor je sigurno da, ali pitanje brzine tog
putovanja je i dalje ono na koje svako od nas treba da odgovori. Anotacija @Asynchronous
dodata na bilo koju metodu session bean-a tu metodu čini – asinhronom. Realno gledano,
da li postoji opravdanje da ovakva funkcionalnost bude imalo kompleksnija? Naravno,
kada je reč o asinhronim metodama, prirodno je da povratna vrednost bude „tipa” void,
ali to ne mora biti slučaj. Java SE 5 je donela velike inovacije u samom jeziku – između
ostalih i generike, ali i jednu, možda, malo manje poznatu – generički Future<T> interfejs.
Ukoliko asinhrona metoda za povratnu vrednost ima Future tip, tada je iz pozivajućeg
koda moguće u kasnijem trenutku pristupiti rezultatu inicirane pozadinske obrade. Ovim
pristupom je moguće bez pauza u radu pokrenuti više pozadinskih obrada čuvajući
reference na njihove buduće rezultate. Nakon pozivanja potrebnih obrada u željenom
momenut može se izvršiti dereferenciranje njihovih „rezultata” čime će se pokrenuta
asinhrona izvršavanja sinhronizovati. Dakle, void za standardnu pozadinsku obradu i
Future za odlaganje momenta čekanja na kraj obrade – da li može biti jednostavnije?

Singleton bean
Singleton bean je potpuno novi član EJB porodice i predstavlja podršku samog kontejnera
za jedan od najpoznatijih paterna. Singlton je veoma često korišćen u dizajniranju
aplikacija, ali u kompleksnijim, odnosno u takozvanim enterprise, okruženjima pojam

Razglednica sa Java2Days konferencije – Igor Popov 4


JavaSvet - otvorena java zajednica

singltona dobija nove dimenzije usled mogućnosti izvršavanja koda na više JVM-ova, na
klaster i u load-balancing sistemima. Naravno i do sada su postojala rešenja za ovaj
problem, ali ni jedno nije jednostavno kao dodavanje anotacije @Singleton na session
bean. A to što je singlton u stvari poseban oblik session bean-a znači da koristi i sve
prednosti koji ovaj donosi – thread-safe okruženje, podršku transakcijama, sigurnosne
servise i druge. Koristeći standardne @PostConstruct i @PreDestroy anotacije nad
metodama singleton bean-a se, u stvari, ostvaruje prijavljivanje na startup i shutdown
događaje aplikacije. Pošto je u startu bean u potpunosti thread-safe moguće je ovo
ponašanje po potrebi izmeniti upotrebom @ConcurrencyAttribute nad željenim
metodama. Jedan scenario izmene podrazumevanog lock-ovanja radi unapređivanja
performansi bi bio postavljanje read lock-a na get metode i read-write lock-a na set
metode.

Cronoliki timer servis


Usluge timer servisa se u EJB 3.1 verziji svode na @Schedule anotaciju nad metodom koja
se želi automatski pokretati u određenim vremenskim trenucima. Sama konfiguracija ovih
„trenutaka” se izvršava na način koji je poznat svima koji su nekada podešavali cron job-
ove i koristi vrednosti ili asterikse za sekunde, minute, sate, dane u mesecu i u nedelji kao
i mesece i godine. Dakle, sva podešavanja timer zavisnih metoda se nalazi upravo tamo
gde i treba da se nalazi – uz samu metodu – nema XML-a, nema podešavanja aplikativnog
servera ili pokretanja nezavisnih “backend” aplikacija os-depedent načinom pomoću cron
job-ova.

Svi smo mi POJO


Osnovna ideja iza novih bean-ova jeste da se i oni učine običnim POJO-ima kojima se
anotacijama omogućuje korišćenje određenih enterprise servisa. Rad sa POJO klasama,
osim jednostavnosti i preglednosti, donosi i dodatnu veliku prednost kroz omogućavanje
mnogo lakšeg testiranja enterprise koda. Pomenuto obogaćivanje klasa anotacijama je
takođe dovedeno na viši nivo upotrebom „pametnih” default vrednosti. Opšteprihvaćena
ideja „konvencija umesto konfiguracije” je konačno punom parom zaživela i u Java svetu –
jer, na primer, zašto za metodu session bean-a izričito napominjati da treba da
funkcioniše u okviru transakcije, ako je to skoro uvek slučaj?

EJB Lite
Konvencija umesto konfiguracije je zaživela u još jednom aspektu EJB-ja – uveden je EJB
Lite. EJB 3.1 Lite je podskup servisa koji nudi njegov stariji brat sačinjen tako da pokriva
sve realne potrebe većine enterprise aplikacija. Neke od promena koje su ga učinili
laganim su uklanjanje podrške za message driven bean-ove s jedne i asinhronog
pozivanja s druge strane, uklanjanje timer servisa, kompletne podrške za web servise, sve
backward-compatibility podrške za EJB specifikacije starije od verzije 3, podrške za rad sa
legacy sistemima kao što je CORBA i drugo. Ovime se dolazi do efikasnijeg okruženja
za rad i pojačava se poruka da Java Enterprise nije rezervisana isključivo za
„programersku elitu“. Jedan od ciljeva EJB 3.1 specifikacije je bio i da se programiranje
učini prirodnijim, lakšim i samim tim efikasnijim, kao i da se servisi koje ista nudi približe
većem broju programera i aplikacija.

Razglednica sa Java2Days konferencije – Igor Popov 5


JavaSvet - otvorena java zajednica

JNDI
Jedan od velikih propusta ranijih EJB specifikacija jeste JNDI, jer generisanje imena nije
bilo standardizovano, odnosno izbor imena je bio ostavljen aplikativnom serveru. Ovo je
naravno dovelo do najrazličitijih rešenja koja su učinila da se naruši portabilnost
aplikacija, osobina kojom se Java često hvali. O tome koliko je jedna enterprise aplikacija
u stvarnosti portabilna, posvećeno je posebno predavanje o čemu više možete pročitati u
kasnijem odeljku. No, vratimo se na JNDI. On je sad deo specifikacije i definiše tri
domena – java:global za resurse dostupne svim aplikacijama na aplikativnom serveru,
zatim java:app sa vidljivošću na nivou aplikacije koja ga uvodi i na kraju java:module
domen za vidljivost u okviru pojedinačnog modula enterprise aplikacije.

Proširivost EJB-a
Za kraj treba navesti i verovatno najbitniju promenu EJB-a koja može postati prekretnica
u njegovom daljem razvoju. Specifikacijom je predviđeno da EJB implementacija mora biti
proširiva. Nadovezujući se na raniju ideju o POJO klasama kojima se na osnovu anotacija
dodeljuju određeni enterprise servisi, specifikacija ne izdvaja posebno ni jedan od do sada
pomenutih servisa, već ih sve tumači upravo tako – kao servise. A spisak servisa koji EJB
bean-ovima stoje na raspolaganju je od sada moguće proširiti nezavisno razvijenim API-
ima i njihovim implementacijama čineći Java EE 6 i EJB 3.1 mnogo moćnijom platformom
za razvoj.

GlassFish v3
Da nije sve ostalo samo na suvoj specifikaciji pokazuje GlassFish koji se sprema da u
decembru izađe u konačnom obliku svoje v3 varijante i to u paketu sa Netbeans verzijom
6.8. GlassFish je zvanična referentna implementacija Java EE 6 i kao takva je
obavezna da implementira sve do sada spomenuto uz mnogo drugih stvari koje se kriju
duboko po JSR-ovima. Pored ovog velikog zadatka ostvareno je još nekoliko
„samoinicijativnih“, kao što su zasnivanje razvoja aplikativnog servera na OSGi
arhitekturi, podrška za GlassFish profile koji predstavljaju prilagođen skup modula za
konkretne upotrebne slučajeve, čuvanje sesija aplikacije tokom redeploy-a, podrška za
embedovanje GlassFish-a kao i za njegovo proširivanje third party modulima.

OSGi Arhitektura
OSGi arhitektura jednom primenjena na određeni sistem omogućava osobine koje nisu
toliko standardne među Java aplikacijama. OSGi je zasnovan na, grubo govoreći, kernelu
koji pruža određene sistemske servise kao što su sigurnost, centralni registar, upravljanje
korisničkim servisima, upravljanje životnim ciklusom objekata i upravljanje
međuzavisnostima modula. Iznad kernela i ovih sistemskih servisa se dalje nalaze
korisnički moduli, odnosno bundle-ovi, koji su u stvari obični jarovi koji u sebi sadrže
određene OSGi-specifične klase i resurse kao i posebne metapodatke uskladištene u
manifest fajlu. Osnovna prednost ove arhitekture jeste mogućnost potpunog upravljanja
korisničkim modulima u smislu uklanjanja, postavljanja i zamene novijom verzijom, ali sve
to dok kernel neprestano radi. U pozadini se ispred svakog modula postavlja dinamički
proxy koji omogućava stavljanje zahteva na čekanje dok se implementacija modula, na
primer, ne zameni novijom verzijom. Kada je zamena završena, zahtevi prikupljeni na
čekanju se jednostavno otpuštaju i oni, nesvesni promena, nastavljaju da se izvršavaju.
GlassFish v3 je, kao što je već napomenuto, potpuno OSGi kompatibilan, čak toliko da je
moguće promeniti i implementaciju kernela – trenutno je to Apache Felix, ali ništa nas

Razglednica sa Java2Days konferencije – Igor Popov 6


JavaSvet - otvorena java zajednica

ne sprečava da je zamenimo sa, na primer, Equinox-om koji pokreće Eclipse. Činjenica da


na raspolaganju imamo OSGi arhitekturu objašnjava uvođenje Update Center
komponente koja omogućava ažuriranje korisničkih modula kako se pojave njihove nove
verzije bez potrebe za restartom samog aplikativnog servera. Dodatna prednost je
mogućnost dodavanja third party ili razvoja sopstvenih modula koji mogu nuditi neke
nove enterprise servise, rame uz rame sa već postojećim Java EE 6 servisima.

GlassFish Profili
Takođe, jasno raspoređivanje funkcionalnosti po modulima je omogućilo i stvaranje
takozvanih profila GlassFish-a. Profil definiše spisak modula koje on stavlja na
raspolaganje korisniku, čineći tako konačni izgled aplikativnog servera manjim, efikasnijim
i štedljivijim od kompletnog profila. Tako možemo lako prilagoditi svaku instancu
konkretnom upotrebnom slučaju, odnosno aplikacijama koje nameravamo da postavimo i
time omogućiti uštedu hardverskih resursa. Ovo može biti posebno interesantno tokom
razvoja aplikacija kada možemo sa razvojne instance isključiti sve one module koji nisu
potrebni aplikaciji na kojoj trenutno radimo čime bi se postiglo daleko brže pokretanje
sistema i daleko kraće vreme odaziva.
Trenutno, GlassFish zvanično nudi dva profila, ali kroz Update Center je moguće izvršiti
precizno prilagođavanje. Ti profili su Web i Full. Full profil jeste to što piše, i dolazi sa
svim modulima aktiviranim, dok je Web profil daleko zanimljiviji. Ranije je spomenut EJB
Lite i on je u središtu ovog profila. Dakle, svi teški, legacy i backward compatibility moduli
su ovde isključeni, EJB kao takav nije dostupan i zamenjuje ga EJB Lite. Drugim rečima,
Web profil je fokusiran na onaj veliki broj aplikacija koje do sada nisu rađene kao
enterprise iz jednostavnog razloga zasnovanog na, do sada ispravnoj, pretpostavci da
male i srednje aplikacije ne mogu izvući dovoljno koristi iz enterprise servisa, koliko
moraju da plate za njihovo uvođenje. Ta cena uvođenja se najviše ogleda u količini
potrebnih resursa sa jedne i potrebnog predznanja s druge strane. Uvođenjem Web profila
je takođe omogućeno uvođenje i velikog broja Java programera u Java Enterprise
okruženje.

Embedovanje GlassFish-a
Bitna mogućnost GlassFish-a jeste i embeded režim rada aplikativnog servera. U ovom
režimu, GlassFish se svodi na nekoliko jarova koje treba staviti na classpath aplikacije i
ona postaje u potpunosti nezavisna. Trenutno je u toku rad na Maven plugin-u koji bi
omogućio komandu mvn glassfish:run pružajući alternativu Jetty-ju koji je prisutan u
većini online dokumentacije u delu sa primerom pokretanja aplikacije. Zahvaljujući OSGi
arhitekturi iza GlassFish-a, od njega je moguće napraviti aplikativni server po izboru – od
najobičnijeg servlet kontejnera do najmoćnijeg full Java EE 6 okruženja. Takav prilagođen
server sada stoji na raspolaganju alatima za build i deploy, za kontinualnu integraciju, za
testiranje, a pruža i platformu za isporuku aplikacija koje ne zavise od unapred postojećeg
i podešenog aplikativnog servera.
Toliki stepen fleksibilnosti omogućava korišćenje jednog rešenja za širok spektar
upotrebnih slučajeva time dodavajući enterprise znanju atribut reusable. Jednom savladan
GlassFish pokriće sve potrebe za upravljanjem svih oblika sistema nezavisno od njihove
kompleksnosti i nezavisno od faze razvoja tih sistema.

Portabilnost enterprise aplikacije


Java se od prvog momenta ističe kao platforma koja funkcioniše na svim operativnim

Razglednica sa Java2Days konferencije – Igor Popov 7


JavaSvet - otvorena java zajednica

sistemima, odnosno hardverskim konfiguracijama. Na osnovu ovoga deklarisana je kao


portabilna platforma. Ako bi se ovde zaustavili, mogli bi ostati na takvoj konstataciji. Ali
ako krenemo par koraka dalje, možemo doći do zanimljivih nedoslednosti koje narušavaju
postojeću idiličnu sliku. Ako se detaljnije razmotri Java Enterprise platforma, može se doći
do velikog broja osobina koje se drugačije opisuju ili koriste u različitim okruženjima.
Na primer, deployment deskriptori se razlikuju po sadržaju za različite aplikativne
servere na kojim se pokreću. Struktura artifakata kao što su WAR i EAR se takođe
razlikuju od okruženja do okruženja – negde će se jarovi automatski naći na classpath-u
aplikacije i class loader-i će ih uspešno pronaći ukoliko se nalaze u lib poddirektorijumu
enterprise arhive, dok se u drugom okruženju mogu očekivati u root-u arhive. Hijerarhija
pomenutih class loader-a se promenila od Java EE 5 do Java EE 6, a ništa ne garantuje
da drugi aplikativni serveri nemaju sopstvene ideje kako class loader-i treba da rade.
Tumačenje classpath-ova navedenih u manifest fajlu mogu funkcionisati u jednom
okruženju, ali to nikako ne znači da će se negde drugde tako navedene putanje do jarova i
klasa prevesti u identične apsolutne putanje. Upravljanje sigurnošću aplikacije nikada
nije prioritet u razvoju novog sistema, ali jedno je sigurno – kada se aplikacija nađe u
prvom funkcionalnom stanju i security manager se uključi – aplikacija više neće raditi. A i
kada se jednom podesi, drugačije okruženje će zahtevati drugačije sigurnosno
podešavanje. U većini slučajeva se Java aplikacija izvršava na Java virtuelnoj mašini, ali
ipak postoje oni slučajevi kada je bitno koja je to tačno virtuelna mašina – ko je
napravio baš tu implementaciju i kako se baš ona ponaša u tim ekstremnim
podešavanjima rezervisanim za produkciono okruženje par dana pred puštanje sistema u
rad... Modularnost je odlična ideja, ali redosled učitavanja modula je akcija koja je može
urušiti usled ugrožavanja njihovih međuzavisnosti. JNDI imena generisana za enterprise
resurse se razlikuju od servera do servera i aplikacije koje resurse učitavaju moraju da
podrže sve potrebne varijacije imena ako se želi da bez izmena rade svuda.
To naravno nije kraj liste, ali je možda više nego dovoljno. Neke od ovih problema su
rešile novije verzije odgovarajućih specifikacija koje su ispravile svoje ranije nepreciznosti
i nedostatke. Postupak sertifikacije aplikativnih servera koji implementiraju Java EE 6 će
biti dobar znak da se portabilnost aplikacija vraća svom pravom značenju, ali uvek će se
naći neki propust i uvek će se prethodno prostoj copy-paste akciji nad aplikacijom morati
detaljno istestirati svi njeni aspekti.

Clouds and clusters


Predavanja koja su se bavila ovom tematikom su bila: „Java and the Cloud“, „VMware and
SpringSource: Bringing Java to the Clouds“, „Clustering your Application with Hazelcast“,
„JBoss Clustering Solutions“ i „Building Efficient Application Grids with Oracle Coherence“.
Cloud computing sa sobom donosi, pored obaveznog hype-a, i dosta novih skraćenica i
termina. Termin koji predstavlja celu ovu oblast posvećenu oblacima i koji uvodi novu
stavku u spisak na kom se nalaze hardver, firmver i softver, jeste termin klaudver. Neke
od osnovnih skraćenica su i SaaS (Software as a Service), PaaS (Platform as a Service) i
Daas (Datacenter as a Service). Primer SaaS-a bi bio recimo Google Docs koji omogućava
upotrebu kancelarijskog softvera lociranog na Internetu. Primer PaaS-a bi bio Amazon EC2
(Amazon Elastic Compute Cloud) koji pruža okruženje za hostovanje korisnički razvijenih
sistema. DaaS predstavlja ideju privatnog cloud-a koji se iznajmljuje kompanijama na
korišćenje za sve potrebe koje pruža i klasični datacentar smešten u ormanu u kancelariji
pored vaše. Ono što DaaS čini dodatno privlačnim za kompanije je takođe i činjenica da je
u njega ugrađen viši nivo bezbednosti u obliku fizičke izolovanosti od hardversih resursa
drugih cloud-ova kao i dodatna podrška za upravljanje stavljena na raspolagnje IT-u same
kompanije.

Razglednica sa Java2Days konferencije – Igor Popov 8


JavaSvet - otvorena java zajednica

Za funkcionisanje većih sistema, a oblak je za to savršen primer, neophodno je imati i


specifičan softver koji će ga pokretati. Takva rešenja su spomenuta u drugoj grupi
predavanja koja su se bavila klastering rešenjima. Između ostalih predstavljeni su
Apache Hadoop i Hazelcast, kao i kombinacija VMware i SpringSource sistema.

Hazelcast
Hazelcast je predstavljen kao klastering platforma za distribuciju skalabilnih podataka.
Ona omogućava distribuiranje instanci poznatih Java klasa kao što su Queue, Set, List i
Map. Takve instance se čuvaju replicirane u memoriji onoliko nodova klastera koliko se
smatra za potrebno. Osim čuvanja podataka kroz replikaciju, moguće je uključiti i write-
through mehanizam koji svaku izmenu u memoriji klastera prosleđuje do centralne baze
podataka koja, u ovom slučaju, na sebe preuzima samo ulogu bekap sistema. Dodatne
funkcije Hazelcast-a koje treba spomenuti su i enkripcija podataka na nivou socket-a i
podrška za transakcioni rad sa podacima uskladištenim na klasteru.

DMTF standardizacija
Velika pažnja je bila posvećena i terminu cloud lock-in. Lock-in predstavlja probleme koji
nastaju pri pokušaju da se sa jednog cloud provajdera pređe na drugi, odnoso predstavlja
cenu migracije sistema zasnovanih na oblacima. Potpuni nedostatak standardizacije u ovoj
oblasti znatno komplikuje migraciju kako sistema, tako i podataka na koje se on oslanja.
Razlog leži u tome što je skoro uvek potrebno prilagoditi sistem specifičnostima
konkretnog oblaka.
S druge strane, ulažu se napori da se pri organizaciji DMTF (Distributed Management Task
Force) dođe do prihvatljive specifikacije za ovo novo polje u oblasti informacionih
tehnologija.

Prezentacioni sloj
Prezentacioni sloj aplikacija je bio obrađen kroz predavanja: „Rapid Application
Development with Apache Wicket“, „Advanced Apache Wicket Development“, „GWT Tips
and Tricks for Beginners“, „Building scalable GWT applications“ i „JSF & Spring“.

Apache Wicket
Wicket je predstavljen kao najbolji komponentno orijentisani framework, po
funkcionalnostima u rangu Tapestry-ja, dok se po lakoći rada poredi sa Swing-om.
Komponente se u Wicket-u u templejte stranica ugrađuju na mesto tagova označenih
wicked:id atributima, dok se same komponente kreiraju i podešavaju u čistom Java
kodu. Ovo jasno odvajanje nadležnosti za markup i Java kod između templejta i Java page
klasa se navodi kao jedna od glavnih njegovih prednosti. Java pristup radu sa
komponentama je razlika u odnosu na, na primer, JSF i Tapestry, a sličan je pristupu koji
koristi GWT (Google Web Toolkit) kao i pomenuti ne-web framework Swing. Može se reći
da se po tom osnovu alati za prezentacioni sloj mogu podeliti u dve grupe, a argumenti za
i protiv jednog pristupa se i dalje zasnivaju isključivo na ličnim, odnosno subjektivnim,
sklonostima.
Ovo predavanje je po učešću prisutnih u njegovoj FAQ završnici bilo jedno od
najinteresantnijih, ali da bi bilo i potpuni pogodak nedostajalo je možda i objektivno
poređenje sa Tapestry rešenjem koje mu je alternativa za one programere kojima je za

Razglednica sa Java2Days konferencije – Igor Popov 9


JavaSvet - otvorena java zajednica

ugradnju komponenti u stranice bliži pristup kroz sam templejt kod umesto kroz,
pomenuti svingoliki, Java kod.

Popravka JSF-a
Iako je JSF napredovao do verzije 2.0, proći će još dosta vremena pre nego što njegove
prednosti dospeju i do sistema koji sada postoje. Do tada na raspolaganju imamo trenutno
zastupljenu verziju JSF 1.2, a sa njom na raspolaganju na žalost imamo i poduži spisak
loše implementiranih ili čak potpuno nepodržanih karakteristika neophodnih da bi se jedna
Java biblioteka mogla nazvati prezentacionim framework-om.
JSF se u osnovnom obliku koristi u sprezi sa JSP tehnolgijom za potrebe razvoja web
stranica. Ali da bi se ostvario pravi potencijal mora se pribeći zameni ove komponente
naprednijim Facelet templejt jezikom. Ono što ga preporučuje jeste mnogo kvalitetniji
pristup izradi templejta koji se često poredi sa Tiles freamework-om i daleko je prijatniji
oku web dizajnera koji ne želi da mu programerska logika smeta tokom rada. Podrška
Facelet-a za kreiranje templejt komponenti i njihovog organizovanja u biblioteke
komponenti dodatno olakšavaju i ubrzavaju razvoj.
Za većinu novijih pristupa u izradi web aplikacija podrška, u okviru samog JSF-a,
jednostavno ne postoji. Tako se, na primer, za implementaciju ajaksolikog ponašanja
mora koristiti neka od dostupnih third party biblioteka kao što je Ajax4JSF dok se za
friendly URL-ove mora pribeći upotrebi PrettyFaces biblioteke. Za poboljšanje perfomansi
sajta, neophodno je izvršiti pakovanje i kompresiju mnogobrojnih resursa, kao što su
JavaScript i CSS fajlovi, koji se prenose do klijentskog browser-a, pa se JSF mora ponovo
unaprediti pomoću JAWR alata.
Spring takođe nudi nekoliko unapređenja za JSF kroz svoje podprojekte Spring Faces,
Spring EL (Spring Expression Language aka Unified EL++) i Spring Web Flow. Zajedno
omogućavaju napredni jezik za izraze dostupan i iz konfiguracije za kontrolu toka,
omogućava dodatni scope na nivou konverzacije kao i skup osnovnih komponenti za
klijentsku validaciju unetih podataka. Za konverzacijski scope možda treba napomenuti da
podržava kompleksnije korisničke procese i da se po životnom veku nalazi između request
i session scope-a, jer se odvija kroz više, od strane programera, logički povezanih
request-ova.

Zaključak
Kada se ispod svega navedenog podvuče crta može se slobodno reći da je poseta
Java2Days konferenciji bila pozitivno i korisno iskustvo. Dobra organizacija i topla
dobrodošlica su pomogli da boravak u Sofiji protekne prijatno i u dobroj atmosferi dok je
odličan izbor aktuelnih tema i dovođenje predavača svetskog ranga obezbedilo sigurnu
budućnost ovom događaju.
Možda bi najbolji način za završetak ove „razglednice“ bio parafraziranje nekoliko
mudrosti, izrečenih u trenucima digresija, u svom izvornom obliku: „Invest on technology,
not on product“, „Betting on Java EE is a great investment“ i definitivno omiljena - „It
works on all browsers, and on Internet Explorer“.
Uz nadu da će se na osnovu ovogodišnjeg uspeha Java2Days konferencije nastaviti i njen
dalji razvoj i da će nam u narednim godinama donositi još novih tema i novih imena iz
Jave sveta, šaljemo vam pozdrave u stilu naših domaćina - Приятен ден!

Razglednica sa Java2Days konferencije – Igor Popov 10

You might also like