You are on page 1of 6

Google Web Toolkit - O vedere de ansamblu

Prezentul articol este o iniiere n Google Web Tookit (GWT) pentru cei care nu au mai lucrat cu pn acum cu acesta, dar i o surs de informaii interesante despre GWT pentru cei care sunt familiari cu acest mediu de dezvoltare !n esen", GWT este un set de instrumente care permite crearea de aplicaii #eb comple$e, cu un minim de cuno%tine de &T'( ) *avascript +cest lucru este posibil datorit compilatorului care translateaz cod *ava n cod &T'( ) *, -e e$emplu, crearea unui buton n GWT se poate realiza astfel.
Button button = new Button(Click here).

,ecven"a de cod *ava de mai sus va fi translatat n.


<input type=button value= Click here />.

Avantaje
GWT conine n mod implicit anumite componente grafice dinamice i reutilizabile +cestea pot fi e$tinse i modificate dup necesiti -e asemenea, GWT ofer un sistem de gestionare a istoriei aplicaiei, utiliznd butonul /0ack1 al bro#ser2ului +cest mecanism este foarte util deoarece n lipsa lui, butonul cauzeaz prsirea aplicaiei, cnd de fapt utilizatorul ar dori s revin la aciunea anterioar n interiorul aplicaiei 3n alt mare avanta4 al GWT2ului este c asigur suport pentru debug standard n *ava 'ai e$act, aplicaia ruleaz ntr2un bro#ser #eb sub form de cod *ava,cript, dar n codul *ava putem inspecta valori, pune breakpoint2uri, e$act ca i cum aplicaia ar fi e$ecutat n *ava Promisiunea pe care Google o face prin GWT e similar cu promisiunea pe care ,un a fcut2o cu *ava. Write once, run an5#6ere +stfel, dac *ava promite independena fa de platforma pe care ruleaz un program, GWT promite independena fa de bro#ser2ul pe care ruleaz aplicaia #eb 7u n ultimul rnd, erorile comune de *ava,cript cum ar fi incompatibilitate de tipuri sau erori de scriere, sunt detectate n mod implicit de ctre compilator, deoarece codul e scris n *ava

GWT i tehnologiile web


GWT i JavaScript

Pentru a folosi GWT trebuie s acceptm un ciclu de dezvoltare de tip scrie 8 compileaz 8 ruleaz +cest fapt ncetinete viteza de implementare a unui produs n comparaie cu *ava,cript, unde rezultatele se vd imediat ce codul este scris 9estea bun e c cei de la Google s2au gndit i la aceasta, de aceea n GWT e$ist un mod de a rula aplicaia numit -ev'ode, n care codul scris n *ava e translatat n *ava,cript la momentul e$ecutrii, linie cu linie -rept urmare, tot timpul aplicaia ruleaz ultimul cod scris, ceea ce nseamn c se poate face o modificare n cod, plus o rencrcare a paginii n bro#ser i modificrile fcute sunt de4a vizibile !n caz c este necesar, se poate scrie cod *ava,cript care nu va fi modificat de compilator Pentru acest lucru se declar metode 4ava native, iar codul *ava,cript se scrie ntr2un comentariu sub declaraie
public static native Strin et!ative"ocation#$"() /%&' var current#$" = ()oc.location.hre*+, return current#$", -&%/,

GWT i CSS
:6iar dac ma4oritatea componentelor grafice puse la dispozi"ie de ctre GWT au un aspect bun din punct de vedere vizual, de cele mai multe ori dorim s modificm felul n care arat aplicaia #eb !n acest caz sunt necesare cunotine de :,, -esigur se pot folosi %i librrii de :,, pentru a a4unge mai rapid la un rezultat satisfctor GWT ofer suport pentru editarea clasei de :,, a unui element la rulare ,pre e$emplu, pe butonul definit n introducerea articolului putem aplica o clas :,, foarte uor, folosind metoda set,t5le7ame.
button.setStyle!a.e(aweso.eButton),

