Google Web Toolkit What, Why, and How

unalaskaweepingInternet και Εφαρμογές Web

19 Ιουλ 2012 (πριν από 5 χρόνια και 3 μήνες)

412 εμφανίσεις

GoogleWebToolkit
What,Why,andHow
BruceJohnson
Google,Inc.
bruce@google.com
2
Copyright2007GoogleInc.
ASimplerThanPossibleExplanationofGWT
WhyAJAXMatters
GWTisSoftwareEngineeringforAJAX
CommonQuestions
BigApplications
Summary
Q&A
Topics
3
Copyright2007GoogleInc.
WhatisGoogleWebToolkit(GWT)?
WhatisGWT?
AsetoftoolsforbuildingAJAXappsintheJavalanguage
WhatmakesGWTinteresting?
Write,run,test,anddebuginJava
Isn’tthatcalledanapplet?
DeployasJavaScript
GWTconvertsyourworkingJavasourceintoequivalentJavaScript
GWTisacompiler?
GWThasacompiler,butthefullstoryismoreinteresting
4
Copyright2007GoogleInc.
ASimplerThanPossibleExplanationofGWT
WhyAJAXMatters
GWTisSoftwareEngineeringforAJAX
CommonQuestions
BigApplications
Summary
Q&A
Topics
5
Copyright2007GoogleInc.
WhatIMeanby"AJAX"
UpdatingthebrowserUIwithoutswitchingpages
TraditionallycalledDynamicHTML(DHTML)
ReliesonJavaScriptrunningtodirecttheUIupdates
Fetchingdatawithoutswitchingpages
UsingXmlHttpRequest(XHR)tofetchdatainthebackground
Viewingbrowsersassmartclients
InsteadofHTMLdumbterminals
Sharingthecomputationalburden
BetterserverutilizationApplicationsthataremoreresponsivethanclassicHTML
Inotherwords,AJAXisrecreating1990sstyleclient/server
computingwithouttheneedtoinstallsoftwarelocally
6
Copyright2007GoogleInc.
"Donotuseyourbrowser'sBackbutton"
WhatifIdo
clickBack?
AJAXcan(intheory)solvethis
WhyAJAX?UsabilityBenefits
7
Copyright2007GoogleInc.
"Don'thitreloadorwe'llchargeyoutwice!"
Whatifthenetworkhangs?WhatshouldIdo?
AJAXcan(intheory)solvethis
WhyAJAX?MoreUsabilityBenefits
8
Copyright2007GoogleInc.
WhyAJAX?Scalability
Stateless
HTMLView
Browser
Stateful
Server
Useraction
NewHTMLpage
01100110
01111001
01101011
011001101101
111110010100
011010111101
110011010110
Stateful
JavaScriptUI
Browser
Stateless
(i.e.any)
Server
Remoteprocedurecall
Dataonly,notHTML
Events
handled
locally
0110
0111
0110
1001
1011
Traditional
HTML
AJAX
9
Copyright2007GoogleInc.
ASimplerThanPossibleExplanationofGWT
WhyAJAXMatters
GWTisSoftwareEngineeringforAJAX
CommonQuestions
BigApplications
Summary
Q&A
Topics
10
Copyright2007GoogleInc.
ProductRisksofHandwrittenScript
PoorUsability
Nohistory
Nobookmarks
FrozenbrowserchromeandpeggeduserCPUs
Worst:Easydevelopmentandgoodusabilityareconflictinggoals
PoorBrowserPortability
Hardtotest:everylineofcodeisapotentialportabilitybug
Eitherwrapeverysinglebrowser?relatedcall(heavy)...
Orbeparanoidabouteverylineofcode(risky)
PoorSpeed
Startuptimeisanextremelyhugesacrifice...probablynotworthit
Largescriptsrunmoreslowly
Worst:Maintainabilityandefficiencyareconflictingscriptinggoals
11
Copyright2007GoogleInc.
DevelopmentRisksofHandwrittenScript
PoorToolSupport
LimitedIDEsupport
Debuggingtoooftenboilsdowntowindow.alert()
Profilers?Codecoverage?Findbugs?…
QualityRisks
Newcategoriesofruntime?onlybugs(e.g.spellingbugs)
PoorJSreusemodelencourages"fromscratch"orcopy/paste
Browsersareamovingtarget
LongTermRisks
Hardtoschedule(e.g.unexpectedbrowserquirks)
Spaghettirisk
Poordocumentation
Hardforlargeteamstoworkonthesamecodebase
Hardenoughtofindone
AJAXguru
12
Copyright2007GoogleInc.
typos+expandos=bugos
Imaginethisgemonline5912ofyourscript
x.
compnent
= document.getElementById("x");
// a spelling(!) bug that will bite much later
There’sareasonstatictypecheckingwasinvented
Reuseisagoodwaytonotwritebugs
Don’tforgetcodecompletion
Thisstartstomatteralotforbigprojects
SpellingBugs
13
Copyright2007GoogleInc.
ToBeCrystalClear
Itisveryeasytoslipintomakinga
poorlyplannedAJAXinvestment
...butyou'lllive
withtheconsequences
foralong,longtime
14
Copyright2007GoogleInc.
GWTRequirementsLaundryList
MakegreatAJAXappsthatarestillverywebby
FamiliarUI,History,Bookmarks,aworkingBackbutton...
LeveragetheJavalanguage,developers,andtechnologies
IDEs,debugging,unittesting,profiling,andcoverage
Portableacrossbrowserswithlowornooverhead
ReuseattheJavalanguagelevelviajars
Fast,simpleRPCbasedonJavaclasses
Extremescalability
Moreorless,theimpossible…
UnlessyoutranslateJavaintoJavaScript:)
15
Copyright2007GoogleInc.
CodeSample–Hello,AJAX
public class Hello implements EntryPoint{
public void onModuleLoad() {
Button b = new Button("Clickme", new ClickListener() {
public void onClick(Widgetsender) {
Window.alert("Hello, AJAX");
}
});
RootPanel.get().add(b);
}
}
Demotime...
Demo
Hello,AJAX
17
Copyright2007GoogleInc.
Redefiningtheproblemhasbeenfruitful
Noserversidesessionstaterequired
NoroundtripsforUIupdatesandeventhandling
Deployment?Nofancyserver,justcompiledJS
LeverageforthebiggestAJAXheadaches
OurMantra:Solvetheproblemonce&wrapitinaclass
History?CreateaHistoryclass
Cross?browser?CreateanabstractDOMclass
RPC?Createanall?JavaRPCmechanism
Wow,That’sSoMuchEasier
18
Copyright2007GoogleInc.
RichUI:WidgetsandLayout
Build(orreuse!)widgets
WritteninstraightJava
Codewithoutworryingaboutbrowserportability
SeparateUIstylefromlogic
WidgetsarestyledwithCSS
AutomaticallyloadtherightCSSforyourwidgets
Demo
"Mail"isadesktop?styleapplication
19
Copyright2007GoogleInc.
UsabilityandPerformance
Demo:UserAdminDialogBox
GWTsavesyouroundtrips Veryfaststartuptime Separationofconcernsinthecode
Keyboardsupport
Ontheflyfontresizing
Reduceserverloadand
improveusability
20
Copyright2007GoogleInc.
Usability:HistoryandBookmarks
HistoryisthefirstthingtogoinmostAJAXapps
WithGWT,it'seasyandworkswellwithMVC
History.addHistoryListener(myController);
Historysupportleadstobookmarksupport
http://google.com/gulp.html#beta_carroty
Demo
"KitchenSink"showshistory,bookmarking,andwidgets
21
Copyright2007GoogleInc.
Manysolutionsoutthere(JSON,XMLRPC,…)
ButapureJavaRPCinterfacesureisnice!
interface SpellingServiceextends RemoteService{
/**
* Checks spelling and suggests alternatives.
* @paramthe word to check
* @return the list of alternatives, if any
*/
String[] suggest(Stringword)
}
Clientandservercanspeakthesamelanguage
Demo
"DynaTable"loadsrecordsdynamically
Simple&PowerfulClient/Server:RPC
22
Copyright2007GoogleInc.
ASimplerThanPossibleExplanationofGWT
WhyAJAXMatters
GWTisSoftwareEngineeringforAJAX
CommonQuestions
BigApplications
Summary
Q&A
Topics
23
Copyright2007GoogleInc.
10.TheGWTmissionstatementputstechnologysecond
Toradicallyimprovethewebexperienceforusers
byenabling
developerstouseexistingJavatoolstobuildno?compromiseAJAX
foranymodernbrowser See"MakingGWTBetter"forthefullstory
9.Itisn'tGWTvs.EverybodyElse
Notsurewhysomanypeoplewanttocouchitthisway
We'renotinto"smackdowns"becauseusingGWTdoesn'tmean
foregoinganothertechnology;mixandmatchisideal
We'vegonetoalotoftroubletomakeintegrationeasy(JSNI)
8.Itisn'tJavavs.JavaScript–it'saboutleverage
Nolanguagewars!ThegoalofGWTisn'ttohideJavaScript
WeviewGWTasawaytoaddleveragetoJavaScriptandDHTML
TenThingstoKnowAboutGWT
24
Copyright2007GoogleInc.
Toughdecisionnottosupportreflectionandclassloading
Worthit!Threewords:Wholeprogramoptimization
Forexample,typetighteningtoeliminatepolymorphism
Shape s = new Circle(2); // radius of 2
double a = s.getArea();
canbecome
Circle
s = new Circle(2); // radius of 2
double a = (s.radius* s.radius* Math.PI)
;
which,ifCirclehasnosideeffects,canbecome
double a = 12.5663706143591
;
Imaginethosesortsofoptimizationsacrossyourentireapp
InJavaScript,reducingsizeandincreasingspeedare
complementarygoals,whichmakesoptimizationsreallyfun
Leverage:WickedCoolOptimizations
25
Copyright2007GoogleInc.
7.Weknowthatabstractionsleak
Thereareonlytwokindsofabstractions:
thosethatleakalot
thosethatleakalittle
Embracingabstractionleaksmakesbetter?educatedusers
UIleaksalot,sowedon'tattempttohideit
Widget→Element→DOM→JSNIformsausefulcontinuum
RPConlyleaksalittle,mainlyinthatcallsmustbeasync
6.JavaScriptNativeInterface(JSNI)
ImplementnativemethodswithJavaScript
5.Deferredbindingwithcodegeneration
Managespermutationsautomatically
Totallyextensible,includingcompile?timecodegenerators
TenThingstoKnowAboutGWT
26
Copyright2007GoogleInc.
OptimizedPermutations
SingleJava
CodeBase
Downloadexactlywhatyou
needinasingle,optimized,
can'tgowrongchunk
Thencacheitontheclient
untilthesunexplodes

