fast, easy, beautiful: pick three - indicthreads · 29-10-2007  · fast, easy, beautiful: pick...

Post on 21-May-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Fast, Easy, Beautiful: Pick ThreeBuilding User Interfaces with Google Web Toolkit

Chris SchalkOctober 29, 2007

3 Copyright 2007 Google Inc.

Today’s Topics

• The potential of Ajax - why we’re all here…

• GWT brings software engineering to Ajax

• Focus on the user and all else will follow

• Fast is better than slow

• Wrap-up

• Q & A

4 Copyright 2007 Google Inc.

In pre “Ajax” land…

• Browsers are treated like HTML dumb terminals

• Everything is an HTTP round trip + history entry

• Tragic waste of young electrons’ potential in shuffling thesame HTML over and over again

• …not to mention your users’ time and attention.

5 Copyright 2007 Google Inc.

Real-world Example #1

• What if I do click Back?

• Does it blow up, or what?

• Ajax can solve this…

• …at least in theory

Please do not use your browser’s Back button

6 Copyright 2007 Google Inc.

Real-world Example #2

• What if the networkhangs?

• How would you feel if thiswere a stock trade?

• Ajax can solve this…

• …at least in theory

Your credit card may be charged twice

7 Copyright 2007 Google Inc.

The Ajax Architectural Shift - Yada yada

HTML

Ajax

StatelessHTML

Browser

Every user action

Totally new page

011001100111100101101011

011001101101111110010100011010111101110011010110

StatefulServer

Eventshandled

locally

01100111

011010011011

StatefulJS and DHTML

Browser

Stateless(i.e. any)ServerData only, not HTML

Remote procedure calls

8 Copyright 2007 Google Inc.

Ajax is great!… but..it can get a little tricky..

• HTTPS?, [DX]?HTML (3.2|4.0|1.0) (Strict|Transitional)

• CSS[1-3]

• DOM Level [0-3]

• (Java|ECMA|J|VB|Action)Script

• (X|VR?|Math)ML

• SVG, Canvas, Flash

• JSONP?, SOAP, XML-RPC, SOA

9 Copyright 2007 Google Inc.

Or a LOT tricky!

• Proliferation of toolkits, frameworks

– Great! But hard to know what works with what!

• Back to notepad, vim, or perhaps textmate?

– Firebug helps though…

• What if my background is Java?

• Okay, I admit it.. JavaScript scares me!

– Can start out easy but.. It’s very easy to get in over yourhead

– This doesn’t even begin to touch on performance

10 Copyright 2007 Google Inc.

What Is Google Web Toolkit (GWT)?

“Google Web Toolkit (GWT) is an open source Javasoftware development framework that makes writingAjax applications easy. With GWT, you can develop anddebug Ajax applications in the Java language using theJava development tools of your choice

When you deploy your application to production, theGWT compiler translates your Java application tobrowser-compliant JavaScript and HTML.”

11 Copyright 2007 Google Inc.

What Is Google Web Toolkit (GWT)?

• Build Ajax apps with JavaTM technology

• GWT is much more than a compiler

• GWT brings software engineering to Ajax

• Important! GWT ≠ applets

12 Copyright 2007 Google Inc.

Hello, Ajax (Demo)

public class Hello implements EntryPoint {

public void onModuleLoad() {

Button b = new Button("Click me",

new ClickListener() {

public void onClick(Widget sender) {

Window.alert("Hello, Ajax");

}

);

RootPanel.get().add(b);

}

}

13 Copyright 2007 Google Inc.

GWT Brings Software Engineering To Ajax

• Any Java IDE (or no IDE…you rebel, you)

• Rapid edit/test/debug/refactor cycle

• Unit testing

• Reuse through jars

• Take advantage of OO design patterns

• Javadoc

• Compile-time errors

– You don’t miss ‘em until they’re gone

14 Copyright 2007 Google Inc.

Lightweight Development Cycle (Demo)

• GWT development mimics normal web development

• Open GWT's hosted web browser

• Run your app

• Edit your source

• Refresh and repeat

• Changes are reflected instantly

• Debugging!

15 Copyright 2007 Google Inc.

The GWT Mission

• To radically improve the web experience for users byenabling developers to use existing Java tools to buildno-compromise Ajax for any modern browser

• Users first

• Developers second

– Whenever possible, a very close second

• Gee-whiz technology is a distant third

• If you share this perspective, you’ll like GWT

Focus on the user and all else will follow

16 Copyright 2007 Google Inc.

Web Usability Fundamentals Remain Intact

• Focus on the basics

• Prefer native UI elements

• Support keyboard-only use

• Honor font size preferences

• User in control of browser at all times

• Speed is vital, especially at startup

• The ideal: feels like a traditional web app, just better

Let’s not re-teach our parents how to use the web

17 Copyright 2007 Google Inc.

History

• Simple history API

• Listening to history events

– Implement HistoryListener

– History.addHistoryListener(controller)

• Creating history events

– History.newItem("settings")

• History tokens form the basis of linkable URLs

– http://example.org/email.html#settings

• Hyperlink class automatically adds entries

18 Copyright 2007 Google Inc.

Localized Messages

• Use interfaces to define type-safe template methods

interface ErrorMessages extends Messages { String accessDenied(int errorCode, String username);}

• Create corresponding localized properties files

accessDenied = Error {0}: {1} cannot access {2}

• Bind data with code using compile-time code generation

Window.alert(msgs.accessDenied(515, username))

• The above wouldn’t compile :-)