Totodat, e$ist suport i pentru adugarea sau eliminarea de nume de clase

GWT i

T!"

(ucrul cu GWT nu nseamn c suntem constrni la un anumit set de componente #eb !n final va fi generat tot cod &T'( i de aceea e$ist suport pentru componente &T'( pure 7u este obligatoriu nici ca o aplicaie s fie n ntregime scris n GWT. se poate introduce pe o pagin #eb doar o component GWT n cazul n care se dorete ca pagina s rmn nesc6imbat n rest

-e asemenea, GWT ofer suport direct pentru elemente &T'(; -e e$emplu, pentru a verifica dac tag2ul video de &T'(; e suportat n bro#ser2ul curent (n care e desc6is aplicaia), se poate apela simplu.
/i)eo.isSupporte)(),

Structura unui proiect GWT


3n proiect care folosete GWT este compus din trei pac6ete mari. :lient, ,6ared i ,erver :odul din pac6etele :lient i ,6ared va fi translatat de compilatorul GWT n cod &T'( i *ava,cript -in acest motiv, codul din aceste dou pac6ete este limitat la un subset de clase din *ava, numit *<= =mulation (ibrar5 :odul din pac6etul ,erver este cod pur *ava %i poate folosi toate clasele disponibile !n linii mari, n pac6etul :lient se afl codul care descrie interfaa grafic -in acest pac6et nu se pot folosi direct clasele definite n pac6etul ,erver !n pac6etul ,6ared se afl obiectele de transfer de date, prin intermediul crora se transfer informaia ntre aplicaia #eb i server :lasele din acest pac6et pot fi accesate i de ctre codul din ,erver i de ctre codul din :lient =le sunt privite drept clase *ava de ctre codul de pe ,erver dar, n acela%i timp, sunt translatate n *avascript de ctre compilator, pentru folosirea lor n codul din interfaa grafic !n pac6etul ,erver sunt clasele care asigur ncrcarea datelor din alte surse. baze de date, integrri cu alte produse, etc +cestea pot c6iar s lipseasc complet, caz n care aplicaia #eb generat de compilator poate fi instalat pe orice server #eb, c6iar i fr suport *ava !n aceast situa"ie este vorba de o aplicaie care nu necesit date persistente (de e$emplu. un calculator online sau o aplicaie care i gestioneaz datele folosind servicii #eb) Pentru a fi apelat cod din pac6etul ,erver de ctre :lient se creeaz apeluri asincrone -e e$emplu, pentru o metod m5'et6od, dintr2un serviciu m5,ervice, apelul m5,ervice m5'et6od se va e$ecuta instant, iar dup un anumit timp se va apela metoda on>ailure sau on,uccess din +s5nc:allback
.yService..y0etho)(.y1ara.23 .y1ara.43 new 5syncCallback<$esult6ype>() ' public voi) on7ailure(6hrowable cau ht) ' han)le89ception(cau ht), public voi) onSuccess($esult6ype result) ' )oSo.ethin :ith$esult(result), -

#nde i cum este $olosit GWT

GWT este folosit de anumite produse Google i de multe companii mari att din domeniul public, ct mai ales din domeniul privat 'ulte dintre aplicaiile scrise n GWT nu sunt publice, fiind folosite n interiorul organizaiilor -intre produsele publice scrise n GWT putem aminti. Google +dWords, Google >lig6t, Google Web >onts, e$tensia ,peed Tracer de la bro#ser2ul :6rome, versiunea desktop a 4ocului +ngr5 0irds, Google Groups i interfaa de administrare de la 0logger

