Cool web apps with GWT
uberto barbini
uberto@ubiland.net
twitter: @ramtop
RIA (flash) is dead, long live to RIA (js)
aka Client/Server is back!
A CMS that doesn't suck
BP numbers:
4-5 people team
agile (scrum and kanban)
gwt, hibernate, smartgwt
started jan 2009
version 1.0 june 2009, now 3.2
total classes: 1176
total methods: 6565
total executable lines: 27459
A web2.0 like application
with a lot of logic
www.netnumero.com
NetNumero numbers:
5 people on weekends and nights
1 year with many pauses
Test coverage:
Total classes 94.1% (272/ 289)
Total methods 73.7% (1004/ 1363)
Total lines 79.1% (5125/ 6481)
What's GWT anyway?
good gwt tutorials:
http://developerlife.com/tutorials/?p=80
http://code.google.com/webtoolkit/doc/latest/tutorial/
http://code.google.com/webtoolkit/articles/testing_methodologies_using_gwt.html
books:
Essential GWT: Building for the Web with Google Web Toolkit 2 (Developer's Library) - Federico Kereki
Programming Google App Engine - D Sanderson
Growing Object-Oriented Software, Guided by Tests - Steve Freeman, Nat Pryce
gwt vs plain html
gwt vs traditional ajax
(i.e. jsp + jquery)
Gwt is CS with elegance
(show discuss code)
tag ServiceImplExample
Gwt UI/UX issues
Solution
Design metaphor
our metaphor: restaurant
(go to the table -login)
(menu -list of url)
(waiter- event dispatcher)
(waiter notebook- request)
(table num- sessionId)
(kitchen- server side)
(food- response)
client cache, code split and event drive
Architecture and design
(show discuss example code)
tag AsyncTestFailure
Presenter
View
Entities
Data services
Command pattern
AuthAuth and security
How to continue

Writing cool web 2.0 apps with GWT and UI Bindings

Editor's Notes

  • #2 In the crowded world of web technologies is often hard to decide which one suits better our needs. We think we have found a very good solution to do cool web sites with complex logic that requires javascript. Gwt is a very good product, but till recently it was a problem to use it on clean web2.0-like sites. We think that it's possible to do it in a simple way but it's still not widely know. Using with UiBindings and TDD. We did 2 applications: a CMS and a Google Appengine one. I'll talk about our experience, what we learned, and we'll share the complete code for an example application.
  • #3 Blueprint experience Some raw data:
  • #5 www.netnumero.com http://netnumero.appspot.com/company/mycompany#dashboard
  • #10 Gwt + easier to debug no new language to learn easy to unit test client logic Gwt - steeper learning curve basic gwt is "ugly" big js app to download (once)