JavaSvet - otvorena java zajednica

 
glavna stranica arr2javasvet  english version arr2java.net

Recenzija knjige: WebWork in Action

Igor Spasić
Linkovi:
10 Okt 2005

WebWork (WW) je MVC framework koji postoji dugi niz godina, za koga svi znaju, a opet, čini se da ga ne koriste mnogi. Razlog za to ne treba tražiti u kvalitetu; naprotiv, po mišljenju autora članka WW je jedan od bolje osmišljenih i implementiranih frameworka, koji ima i dobre reference i kvalitetne developere u svojim redovima. Međutim, nedostatak dokumentacije je boljka WW od samih njegovih početaka, što je mnoge odvratilo od njegovog naprednijeg korišćenja. Konačno, stvari se menjaju i na ovom planu. U poslednjih par godina objavljene su dve-tri knjige koje se bave open-source java bibliotekama i koje su ujedno dale manji pregled i uvod u WW. Iako pohvalno, takvo stanje nije i dovoljno za ozbiljnije učenje WW. Zato objavljivanje knjige "WebWork in Action" (Manning, 2005) predstavlja značajan događaj za sve ljubitelje WW i developere, posebno ako se uzme u obzir da su je napisali PATRICK LIGHTBODY i JASON CARREIRA, sami autori frameworka.

Knjiga je izašla u pravom (i poslednjem:) trenutku. WW odavno sazreva i sve više počinje da biva sveokupno rešenje za izradu web aplikacija. Knjga opisuje poslednju verziju WW (2.1.7), ali su autori svuda gde je neophodno naglasili šta važno donosi sledeća verzija (2.2), koja se može smatrati i svojevrsnom prekretnicom, jer Spring i FreeMarker postaju novi zvanični kontejner i template engine.

Sledi pregled knjige po celinama.

Prikaz knjige

webworkIntroduction to WebWork

Ova celina je napisana očekivano dobro i jasno. Daje bezbroj puta ponovljen opis MVC2 paterna i njegove evolucije (Front kontroler, Page kontroler) i razloge za korišćenje istog. Tu je i mala istorija WW (da li ste znali da je otac WW i ko-osnivač JBoss-a?:). Sledi neizbežan 'Hello World' primer i pregled mogućnosti konfigurisanja WW aplikacije. Čitalac se ujedno na dobar način upoznaje sa neophodnom terminologijom i mogućnostima WW. Pohvalno i korisno je što autori opisuju različite načina konfigurisanja koji značajno olakšavaju korišćenje WW. Ovakva praksa se nastavlja i dalje kroz knjigu.

Core concepts

Ova veoma važna celina se bavi samim 'srcem' WW. Prva glava opisuje akcije, ActionSupport klasu, osnove validacije akcije, prikaz grešaka validacije uz lokalizacuju, upload fajlova... Diskutuje se i o jednom detalju arhitekture web aplikacija, a to je unos i prenos parametara: da li koristiti 'međuobjekte' za to ili same domenske klase. Ovo je jedno od mnogobrojnih mesta u knjizi na kojem se uočava da su autori mislili o više načina izvedbe jednog problema, kao i da je WW često sposoban da zadovolji većinu mogućih rešenja. Na takvim, pomalo kritičnim mestima, autori jasno stavljaju do znanja koje je rešenje u duhu WW i, što je mnogo važnije, zašto su se odlučili za konkretnu implementaciju.

Sledeća glava se bavi interceptorima - jedinstvenom i jednom od najmoćnijih osobina WW. Tu je prikaz čemu služe, kako rade, kako napraviti svoje interceptore. Konačno, tu je i spisak postojećih interceptora, sa preglednim objašnjenjem čemu služe.

Poslednja glava se bavi IoC-om. Početak glave daje generalni pregled načina uvezivanja komponenti, da bi se posle prešlo na njegovu izvedbu u WW (XWork). Drugi deo možda i nije od tolikog značaja, pošto sa verzijom 2.2 WW preuzima Spring kao glavni kontejner, tako da čitalac nije obavezan da do kraja razume ovo prilično zahtevno poglavlje. Šteta što autori nisu rekli nešto o novoj verziji WW i integraciji sa Springom.

Displaying content

Lepota WW se ogleda i u lakoj integraciji sa različitim prezentacionom tehnologijama, čime se bavi ova celina. Šta su rezultati, koji tipovi postoje, kako se akcije nadovezuju jedna na drugu, kako se koristi JSP, Velocity, FreeMarker, JasperReports... Jedna glava je posvećena EL (expression language) - tačnije OGNL-u, koji se u WW koristi za evaluiranje izraza, gde je najvažnije razumeti kako je OGNL integrisan u WW okruženje. Naravno, WW donosi i svoju biblioteku tagova, pa je tu i njihov opis. Cela jedna glava je posvećena Velocity-ju, što i nije neophodno za pročitati, pošto FreeMarker postaje novi osnovni template.

Poslednja glava se bavi i samo UI komponentama WW-a. Jasno je opisano kako je zamišljeno da UI komponente rade u WW, i dat je opis svih osnovnih i naprednijih komponenti. Međutim, ovo poglavlje se ne bavi važnim aspektom UI komponenata u WW, a to je kako praviti svoje ili prilagođavati postojeće template. Iako je ovo ispravljeno u jednom od kasnijih poglavlja ('Best practices'), stiče se utisak da su autori mogli malo više da obrade ovu značajnu temu.

Advanced topics

Napredne teme su pomalo čudne: neke su napredne u smislu da predstavljaju detalje WW-a koji se ne sreću često, druge su napredne u smislu da predstavljaju značajan oblik korišćenja WW. Tako se neke celine mogu preskočiti ili pročitati sa manje pažnje ('Type conversion'), dok druga zahtevaju podjednaku pažnju kao i prethodni delovi knjige. Tu spada dodatno poglavlje o validaciji, internacionalizaciji, i delovi poglavlja 'Best pratices'.

Appendix: WebWork architecture

Na kraju je dat jasan pregled WW arhitekture u kome učestvuju sve važne klase okruženja.

Zaključak

"WebWork in Action" je dugo čekana 'prava' knjiga o WW. Autori su na zadovoljavajući način obradili većinu WW frameworka. Iako se ne bavi stvarima koji će sa novom verzijom postati standard, knjiga definitivno može da posluži kao odlični učilo, ali i kao referentni priručnik za sve koji koriste WW. Svi kojima je WW u domenu posla bi vredelo da je imaju.