=ste demn de menionat un efort fcut de programatorii Google n timpul lor liber, de a porta 4ocul ?uake@ n GWT 'ai e$act au folosit o portare de4a e$istent n *ava a 4ocului, iar cu a4utorul GWT au reuit s l ruleze sub forma unei aplicaii #eb Pentru a funciona modul multi2pla5er au folosit Web,ocket din &T'(;

%ramework-uri ba&ate pe GWT


GWT se afl la baza a numeroase frame#ork2uri sau produse utile pentru programare GAT de la ,enc6a este o librrie cuprinztoare de componente grafice, care pot fi folosite ntr2o aplicaie #eb Bfer i suport pentru ncrcarea de seturi mari de date, cu paginare client2side sau server2side i alte avanta4e 9aadin este un frame#ork pentru dezvoltarea de aplicaii <C+ (<ic6 Cnternet +pplications), care se concentreaz mai mult pe partea de server 'ai e$act, n GWT este posibil ca un click pe un buton s nu genereze un apel la server, ci s actualizeze alt element, sau s sc6imbe aran4area n pagin !n 9aadin, modul de lucru este ca orice aciune a utilizatorului s trimit un apel la server, pentru a determina ce efect s aib acea aciune Pla57, un frame#ork pentru dezvoltat 4ocuri care s ruleze pe platforme multiple (*ava, >las6, +ndroid, #eb), folose%te GWT pentru implementarea mediului de rulare #eb !n fine, mGWT este o librrie pentru GWT pentru crearea de aplicaii #eb pentru dispozitive mobile

Comunitatea GWT

-e la lansarea GWT din @DDE i pn anul trecut, Google a fost principalul factor de decizie n ceea ce privete viitorul acestui proiect ct i principalul contributor la codul surs :elelalte companii care au adus mbuntiri sau au dezvoltat componente pentru GWT nu aveau un mod de a contribui la codul acestuia +nul trecut Google a luat decizia de a nfiina FGWT ,teering :ommittee1 8 comitetul de conducere GWT -in acest comitet fac parte persoane care aparin unor companii ca i 9aadin, ,enc6a, <ed&at i mGWT <olul acestui comitet este de a asigura continuitatea proiectului i de a contribui la mbuntirea codului acestuia

'iitorul
:ompania 9aadin a creat un raport numit /9iitorul GWT1, bazat pe un c6estionar la care au rspuns apro$imativ GHDD de companii referitor la felul n care GWT este folosit n interiorul organizaiei lor IDJ din aplicaiile GWT sunt dezvoltate n segmentul de afaceri, iar GJ sunt 4ocuri 'ai mult de HEJ din aplicaii asigur suport pentru tablete, iar peste @;J pentru telefoane mobile <eferitor la satisfacie, KLJ dintre cei care au rspuns, sunt nemulumii de timpul de compilare, HKJ de numrul mic de componente disponibile de la Google, iar @MJ de timpul de rencrcare al aplicaiei cnd aceasta ruleaza n -ev'ode Pe de alt parte, EDJ sunt mulumii de faptul c nu trebuie s scrie nici o linie de *ava,cript, @;J de viteza aplicaiei la rulare (cnd este instalat la utilizatorii finali), iar G;J de posibilitatea de a gsi i repara defecte rapid :el mai important, ILJ din cei care au rspuns, ar folosi GWT ntr2un proiect n viitor

Conclu&ii
>olosind GWT se poate trece destul de repede de la o aplicaie care folosete librrii *ava standard (,#ing, +WT) pentru interfaa grafic, la dezvoltarea unei aplicaii #eb, putnd fi utilizate cunotinele de programare *ava pentru a structura aplicaia ntr2un mod eficient

(ibliogra$ie
6ttps.))developers google com)#eb2toolkit) 6ttps.))developers google com)#eb2toolkit)doc)latest)-evGuide&tml; 6ttps.))developers google com)#eb2toolkit)speedtracer) 6ttps.))groups google com)forum)NOforum)g#t2steering 6ttp.))senc6a com)g$t

6ttp.))vaadin com 6ttps.))vaadin com)g#t)report2@DG@ 6ttp.))code google com)p)Puake@2g#t2port) 6ttp.))c6rome angr5birds com 6ttps.))developers google com)pla5n) 6ttp.))m2g#t com)

You might also like