128 ORGANIZACIJA ZNANJA 2008, LETN. 13, ZV. 3 V San Franciscu je od 6. do 9. maja 2008 potekala konferenca JavaOne, namenjena platformi java. Sodi nedvomno med največje dogodke informacijske teh- nologije, saj ga obišče več tisoč strokovnjakov s tega področja. Letošnja konferenca je potekala pod geslom “Java + You”, s čimer so poskušali poudariti dejstvo, da ta tehnologija na tak ali drugačen način vpliva na ekosistem potrošnika, torej na vsakega izmed nas. Med statističnimi podatki tako najdemo, da naj bi bilo v upo- rabi 6 milijard naprav, ki delujejo na osnovi tehnologije java (http://www.sun.com/aboutsun/media/presskits/ javaone2008/index.jsp). Na urniku konference je bilo preko 300 predavanj, ki so potekala v 11 vzporednih sekcijah. Kljub temu je bilo moč čutiti, da je poudarek letošnje konference na proiz- vodu JavaFX, ki predstavlja jedro platforme java, bogatih spletnih aplikacijah (RIA) in skriptnih jezikih. Težišče razvoja se tako spet nagiba na stran odjemalcev, pri čemer je trend gradnja bogatih spletnih odjemalcev, ki vsebujejo podobne grafične elemente kot klasične namizne aplika- cije. COMMUNITYONE Pred glavno konferenco JavaOne je potekala enodnevna konferenca z naslovom CommunityOne 2008. Dogodek je namenjen vsem tistim, ki jih zanima področje odprte in prostodostopne kode. Tako se tukaj zberejo razvijalci, odjemalci in ponudniki tovrstnih proizvodov. Konferenca je bila razdeljena na več vzporedno organizi- ranih predavanj. Operacijski sistem OpenSolaris Največji poudarek konference CommunityOne je bil prav OpenSolaris kot SUN-ov prispevek k odprti kodi. Na konferenci so delili tudi DVD-je z operacijskim siste- mom. OpenSolaris je operacijski sistem, ki je v svoji prvi verziji enak SUN-ovemu Solaris OS. To izvorno kodo je SUN predal v odprtokodni projekt (ne celotno kodo, ampak njene sestavne dele). SUN kot razloge za prehod v odpr- tokodni način razvoj navaja naslednje: • Model razvoja z odprto skupnostjo prinaša priložnosti za sodelovanje med Sunovimi inženirji in skupnostjo uporabnikov. • Veliko uporabnikov sistema Solaris OS je zahtevalo odprto kodo. • Omogočeno je sodelovanje v mnogih projektih, ki zahtevajo odprto kodno programsko opremo itd. Trenutne distribucije OpenSolaris delujejo na procesorjih SPARC kot tudi na x64/x8. Linux OS Predavanja so bila namenjena novostim pri različnih di- stribucijah (openSUSE, Ubuntu in Fedora). Najavili so openSUSE, verzijo 11.0, ki bo vsebovala: KDE 4.0 in 3.5, GNOME 2.22, NetworkManager 0.7, PulseAudio, Tas- que, OpenOffice.org 2.4, Banshee 1.0. Največ izboljšav je bil deležen program za nameščanje, ki je poenostavljen in hitrejši. NetBeans Na predstavitvah orodja NetBeans IDE so poudarili, da je nova verzija (6.x) bistveno hitrejša, kar je bil prej eden izmed glavnih očitkov. Na samih predstavitvah je bilo dejansko videti hitro odzivnost orodja. NetBeans sicer še naprej daje velik poudarek razvoju spletnih aplikacij. Tako so npr. predstavili razhroščevalnik za javascript, ki deluje neodvisno od spletnega pregledovalnika. Podpora skriptnih jezikom je res široka, tako NetBeans podpira tudi PHP na strežniku in Ruby pa tudi delo z aplikacijski- mi strežniki; še posebej je dobro podprt GlassFish. PRIHAJAJO^E NOVOSTI PLATFORME JAVA Glede novosti bi lahko dejali, da je java postala zrela tehnologija. Razvoj poteka v skupnosti in se osredotoča predvsem na enostavnejšo uporabo in večjo učinkovitost. Java se seveda spreminja, vendar ne hitro in korenito, KONFERENCA JAVAONE 2008 doi:10.3359/oz0803128 1.25: DRUGI ČLANKI ALI SESTAVKI M 129ORGANIZACIJA ZNANJA 2008, LETN. 13, ZV. 3 ampak skrbno, s pretehtanimi spremembami in novostmi, ki jih potrebuje informacijska industrija. Kot takšno lah- ko javo jemljemo kot dolgoročno platformo, ki bo igrala pomembno vlogo naslednja desetletja. JCP (Java Com- munity Process) deluje tako, da se inovacije, ki nastajajo v skupnosti, prenesejo v formalno specifikacijo. Javo SE 7 pričakujemo v prvi polovici leta 2009. Decem- bra leta 2006 je bila izdana Java SE 6, ki je uvedla števil- ne novosti in izboljšave (API spletnih storitev, podpora skriptnim jezikom, prenovljeni API za podatkovno bazo, izboljšave Swinga, nadzor in upravljanje, vgrajene anota- cije, prevajalnika API, integracija z varnostnimi storitvami, kakovost, združljivost in stabilnost). Trenutno jo uporab- lja 7 milijonov razvijalcev jave. Vsak mesec je približno 700.000 prenosov JDK-ja, 90,7 odstotkov osebnih računal- nikov, ki so priključeni v internet, pa ima nameščeno javo. Iz tega je razvidno, da je java prešla v fazo zrelosti. Nova verzija jave bo na voljo poleti 2009. Prva polna verzija JavaFX SDK je bila najavljena za jesen 2008. Vmes redno prihajajo posodobitve, kjer je poudarek predvsem na učin- kovitosti in popravkih. Trenutno je na voljo Java SE 6u5p “Performance Relese”, kjer so optimizirane osnovne knjiž- nice in virtualni stroj. Razvoj temelji na skupnosti in rezul- tat tega je tudi, da ima prostodostopna distribucija Linuxa Ubuntu od verzije 8.04 naprej integrirano Java SE 6. Pri razvoju Java SE 7 se osredotočajo predvsem na podporo več jezikom. Virtualni stroj, ki je namenjen enemu jeziku, je preteklost. V zadnjem času so v porastu skriptni jeziki, ki omogočajo enostaven in predvsem hiter razvoj novih aplikacij. Projekt Da Vinci Machine se ukvarja z razširit- vijo osnovne arhitekture virtualnega stroja java, tako da bo podpiral večjezičnost. Namen je, da bi drugi, predvsem dinamični programski jeziki tekli na (J)VM enako učinko- vito kot java. Modularnost pomeni boljšo ponovno uporabo, tako pri razvoju kot pri nameščanju. Pri razvoju gre za boljšo ponovno uporabo kode, pri nameščanju pa za boljšo po- novno uporabo binarnih datotek. Uvedena je nova ključna beseda “module” in novi format pakiranja (JAM datoteč- ni format za distribucijo). Osnovni koncepti modularnosti v programskem jeziku java: • Deklariramo novi model z imenom org.netbeans.core, kamor spada tudi razred Debugger.java: module org.netbeans.core; package org.netbeans.core; public class Debugger { ... new ErrorTracker() ... } • Razred ErrorTracker.java iz paketa org.netbeans.core. utils je prav tako del modula org.netbeans.core. V tem primeru je dostop do razreda ErrorTracker in metode getErrorLine omejen znotraj modula org.netbeans. core: package org.netbeans.core.utils; module org.netbeans.core; module class ErrorTracker { module int getErrorLine() { ... } } • Informacijska datoteka modula org/netbeans/core/mo- dule-info.java opisuje modul in odvisne knjižnice: @Version(“7.0”) @ImportModule(name=”java.se.core”, versio n=”1.7+”) module org.netbeans.core; V novi verziji jave bo prav tako veliko pozornosti na- menjeno upravljanju in vizualni predstavitvi virtualnega stroja (VisualVM). Spremembe na strani bogatega odjemalca bodo zajemale tako Swing kot aplete. Javanski programčki bodo do- živeli spremembe v načinu namestitve (Java Web Start) in v načinu uporabe, saj jih bo možno uporabljati v obliki majhnih programčkov, ki delujejo tudi zunaj spletnega brskalnika. Na področju bogatih odjemalcev je na pohodu Java FX, ki je podrobneje opisana v nadaljevanju. Java EE 6 bo v novi različici doživela kar nekaj spre- memb, ki pa ne bodo tako obsežne kot pri prejšnji verziji. Pred dvema letoma, ko je bila izdana Java EE 5, je bilo glavno vodilo enostaven razvoj. Do sedaj je bila Java EE 5 prenesena trimiljonkrat kot samostojno ogrodje ali v okviru razvojnega ogrodja Java NetBens. Glede na pripombe se odločajo, kaj bo spremenjeno v naslednji verziji. Pripombe glede velikosti ogrodja so pripeljale do iskanja rešitev glede pravilne velikosti, ki bi omogočala modu- larnost, fleksibilnost, osredotočanje na določeno področje in poenostavitve. To bodo rešili s profili (npr. spletni pro- fil, ki bo namenjen razvijalcem internetnih aplikacij, ali profil za telekomunikacijsko industrijo …) Takšni profili bodo obsegali komponente, ki bodo namenjene določeni skupini razvijalcev … Vpeljali bodo tudi proces klestenja, pri čemer bodo nekatere komponente postale opcijske (npr. EJB ali JAX-RPC). V ta namen bo nastala speci- fikacija EJB, 3.1, v lahki obliki. Prav tako bodo delali na razširljivosti ogrodja. Omogočili bodo enostavnejšo uporabo različnih knjižnic in vpeljali skriptne jezike kot prvorazredne programske jezike. V verziji 6 bodo nadaljevali tudi s paradigmo enostav- nega razvoja, s poudarkom na spletnih aplikacijah (Web Container). Spletne aplikacije bodo poenostavljene z oznakami za spletne aplikacije, razvoj bo potekal brez POROČILO 130 ORGANIZACIJA ZNANJA 2008, LETN. 13, ZV. 3 urejanja datotek Web.xml, omogočena bo samostojna registracija tretjih knjižnic, podprt bo razvoj spletnih sto- ritev RESTful (JAX-RS) in razširitev s skriptnimi jeziki. Aplikacijski strežnik GlassFish, V3, je naslednja večja izdaja aplikacijskega strežnika, ki se razvija pod okriljem skupnosti. GlassFish, V3, ima modularno, lahko in razšir- ljivo arhitekturo. Modularna arhitektura omogoča, da je osnovno jedro aplikacijskega strežnika manjše od 100Kb in da se zažene prej kot v sekundi. Glavne značilnosti aplikacijskega strežnika GlassFish, V3: • odprta, modularna in razširljiva platforma, • hiter, enostaven in zanesljiv aplikacijski strežnik, • nameščanje brez ponovnega zagona, • podpora za različne jezike (JRuby/Rails, Jython/Djan- go, Groovy/Grails, javascript …), • podpora OSGi in Java EE 6, • integracija znotraj razvojnega ogrodja NetBeans. NOVA PLATFORMA ZA BOGATE ODJE- MALCE JAVA FX Java FX je družina proizvodov za izdelavo bogatih inter- netnih aplikacij (RIA). V času aplikacij spleta 2.0 je po- membno predvsem hitro in enostavno razvijanje grafično bogatih aplikacij. Lani so JavaFX prvič predstavili, letos smo lahko videli delujoče internetne aplikacije. Uradno naj bi zaživela z dodatkom za Javo SE 6 v drugi polovici tega leta. Java FX platforma omogoča kreiranje interaktivnih vse- bin, aplikacij in storitev, od namiznih sistemov, mobilnih naprav do interaktivne televizije, pri čemer je prednost, da se enaka koda izvaja na različnih napravah. Slika 1: Razvojno in izvajalno okolje Java FX V juniju 2008 je napovedana predpremiera Java FX SDK za predhodno registrirane uporabnike, JavaFX Mobile pa na pomlad 2009. Trenutno je preizkušanje možno s po- močjo beta verzije vtičnika za razvojno okolje NetBeans (JavaFX NetBeans Beta Plugin) ali prevajalnika Java FX, zadnjo verzijo pa lahko dobimo na spletnem naslovu http://openjfx.java.sun.com/hudson/job/openjfx-compiler/ lastSuccessfulBuild/artifact//*zip*/archive.zip. Na letošnji konferenci je Sun predstavil dva proizvoda iz družine JavaFX, in sicer: Java FX Script in FX Mobile. Java FX Script je zelo učinkoviti skriptni jezik za krei- ranje bogatih odjemalcev in predstavitev multimedijskih vsebin na osnovi java tehnologije. Java FX Script poeno- stavlja proces gradnje bogatih uporabniških vmesnikov za programerje, oblikovalce in avtorje vsebin. S pomočjo Java FX Script se zmožnosti aplikacijskih vmesnikov Java Swing, Java 2D in Java 3D varno prenašajo na raz- lične naprave brez lokalnih nameščanj. Java razvijalci lahko trenutno uporabljajo vtičnik Java FX Script, name- njen razvojnemu okolju NetBeans. Lastnosti: • Java FX Script uporablja deklarativno sintakso za specifikacijo komponent uporabniških vmesnikov. • Skozi deklarativno gradnjo dosežemo inkrementalno evalvacijo. • Java FX bo deloval v vseh glavnih razvojnih okoljih, vključno z NetBeans, ki je referenčna implementacija. • Za razliko od številnih drugih skriptnih jezikov je Java FX Script statično tipiziran in ima podobno strukturo kode, ki omogoča ponovno uporabo in en- kapsulacijo, kar je dobro za vzdrževanje in gradnjo velikih programov. • Java FX Script je zmožen graditi uporabniške vmesni- ke vseh velikosti in zahtevnosti. • Omogoča enostavno uporabo Swinga, ki je eno od najboljših razvojnih ogrodij za uporabniške vmesnike. Dinamično strukturo jezika dobimo z modelnim pristo- pom, kjer se sprememba modela avtomatsko preslika na pripadajočo komponento. To dosežemo z metodo “bind”, ki predstavlja dvosmerno povezavo. Sledi primer enostavnega programčka JavaFX Script, ki odpre okno z gumbom. Sprememba modela, ki jo izvede- mo s klikom na gumb, se dinamično izvede. import javafx.ui.*; class HelloWorldModel { attribute saying: String; } var model = HelloWorldModel { saying: “Hello World” }; Frame { title: “Hello World JavaFX” width: 200 content: Button { POROČILO M T 131ORGANIZACIJA ZNANJA 2008, LETN. 13, ZV. 3 text: bind model.saying action: function():Void { model.saying = “JavaFX is cool” } } visible: true }; Java FX Mobile je kompletno mobilno izvajalno in aplikacijsko okolje, zgrajeno na odprtih tehnologi- jah java in Linux. Procesorske in omrežne zmožnosti današnjih mobilnih naprav imajo potencial za bogate internetne vsebine. JavaFX Mobile, ki je zgrajena na osnovi platforme Java ME, je tehnologija, ki omogoča izkoriščanje sposobnosti obstoječih naprav. Platformo Java ME ima danes že več kot dve milijardi mobilnih naprav. Sun pričakuje, da bo Java FX Mobile vodilna tehnologija za bogate internetne aplikacije na teh na- pravah. Celo več, pričakuje se, da bo to tehnologija za vse odjemalce (mobilne naprave, namizni računalniki, TV …). Ker Sun sodeluje z različnimi partnerji na po- dročju mobilnih naprav tudi na drugih aplikacijskih nivojih, vključno s srednjim slojem, to ponuja dodatne prednosti in gladek ter konsistenten prehod na nove tehnologije v naslednjih letih. IZBIRA IN PRIMERJAVA RAZLI^NIH RAZVOJNIH OGRODIJ ZA SPLETNE AP- LIKACIJE Prav gotovo je bil eden od glavnih poudarkov letoš- nje konference JavaOne razvoj spletnih aplikacij. Ena od tem, ki se nanaša na to področje, je izbira pravega ogrodja za razvoj teh aplikacij. Na voljo je ogromno (preko sto) različnih ogrodij, zato je pomembno, da iz- beremo takšno, ki ustreza našim potrebam. Vsa ogrodja niso enaka, zato je pomembno, da izpostavimo zahteve in najdemo način, da zahteve izpolnimo. V pomoč so nam lahko kriteriji, ki jih Richard Pack (avtor) navaja na osnovi večletnih izkušenj, zakaj je izbira ustreznega ogrodja pomembna: • Ogrodje je lahko zahtevno za uporabo in razumevanje za sodelujoče v projektu. • Programerji lahko pišejo kodo, ki ni ponovno uporab- na. • Transport Ajax je neenoten. • Neposredna trajnost povpraševanja, seje ali konteksta. • Omejena dokumentacija. • Neenoten dogodkovni model. • Neuporabnost za tradicionalne oblikovalce spletnih strani. • Z naraščanjem aplikacij je konfiguriranje ogrodja oteženo. • Ni možnosti za uporabo razhroščevalnika. • Možnost uporabe pogleda na način kontroler. • Tehnologija JSP predstavlja pri velikih projektih noč- no moro. • Hitrost nameščanja. Tradicionalni kriteriji za izbiro ogrodja: • kako dolgo traja, da napišemo aplikacijo, ki nekaj iz- piše (test “Hello World”), • učinkovitost (Filter ali servlet), • pogled dekoracijskega stila (ali se uporabljajo šablone ali JSP/Taglibs, kontrolni bloki java …), • hitrost nameščanja, • hitrost razvoja, ki jo presojamo s tremi vprašanji (Kako hitro poteka učenje? Koliko časa traja, da do- damo enostavno lastnost? Je spreminjanje lastnosti enostavno?), • obstoj vgrajenih mehanizmov preverjanja veljavnosti, • internacionalizacija in večjezičnost, • dokumentacija, • možnost zaznamkov, • skalabilnost, • možnosti prenosa. Zmeraj se moramo vprašati, kakšne so naše potrebe? • Ali gradimo novo aplikacijo? • Kako velika je ta aplikacija? • Kakšni so naši scenariji uporabe? • Ali se bo aplikacija pogosto spreminjala (gradimo za prihodnost)? • Ali v resnici potrebujem tritirno arhitekturo? • Kakšna je velikost in kompetenca naše skupine? Napredni kriteriji: • podpora Ajaxu (integrirana ali povezana z zunanjimi orodji), • podpora skupnosti (aktivni neprekinjen razvoj), • različni jeziki, • zrelost, • podpora tri-tirnosti (Spring, Hibernate), • prijazni URL-ji, • odjemalec/strežnik javascript, • uporaba tega ogrodja tudi v drugem delu podjetja, • izkušnje razvijalcev s tem ogrodjem. Primerjava nekaterih najpogosteje uporablje- nih ogrodij za spletne aplikacije: Grovy/Grails Vrsta uporabe: poglej/napiši POROČILO 132 ORGANIZACIJA ZNANJA 2008, LETN. 13, ZV. 3 Prednosti Slabosti • hitro nameščanje aplikacij • enostavna konfiguracija • integrirana Spring in Hibernate • lepa izdelava šablon • počasen v primerjavi z osnovnimi ogrodji Google Web Toolkit (GWT) Vrsta uporabe: visoko interaktivna Prednosti Slabosti • enostavnost, podobno Swing/SWT • veliko vgrajenih gradnikov • močna povezava med javo in javascriptom • projektna zasnova • težavno nadzorovanje razredov css • vgrajene samo osnovne komponente (rešeno z GWT-Ext) • trenutno ni podpore za Javo 5/6 Struts 2 Vrsta uporabe: poglej/napiši, visoko interaktivna Prednosti Slabosti • prvorazredna podpora za Ajax • integracija z vsebnikom Spring • kontrolerji POJO ne zah- tevajo dedovanja • še zmeraj uporablja ve- liko konfiguracije XML • mapiranje v XML ostaja tekoče Tapestry Vrsta uporabe: poglej/napiši, visoko interaktivna Prednosti Slabosti • uporablja označene šablo- ne HTML • učinkovito nameščanje • enostavna konfiguracija • prvorazredna podpora Ajaxu • lep graditelj form • dokumentacija ne zajema realnih problemov • ni združljivosti za nazaj med glavnimi verzijami Wicket Vrsta uporabe: visoko interaktivna Prednosti Slabosti • uporablja šablone označe- ne HTML • odlična dokumentacija • komponente so razširljive • vse narejeno v javi • vse narejeno v javi Grovy/ Grails Google Web To- olkit Struts 2 Tape- stry Wicket Podpora Ajax da da da razšir- jena razšir- jena Jeziki java, Gro- ovy java - gene- rirana JSP, OGNL OGNL, Prop OGNL Delovanje push pull push pull pull Zrelost sorazmerno mlad mlad mlad zrel zmerna Skupnost majhna, vendar raste majhna srednja velika, aktivna srednja, aktivna Podpora tritirnosti da ne da da da Prijazni URL-ji ne da (z malo dela) niso vgrajeni da da Tabela 1: Primerjava razvojnih ogrodij za spletne aplika- cije SPLETNE STORITVE RESTFUL Na področju spletnih storitev imamo različne arhitekturne pristope. Na eni strani je to storitvena arhitektura (SOA), na drugi pa arhitektura virov (ROA), ki temelji na modelu REST (REpresentational State Transfer). Kljub temu da model REST ni nekaj novega, šele v zadnjem času pridobi- va na popularnosti. V okviru procesa skupnosti java se pod oznako JSR 311 (JAX-RS: The Java API for RESTful Web Services) razvija specifikacija, ki določa aplikacijski vmes- nik za spletne storitve REST. V razvoju so implementacije Restlet, JBoss RESTEasy, Apache CXF, Jersey ... REST v petih korakih: 1. Viri imajo svoj ID, ki je kar URI (npr. http://example. com/widgets/foo). Vir je neki objekt, ki ga želimo nasloviti. Pomembno je, da naslov resnično vsebuje podatke in da imajo le-ti predvidljivo strukturo. ID določimo z anotacijo @Path, relativno glede na na- mestitveni kontekst. Anotacije lahko uporabimo na razredih in metodah. Za spremenljive dele uporabimo parametre. @Path(“orders/{order_id}”) public class OrderResource { @Path(“customer”) CustomerResource getCustomer(...) {...} } 2. Povezovanje virov. Informacije glede namestitvenega konteksta ponuja UriInfo. UriBuilder ponuja možnosti enostavnega kreiranja URI-jev za vire. @Context UriInfo i; OrderResource r = ... UriBuilder b = i.getBaseUriBuilder(); URI u = b.path(OrderResource.class).build(r.id); List ancestors = i.getAncestorResourceURIs(); URI parent = ancestors.get(ancestors.size()-1); 3. Uporabljamo standardne metode, ki jih zagotavlja enotni vmesnik: GET (preberi, pridobi), POST (poso- dobi ali kreiraj brez ključa), PUT (posodobi ali kreiraj z id-jem), DELETE (briši). @Path(“orders/{order_id}”) public class OrderResource { @GET Order getOrder(@PathParam(“order_id”) String id) { ... } } 4. Različne predstavitve podatkov. Različni formati (HTML, PGN, GIF), različne strukture (XML, JSON), podpora metapodatkom o vsebini s pomočjo glave HTTP. Za določanje predstavitve podatkov uporablja- mo anotacije @ProduceMime in @ConsumeMime. 5. Komunikacije brez stanja: dolgotrajni identifikatorji, izogibanje sejam, povpraševanje se izvede neodvisno od preostalih zahtevkov, vse, kar je potrebno za pro- ces, vsebuje povpraševanje samo. Glavne prednosti na strani strežnika so: horizontalno ska- liranje, izbira alternativnega načina delovanja, shranje- vanje v predpomnilniku, zmanjšana sklopljenost, dobro delovanje z obstoječo spletno infrastrukturo. Na strani odjemalca omogoča možnost zaznamkov, enostavno eks- perimentiranje na brskalniku, široko podporo program- skih jezikov, izbiro podatkovnih formatov … Model REST upošteva lastnosti in rešitve obstoječega standarda HTTP in preizkušenih vzorcev. Če model REST primerjamo s storitveno arhitekturo (SOA), lahko ugotovimo pomanjkljivosti pri varnosti in transakcijah. SOA ima prednost pri velikih kompleksnih sistemih, kjer z orkestracijo storitev sistem razslojimo in zagoto- vimo fleksibilnost. Na drugi strani lahko REST s pridom uporabljamo na različnih napravah, kjer standardi SOA še niso upoštevani. V naslednjih letih se bo dejansko po- kazalo, na katerih področjih ima določena arhitektura prednost. Kot kaže sedaj, bo SOA prevladala predvsem pri komunikaciji med znanimi entitetami, npr. znotraj podjetja ali med poslovnimi organizacijami B2B. Arhi- tektura virov pa bo uporabljena tam, kjer spletni vmesnik predstavlja določeno konkurenčno prednost in tam, kjer dostopamo do zunanjih podatkov. AJAX Ajax je pred nekaj leti prinesel možnost gradnje bogatih spletnih aplikacj. Ajax (Asynchronus JavaScript XML) temelji na javascriptovem ukazu XMLHttpRequest, ki spreminja klasični model gradnje spletne aplikacije. XMLHttpRequest omogoča asinhrono komunikacijo med odjemalcem in spletnim strežnikom. To pa pomeni, da v aplikaciji ni treba vedno znova prenašati spletne strani, ampak lahko na sami spletni strani gradimo grafične ele- mente, podobne tistim, ki jih poznamo v namiznih apli- kacijah. Kljub temu da sta bila javascript in XMLHttpRe- quest uvedena že leta 1997 v Intenet Explorer, pa Ajax sedaj dejansko postaja ključna tema pri gradnji spletnih aplikacij. Veliko napora je trenutno vloženo v standar- dizacijo (npr. OpenAjax Alliance). Obstoječi pristopi v platformi java so zaenkrat razpršeni in neenotni, obstajajo številne knjižnice (RICO, Prototype, Dojo, Zimbra), ki pa nimajo enotnih API-jev, zato so uporabniki teh knjižnic vezani na izbrano knjižnico. Pričakovati je, da se bo to področje standardiziralo preko projektov odprte kode, JCP-ja in preko iniciative OpenAJAX Allience. Drug vidik gradnje spletnih aplikacij Ajax je manko ustreznih orodij. Na tem področju je velik napredek nova verzija NetBeans, ki vsebuje učinkovito podporo javascriptu, vključno z razhroščevalnikom, ki je neodvisen od splet- nega pregledovalnika. Marjan Vaupotič, Robert Vehovec POROČILO