Google Web Toolkit

Download Report

Transcript Google Web Toolkit

Matthew Keeney
Overview
Simplifies the App coding process
 Easily manage Large Apps
 Streamlined compiled code
 Easy Debugging in an IDE

Features
Simple server-client communication
 Optimized Javascript
 Reusable UI components
 Mix premade JavaScript libraries and
code with Java.
 Easy History support
 Easy Localization
 JUnit testing

Set-up

GWT Download
 Gwt.google.com
 Windows, OSX,Linux
 Basic command line compiler

GWT Eclipse add-on
 Easy IDE implementation
 Updates automatically
 Allows for debugging
Server-Client Communication

Remote Procedure Calls
 Clients ask for new data instead of new
HTML pages
 Create Client-Server applications instead of
web pages

GWT protocol support
 JSON
 XMP
 GWT RPC
JavaScript Optimization

Browser specific Optimizations






Firefox 1.0, 1.5, 2.0 and 3.0
Internet Explorer 6 and 7
Safari 2 and 3
Opera 9.0
Chrome
Code is deployed separately per user
profile
 For example: separate code is compiled for
“Firefox in English” or “IE in French”

Greatly Reduces client download size
JavaScript Optimization

Universal Optimizations
 Obfuscation
 Inlining
 String Interning
Obfuscation example
function(){var
O=K.slice();for(var
Q=0,P=arguments.length
;Q<P;++Q){O.push(argum
ents[Q])}return
N.apply(L,O)}
Inlining example
Shape s = new Circle(aRadius);
widget.setText(“area: “ + s.getArea());
becomes:
Circle s = new Circle(aRadius);
widget.setText(“area: “ + s.getArea());
then becomes:
Circle s = new Circle(aRadius);
widget.element.textContent = “area: “ + (s.r *
s.r * PI);
String Interning
Java:
void assignStyles() {
Style style = this.getElement().getStyle();
style.setProperty(“color”, “red”);
style.setProperty(“border”, “1px solid black”);
}
JavaScript:
var a = ‘color’, b = ‘red’, c = ‘border’, d = ‘1px
solid black’;
...
function assignStyles() {
var style = this.element.style;
style[a] = b;
style[c] = d;
}
Non-JavaScript Optimizations
Content Bundles
 Code Splitting

Content Bundles
Combine JavaScript, CSS, images and
any other static data into one bundle
 Eliminates http requests

 No need to download each file separately.
Reduces CSS size with the same
techniques as JavaScript
 Allows for Per-Browser CSS

Bundle Example
Code Splitting
Asynchronous Calls for new code
 Send the user only what they are going to
use initially then send further JavaScript
when needed.
 Users never download code they don’t use.

Code Splitting Example
Other Benefits to GWT
Reusable UI components
 History support
 IDE Debugging
 JUnit Testing

UI Components

http://gwt.google.com/samples/Showcas
e/Showcase.html
History support
Reliably control the browser’s history
 Provide feedback to the user
 “Bookmarkable”

 Uses url history tokens to “save” the state of
the application
IDE debug support

Hosted Mode – key to productive
development
 Java debugging
 Fast edit refreshes

Improved for GWT 2.0
 Adds plug-in for all major browsers
 Allows ide debugging on each browser not
just the hosted mode browser.