Efficient I18N

19 Copyright 2007 Google Inc.

How to Communicate with the Server - RPC

20 Copyright 2007 Google Inc.

How to Communicate with the Server - RPC

• Provides bridge to server-side Java

–JDBC, Persistent frameworks, other Web Services,

• RPC give you the opportunity to move all of your UI logic tothe client!

• An RPC service implementation must extendRemoteServiceServlet

21 Copyright 2007 Google Inc.

Styling With CSS

• Widgets publish CSS style namespublic ListBox(String caption) { … setStyleName("gwt-ListBox");}

• Write CSS rules that bind to widgets.gwt-ListBox { background-color: yellow; color: black;}

• Facilitates loose coupling between CSS and code

Separating code and presentation

22 Copyright 2007 Google Inc.

Usability Without Sacrificing Speed (Demos)

• Kitchen Sink

– Fast startup and reasonable script size

– Client-side MVC and lazy UI creation

– Native look and feel

– History and bookmarks

• Mail

– Styling with CSS

– Fancier widgets

– Handling window resizing

23 Copyright 2007 Google Inc.

Lots of Stuff Here

User Interface

DOM, AbsolutePanel, AbstractImagePanel, AbstractImagePrototype, Button, ButtonBase, CellPanel, ChangeListenerCollection,CheckBox, ClickListenerCollection, ClippedImagePrototype, ComplexPanel, Composite, DeckPanel, DialogBox, DisclosurePanel,DockPanel, FileUpload, FlexTable, FlowPanel, FocusListenerAdapter, FocusListenerCollection, FocusPanel, FocusWidget,FormHandlerCollection, FormPanel, FormSubmitCompleteEvent, FormSubmitEvent, Frame, Grid, HorizontalPanel,HorizontalSplitPanel, HTML, HTMLPanel, HTMLTable, Hyperlink, Image, KeyboardListenerAdapter, KeyboardListenerCollection,Label, ListBox, LoadListenerCollection, MenuBar, MenuItem, PushButton, MouseListenerAdapter, MouseListenerCollection,NamedFrame, Panel, PasswordTextBox, PopupListenerCollection, PopupPanel, RadioButton, RichTextArea, RootPanel,ScrollListenerCollection, ScrollPanel, SimplePanel, StackPanel, SuggestBox, TabBar, TableListenerCollection, TabListenerCollection,TabPanel, TextArea, TextBox, TextBoxBase, ToggleButton, Tree, TreeItem, TreeListenerCollection, UIObject, VerticalPanel,VerticalSplitPanel, Widget, WidgetCollection

Client/Server Data Exchange (RPC, HTTP, JSON, XML)

DOMException, XMLParser, Attr, CDATASection, CharacterData, Comment, Document, DocumentFragment, Element,EntityReference, NamedNodeMap, Node, NodeList, ProcessingInstruction, Text, AsyncCallback, IsSerializable, RemoteService,RemoteServiceServlet, RPC, ServiceDefTarget, JSONArray, JSONBoolean, JSONException, JSONNull, JSONNumber, JSONObject,JSONParser, JSONString, JSONValue, Header, Request, RequestBuilder, RequestCallback, RequestException, Response, URL

Quality and Usability (JUnit, Benchmarking, History, Bundling, I18N)

GWTTestCase, Benchmark, Command, DeferredCommand, IncrementalCommand, History, Timer, Localizable, Constants,DateTimeFormat, Dictionary, ConstantsWithLookup, Messages, NumberFormat, ImageBundle

JRE Emulation

Boolean, Byte, Character, Double, Float, Integer, Long, Math, Number, Object, Short, String, StringBuffer, System, CharSequence,Comparable, AbstractCollection, AbstractList, AbstractMap, AbstractSet, ArrayList, Arrays, Collections, Date, EventObject, HashMap,HashSet, Stack, Vector, Collection, Iterator, List, ListIterator, Map, Set