FireFox1.0.x
YourCode
en_US
1D04ADDA.cache.html
Safari2.0.x
YourCode
fr_FR

7EFE4D24.cache.html
IE6
YourCode
en_UK

15F361BB.cache.html
Opera9
YourCode
fr_CA

D415D917.cache.html
27
Copyright2007GoogleInc.
4.GWTdoesn'ttrytoblowyouawaywiththefirstimpression
Ourfocusisonmakingasensible,efficientsetoftoolsthatscales
Supportingsolidsoftwareengineeringtrumpssnazzywidgets
Teamslogan:theblingisontheinside
3.HostedmodeisatleastascoolastheGWTcompiler
Feelslikenormalbrowserdevelopment
Refreshactuallydoesrecompilesourcetobytecode
2.GWTeatsitsowndogfood
Everythingbuiltwithcorefacilitiesyoucanuseyourself
Browserportability,localization,RPCclientproxies,…
UpcomingImageBundleGenerator
TenThingstoKnowAboutGWT
28
Copyright2007GoogleInc.
1.GWTisn'tallornothing
Onlyusewhatyouwant
Don'tpayforwhatyoudon'tuse
Integratewithothertechnologyasneeded
TenThingstoKnowAboutGWT
29
Copyright2007GoogleInc.
OnlyPayforWhatYouUse
0
100002000030000400005000060000
Empty
Window.alert("hello")
Vertic
al
Pan
el
Butt
on
Chec
kBox
Tree(3items)
Lab
el
Tex
tBox
Grid(
4x
4)
HTML
Image
TabPa
nel
(
3ta
bs
)
Lis
tBox
(
3items)
RadioB
utton(
3)
Hyperlink
Hor
izontalP
an
el
Flow
Panel
AbsolutePanel
ScriptSize(bytes)
AdditionalWidgetsUsed
30
Copyright2007GoogleInc.
CommonQuestions
Whichbrowsersaresupported?
Firefox1.0,1.5,2.0
InternetExplorer6,7
Safari2.0
Opera8.5,9.0
31
Copyright2007GoogleInc.
CommonQuestions
Whathappenswhenanewbrowsercomesout?
DoIhavetowaitfortheGWTcompilertobeupdated?
Definitelyno!
Allbrowser?specificcodeisinuser?levellibraries
TheJavaScriptlanguageitselfhasveryconsistentsupport
acrossbrowsers
TheDOMAPIistherealculprit
Forbackwardscompatiblebrowsers,it'sanobrainer
Forothersituations,it'sstraightforwardtochangetheuser
levellibraries
ImplementaversionofDOMImplforthedesiredbrowser
Mainpoint:GWTwasdesignedtoneverbearoadblock
32
Copyright2007GoogleInc.
CommonQuestions
DoIhavetorunJavaonmyserver?
No,theGWTcompilerproducesstandaloneJS
OnlyGWTRPCneedsaservlet Youcanuseanybackend GWTincludesJSONandXMLlibrariestomakeiteasier
33
Copyright2007GoogleInc.
CommonQuestions
Isn'titreallyhardtodebugtheJavaScriptthattheGWT
compilerproduces?
Ifyouneedto(orjustwantto)debugthecompiledoutput,
theGWTcompilergivesyoumultipleoutputoptions:
?styleOBFUSCATED(small,efficient,andfast)
?styleDETAILED(nothingislefttotheimagination)
?stylePRETTY(perfectifyouwanttoactuallyfollowthecode)
TheoutputisnormalJS,soyoucanalwaysuseany
JavaScriptdebuggerasyouwouldwithhandwrittencode.
Bytheway,youwilllikelyneverhavetodoanyofthis.
You'llbedoingyourdebugginginJava.
34
Copyright2007GoogleInc.
CommonQuestions
WhatfunctionalityisincludedwithGWT?
UserInterface
Client/ServerCommunication
ApplicationInfrastructure
UnitTesting
Internationalization …
35
Copyright2007GoogleInc.
GWTLibraryOverview
UserInterface
UserInterface
AbsolutePanel,Button,ButtonBase,CellPanel,ChangeListenerCollection,CheckBox,ClickListenerCollection,
ComplexPanel,Composite,DeckPanel,DialogBox,DockPanel,FileUpload,FlexTable,FlowPanel,
FocusListenerAdapter,FocusListenerCollection,FocusPanel,FocusWidget,FormHandlerCollection,
FormPanel,FormSubmitCompleteEvent,FormSubmitEvent,Frame,Grid,HorizontalPanel,HTML,HTMLPanel,
HTMLTable,Hyperlink,Image,KeyboardListenerAdapter,KeyboardListenerCollection,Label,ListBox,
LoadListenerCollection,MenuBar,MenuItem,MouseListenerAdapter,MouseListenerCollection,NamedFrame,
Panel,PasswordTextBox,PopupListenerCollection,PopupPanel,RadioButton,RootPanel,
ScrollListenerCollection,ScrollPanel,SimplePanel,StackPanel,TabBar,TableListenerCollection,
TabListenerCollection,TabPanel,TextArea,TextBox,TextBoxBase,Tree,TreeItem,TreeListenerCollection,
UIObject,VerticalPanel,Widget,WidgetCollection
UsabilityandI18N
UsabilityandI18N
History,DeferredCommand,
Localizable,Constants,Dictionary,
ConstantsWithLookup,Messages
RPC
RPC
AsyncCallback,IsSerializable,
RemoteService,
RemoteServiceServlet
JSON
JSON
JSONArray,JSONBoolean,
JSONException,JSONNull,
JSONNumber,JSONObject,
JSONParser,JSONString,JSONValue
XML
XML
DOMException,XMLParser,Attr,CDATASection,CharacterData,
Comment,Document,DocumentFragment,Element,EntityReference,
NamedNodeMap,Node,NodeList,ProcessingInstruction,Text
HTTP
HTTP
Header,Request,
RequestBuilder,
RequestCallback,
RequestException,Response,
URL
36
Copyright2007GoogleInc.
CommonQuestions
HowbigareGWTapps?Doesn'tthecompilerproduce
bloatedscript?
Fortinybitsoffunctionality(say,<100lines)ofhandwritten
JS,youmightbebetteroffwritingitbyhand.Beyondthat,
compilersizeandspeedoptimizationswillultimatelywin.
Compileroptimizationsthatrequirestatictyping
Deadcoderemoval
Typetightening
Polymorphismremoval
Inlining(ifyouwantittobecorrect)
Veryaggressive(andsafe!)compressionongeneratedJS
Wethinkofnewoptimizationsallthetime
KitchenSinkis20%smaller(95K)usingupcoming1.4optimizations
GZipped(i.e.overthewire,once)it's29K
37
Copyright2007GoogleInc.
CommonQuestions
HowfastareGWTapps?
SurelyIcouldwritefasterappsbyhand!
Likelytobetrueforverysmallapps
Unlikelytobetrueforbiggerappsduetocompilerand
classlibraryoptimizations
(Seenextslideforexperimentaldata)
38
Copyright2007GoogleInc.
BandwidthandStartupTime
0
100002000030000400005000060000700008000090000
Page1Page2Page3Page4Page5Page6Page7
BytesTransferred
TraditionalHTML
GWTFirstRun
GWTOtherRuns
39
Copyright2007GoogleInc.
CommonQuestions
DoesGWThavetocontroltheentirepage?
Ican'trewritemyappfromscratch!
GWTdoesnotforceyoutostartover!
Attachcodetoexistingpageswitha<meta>tag YourJavasourceisaslooselycoupledasyouneedittobe
WorkswithanyHTMLgeneratingserverapproach
<html>
…<meta name="gwt:module" content="…"/>
…<h1>Welcome to GWTravelServices</h1>
…<div id="reservationWizard">
…</html>
Panel p = RootPanel.get("reservationWizard");Wizard wiz = new ReservationWizard();
p.add(wiz);
40
Copyright2007GoogleInc.
CommonQuestions
HowaccessibleareGWTapplications?
GWTappsareasaccessibleasanyAJAXapp…andfarfrom
perfect
GWTdoesfarmorewithkeyboardsupportthantypical
AJAX
GWTiswellpositionedtoaddcomprehensivesupportwhen
AJAXaccessibilityfeaturesarewidelyavailableinbrowsers
41
Copyright2007GoogleInc.
ASimplerThanPossibleExplanationofGWT
WhyAJAXMatters
GWTisSoftwareEngineeringforAJAX
CommonQuestions
BigApplications
Summary
Q&A
Topics
42
Copyright2007GoogleInc.
HowBigis"Big"?
Theobviousquestionthatrarelygetsasked
Whatexactlyarewetryingtooptimizefor?
Downloadspeed?
Arewesupportingdial?upusers?
Startuptime?
Firstrun?Subsequentruns?Howfast,exactly?
Someparticularsizecutoff?
Size?on?wire?Size?in?cache?Isthecutoffarbitraryorbasedonmeasuredeffects?
Funny:comparescriptsizetothesizeofyourimages
43
Copyright2007GoogleInc.
StartupTime
Absolutelycrucial
Shouldbemeasuredinmilliseconds
Ifstartuptimeisn'tacceptable,nothingelsematters
Veryhardtodowell
LoadingcodewithsynchronousXHRisoutofthequestion
<script>tagsserializeHTTPrequests
GZipyourscriptaheadoftime?Goodidea,but…
SomeversionsofIE6failongzipped.jsfiles
Scriptversioningvs.cacheability
GWTgivesyouleverage
Compiledoutputincludesonlywhataparticularuserneeds
OutputisJSwrappedinHTML,whichissafelygzip'able
Loadscodeinan<iframe>inparallelwiththepage
Scriptsarenameduniquelyandareperfectlycacheable
44
Copyright2007GoogleInc.
Low?HangingFruit:Compression
Aheadoftimescriptcompression
C6BD1564339FC70220.cache.html(95K)
C6BD1564339FC70220.cache.html.gz(29K)
Our"big"appinstantlybecame3timessmaller
YoulastbuildstepshouldbetogzipGWToutput
ClassicHTMLcan'tusecompressionsowell
Datachangesfrequently
HTMLchangesrarely
Mixingthemforcescompressionintothecriticalpath
45
Copyright2007GoogleInc.
Low?HangingFruit:Caching
GWTsupportsaggressivescriptcaching
Combineasmall"selectionscript"…→
KitchenSink.nocache.html
Expires: <pretty soon>
Withalargercompiledscript…→
md5.cache.html
Expires: <when the sun explodes>
Viola!Perfectcaching!
Neverre?fetchthebigscriptunlessithaschanged
Neverfailtore?fetchthebigscriptwhenithaschanged
46
Copyright2007GoogleInc.
GWTUnlocksClient?SideMVC
Ifyou'reconfidentthatit'sgoingtobeabigapp…
ThedefaultchoiceshouldbeclientsideMVC
Onlytrickypartismakingyourmodelasync
Thenagain,notsobad…
myModel.requestNthItem(14);…
class MyViewimplements MyModelListener{
void onNthItemReceived(intn, Item item) {

MVCalsofitsperfectlywithGWThistory
47
Copyright2007GoogleInc.
AnAlgorithmtoEvolveYourArchitecture
1.Startbyassumingyouhaveasinglepageand
you'rebuildingatraditionalclientsideMVCapp
(rememberclient/server?:)
2.Addcodeasifyou'llneverhitabrickwall
3.Makesureyourappimplementshistorywell
4.Evaluatethesizeandspeedofyourapp
A.Ifyou'rehappy,goto2 B.Ifyou'reunhappy,doallthestuffontheprevious
slides
C.Ifyou'restillunhappy,seethenextslide
48
Copyright2007GoogleInc.
CompositionTechniques
NothardtosplityourGWTappacrosspages
Historysmoothesoverpagetransitions
FastGWTstartupmakespageswitchingaffordable
WrangledbyGWT,IFRAMEsaren'tsoevil
DividebigchunksintoIFRAMEsthatyourcontroller
shows/hidesthemasnecessary
NavigationView
TransientView
(IFRAME)
49
Copyright2007GoogleInc.
AdditionalTechniques
ConsolidatemultiplesmallRPCs
Buildcompositestructuresandlarge?grainedAPIs
Goodruleofthumb:minimizeHTTPround?trips
Serverreplieswithmoredatathanwasrequested
ModularizeyourUIandcreatepartsondemand
FitsnaturallywithhistoryandMVC
Spreadthecostofwidgetcreationacrossusertime
SeeKitchenSinkforanexample
50
Copyright2007GoogleInc.
ASimplerThanPossibleExplanationofGWT
WhyAJAXMatters
GWTisSoftwareEngineeringforAJAX
CommonQuestions
BigApplications
Summary
ActualQ&A
Topics
51
Copyright2007GoogleInc.
NotEnoughTimetoShowEverything
Internationalizationsupport
Highlyoptimized
Externalizedstringidsarecheckedduringcompilation
Automatic,dynamicdependencyinclusion
SlurpinexternalCSS
SlurpinexternalJS
Everythingiscrossbrowser
IE6+,FF1.0.x,FF1.5.x,Safari2.0.x,Opera9.x
Yourchoiceofdevelopmentplatforms
MacOSX,Linux,Windows
YourchoiceofIDEs
IntelliJIDEA,Eclipse,NetBeans,JCreator,JBuilder
52
Copyright2007GoogleInc.
GWTisOpenSource
LicensedunderApache2.0
SourceisavailableviasvnonGoogleCodeprojecthosting
Ourcharterdocumentis"MakingGWTBetter"
Missionstatement
Designaxioms
Communityforums
HowtobuildGWTfromsource
Codestyle
Submittingpatches
Transparentdevelopment(publishedminutes,roadmap)
Greatparticipation
100,000+downloadsofthereleasecandidatesforGWT1.3
GreatdiscussiononG?W?TandG?W?T?Clists
200+developersonthecontributorslist
Patchesarerollingin!
53
Copyright2007GoogleInc.
DocumentationIncluded
GettingStartedGuide
WidgetGallery
DeveloperGuideClassReference
54
Copyright2007GoogleInc.
LargeandGrowingGWTCommunity
CommunityandSupport
7200+membersonthedeveloperforum
Booksandarticles
Meta?sites(gwtsite.com,gwtPowered.org)
LibrariesandApplications
86GWT?relatedprojectsonGoogleCodeprojecthosting
DiverseproductsbuiltwithGWT
GoogleBase(base.google.com)
GoogleImageLabeler(images.google.com/imagelabeler)
Whirled(http://www.threerings.net/whirled)
Web?basedconferencing(dimdim.com)
TexasHold'emwithlivechat(gpokr.com)
Tools,Tools,Tools
IntelliJIDEA,WindowBuilderProGUIdesignerforGWT
VistaFeiforGWT,Googlipse,andothers
55
Copyright2007GoogleInc.
DidIMentionTools?
InstantiationsGWTDesigner
WYSIWYGLayout
56
Copyright2007GoogleInc.
DidIMentionTools?
InstantiationsGWTDesigner
Internationalization
57
Copyright2007GoogleInc.
CominginGWT1.4
Newwidgets
RichText,SpellCheck,SuggestBox,SplitterPanel,…
Simplificationsandoptimizations
IncludeGWTmodulesusingonly<script>tagAfterfirstrun,re?downloadis~4K(80%lessthan1.3)
Compiledscriptnowcanbefetchedcross?domain
Compileroptimizations;typicalreductionof10?20%
Newcompileroutputsupportsabettergzipratio:?)
Utilities
ImageBundleGenerator,IncrementalCommand,
Benchmarkingsubsystem
Majorspeedimprovementsincollectionclasses
Dateandnumberformattingandparsing
58
Copyright2007GoogleInc.
Summary:AJAXandGWT
LeverageisneededtouseAJAXwellwithlowrisk
PhDinbrowserquirksisnolongerahiringprereq
TurnAJAXdevelopmentintosoftwareengineering
GWTrewardsusinggoodengineeringpractices
Wewillshareourbestworkandideaswithyou,andwe
hopeyouwillreturnthefavor
Muchmoretocome…seeyouonline!
59
Copyright2007GoogleInc.
ASimplerThanPossibleExplanationofGWT
WhyAJAXMatters
GWTisSoftwareEngineeringforAJAX
CommonQuestions
BigApplications
Summary
Q&A
Topics
Q&A