• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
The Google Web Toolkit Experience
 

The Google Web Toolkit Experience

on

  • 1,015 views

 

Statistics

Views

Total Views
1,015
Views on SlideShare
1,014
Embed Views
1

Actions

Likes
0
Downloads
9
Comments
0

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    The Google Web Toolkit Experience The Google Web Toolkit Experience Presentation Transcript

    • Agile AJAX: The Google Web Toolkit Experience Paul Infield-Harm Daniel Wellman paul@infield-harm.org dan@danielwellman.com www.infield-harm.org blog.danielwellman.com www.cyrusinnovation.com New York • Boston
    • What is Google Web Toolkit ?
    • Java
    • Java to JavaScript compiler .java .js .js .java .java Compiler .java .java .js .js Java JavaScript
    • Why?
    • “...because there already are so many great tools out there, not to mention scads of books, articles, libraries, and expertise.” - The GWT Team
    • Demo
    • A Taste of GWT • Application, Java source, generated js • Exploratory dev in hosted mode • Making a change, test-first
    • A Taste of GWT • Application, Java source, generated js • Exploratory dev in hosted mode • Making a change, test-first
    • A Taste of GWT • Application, Java source, generated js • Exploratory dev in hosted mode • Making a change, test-first
    • A Taste of GWT • Application, Java source, generated js • Exploratory dev in hosted mode • Making a change, test-first
    • Application, Java source, generated JS
    • Exploratory dev in hosted mode
    • Making a change, test- first
    • JSNI photo by clothfairy http://www.flickr.com/photos/clothfairy/ CC BY 2.0
    • GWT and Agile Development Practices
    • Agile Development Practices • Refactoring • Performance Optimization • Test-Driven Development • Collective Code Ownership • Continuous Integration
    • Refactoring
    • Wrap Return Value Invert Boolean Safe Delete Move Instance Method Inline Constant Extract Subclass Replace Method Code Duplicates Convert To Instance Method Rename Move Inner Class to Upper Level Change Method Signature Make Method Static Copy/Clone Class Extract Method Introduce Variable Introduce Field Introduce Constant Introduce Parameter Extract Interface Inl ine Safe Delete Extract Superclass Su Intr pe Use Interface Where Possible rcl odu ass n Rename dle ct ma Pull Members Up Mid je ce ve Ob Push Members Down Par Move/Copy File Replace Inheritance with Delegation mo d am Re etho Inline Local Variable e Introduce Variable ter M Inline Method n act Ob io Convert Anonymous Class to Inner rat Ex tr Introduce Field g jec Mi tra Ex Encapsulate Fields e t ct p Replace Temp With Query Ty Cl Introduce Constant as Replace Constructor With Factory Method s JavaScript Refactorings Java Refactorings
    • Typical Java Web Template <div> <span>${title}</span> <a href="..."><img src="..."/></a> <a href="..."><img src="..."/></a> </div>
    • GWT Layout label = new Label(title); panel.add(label); upButton = new Image("..."); panel.add(upButton); removeButton = new Image("..."); panel.add(removeButton);
    • Refactored GWT new BookPanel(title);
    • Performance Optimization
    • Better “ JavaScript code than you would write by hand ” - “Making GWT Better” on GWT Project Page photo by clothfairy
    • Optimizing Compiler photo by ralphbijker
    • Name That Compile! class
Calculator
{ 



public
int
add(int
x,
int
y)
{ 





return
x
+
y; 



} } Calculator
myCalc
=
new
Calculator(); Window.alert((myCalc.add(3,
2));
    • Compiles To: alert(5)
    • Whole-Program Optimization
    • Whole-Program Optimization Compiler Java Library JavaScript
    • ... but no reflection. X employee.set("firstName", "Fred");
    • photo by Alicia Solario Simple Design
    • Test-Driven Development
    • JUnit TestNG Concordion Fit
    • Three ways to test
    • Plain JUnit @Test public
void
additionsGoToTopOfList()
{ startingWithTitles("First added"); model.addTitle("Second added"); assertThat(model.getTitles().get(0), is("Second added")); }
    • In a Real Browser
    • In the Hosted Mode Browser GWTTestCase
    • How do you test UI?
    • Model-View-Presenter View Presenter Model
    • photo by sanja gjenero Collective Code Ownership
    • Same Code on Browser and Server Java Object
    • Developers Front End Server Developers Developers
    • Code-based UI Layout HorizontalPanel panel = new HorizontalPanel(); panel.add(new TextBox()); panel.add(new Button(...)); panel.add(new Image(...); :-) Developers :-( UI Designers
    • Cross-browser CSS is still hard
    • Continuous Integration photo by wilhei
    • Build Tools
    • Build Servers Hudson
    • Static Analysis & Code Quality Tools Checkstyle
    • Image by Svilen Mushkatov When should you use GWT?
    • photo by Boby Dimitrov
    • Is this a web site or a web application? Web site Web application
    • photo by Vidiot
    • JUnit TestNG Checkstyle Concordion Fit
    • Questions? Source code for the demo available on github: http://github.com/pinfieldharm/Agile-2009-GWT-Demo References and Resources: http://tinyurl.com/agilegwt Paul Infield-Harm Daniel Wellman paul@infield-harm.org dan@danielwellman.com www.infield-harm.org blog.danielwellman.com www.cyrusinnovation.com New York • Boston