24 Copyright 2007 Google Inc.

Fast Is Better Than Slow

• Speed is a critical component of usability

• Making complex Ajax code work at all is hard enough…

– Will you have the opportunity to make it fast, too?

• We take speed very seriously

– GWT 1.4 includes a benchmarking subsystem

– Speed is “designed into” the GWT architecture

• Let’s see how this played out over the past year…

No-compromise speed

25 Copyright 2007 Google Inc.

0

10,000

20,000

30,000

40,000

50,000

60,000

Empty

Win

dow.a

lert("

hello

")

Vertic

alPan

el

Butt

on

CheckB

ox

Tree

(3 it

ems) Lab

el

TextBox

Grid (4

x 4

)

HTM

L

Imag

e

TabPan

el (3

tabs)

ListB

ox (3

item

s)

Rad

io B

utton (

3)

Hyp

erlin

k

Hori

zonta

lPan

el

FlowPan

el

Abso

lute

Pan

el

Additional Widgets

Co

mp

iled

Scri

pt

Siz

e (

byte

s)

Only Pay For What You Use

Size matters

26 Copyright 2007 Google Inc.

Better Usability From Less Bandwidth

How you move your bits matters, too

27 Copyright 2007 Google Inc.

1.01.0

1.4

1.4

0

5

10

15

20

25

First Run Subsequent Runs

# H

TT

P R

eq

uests

HTTP Traffic Optimizations

Yes, we actually count every HTTP request

28 Copyright 2007 Google Inc.

1.0

1.0

1.4

1.4

0

20,000

40,000

60,000

80,000

100,000

120,000

Uncompressed Compressed

Scri

pt

Siz

e (

byte

s)

Compiler Size Optimizations

With GWT, a smaller app is only a download + recompile away

29 Copyright 2007 Google Inc.

1.0

1.0

1.0

1.0

1.4

1.4

1.4

1.4

0

100

200

300

400

500

600

700

FireFox 1.0.7 Internet Explorer 6 Opera 9.2 Safari 2.0

RP

C R

ou

nd

Tri

p T

ime (

ms)

RPC Speed Optimizations

With GWT, a faster app is also only a download + recompile away

30 Copyright 2007 Google Inc.

Not Enough Time To Demo Everything

• Unit tests, benchmarking, internationalization, …

• Automatic inclusion of external JS and CSS

• Deferred binding

– Only download the appropriate compiled JavaScript

• Everything is cross-browser

– IE6.0,7.0, FF 1.0.x,1.5.x, 2.0, Safari 2.0.x, 3.0*, Opera 9.x

• Your choice of development platforms

– Mac OS X, Linux, Windows

• Your choice of IDEs

– IntelliJ IDEA, Eclipse, NetBeans, JCreator, JDeveloper

31 Copyright 2007 Google Inc.

Fully Open Source

• Licensed under Apache 2.0

– Source available on Google Code

• Making GWT Better

– The spirit of GWT, including design axioms

• Great community

– 10,341+ members in the GWT Developer Forum

– 485+ members in the GWT Contributors Forum

– Many external patches included in GWT 1.4

Yeah!

32 Copyright 2007 Google Inc.

Documentation Included

Getting Started Guide Widget Gallery

Developer Guide Class Reference

33 Copyright 2007 Google Inc.

One Year Later…

• Comprehensive IDE support for GWT (WYSIWYG, too)

– IntelliJ IDEA, Eclipse, NetBeans, VistaFei, …

• Major applications in production and in development

– Google Checkout, Google Base, http://www.queplix.com/,http://myhippocampus.com http://www.threerings.net/whirled/, …

• Add-on libraries and sample code

– 100+ projects on Google Code alone

• Books and articles

– http://www.amazon.com for details

• Over 2 million downloads of GWT since launch!

GWT is growing up

34 Copyright 2007 Google Inc.

What's New In GWT 1.4?

• No longer beta!

• 200+ features and fixes

• Major size and speed optimizations

• ImageBundle!

• New widgets

– RichTextArea, SuggestBox, Vertical/HorizontalSplitPanel,PushButton, ToggleButton, DisclosurePanel

• Library enhancements

– NumberFormat, DateTimeFormat

– Benchmarking subsystem

– RPC now supports non-servlet Java back ends

Biggest release yet

35 Copyright 2007 Google Inc.

Summary

• You need leverage to use Ajax well with low risk

• PhD in browser quirks is no longer a hiring prereq

• Turn AJAX development into software engineering

• GWT rewards using good engineering practices

• We will share our best work and ideas with you, and wehope you will return the favor

• Your homework assignment:

– Go to: code.google.com & click on “Google Web Toolkit”

36 Copyright 2007 Google Inc.

Q & A

top related