177

Google Developer Day: State of Ajax

  • Upload
    dion

  • View
    30

  • Download
    1

Embed Size (px)

DESCRIPTION

At various Google Developer Day events in Europe I gave a talk on the State of Ajax, that focuses on the core issue of User Experience and where to go from here.

Citation preview

Page 1: Google Developer Day: State of Ajax
Page 2: Google Developer Day: State of Ajax

State of AjaxEl futuro de las Apps Web

Dion AlmaerSeptember 25th, 2008

Page 3: Google Developer Day: State of Ajax

Dion Almaer

twitter.com/dalmaeralmaer.com

Page 4: Google Developer Day: State of Ajax

Dion Almaer

twitter.com/dalmaeralmaer.com

Page 5: Google Developer Day: State of Ajax

Dion Almaer

twitter.com/dalmaeralmaer.com

Page 6: Google Developer Day: State of Ajax
Page 7: Google Developer Day: State of Ajax
Page 8: Google Developer Day: State of Ajax
Page 9: Google Developer Day: State of Ajax
Page 10: Google Developer Day: State of Ajax
Page 11: Google Developer Day: State of Ajax
Page 12: Google Developer Day: State of Ajax
Page 13: Google Developer Day: State of Ajax
Page 14: Google Developer Day: State of Ajax
Page 15: Google Developer Day: State of Ajax
Page 16: Google Developer Day: State of Ajax
Page 17: Google Developer Day: State of Ajax
Page 18: Google Developer Day: State of Ajax
Page 19: Google Developer Day: State of Ajax

“Google Suggest and Google Maps are two

examples of a new approach to web applications that we at

Adaptive Path have been calling Ajax. The name is shorthand for Asynchronous JavaScript + XML, and it represents a fundamental

shift in what’s possible on the Web.”

Jesse James GarrettCo-founder, Adaptive Path

Page 20: Google Developer Day: State of Ajax

“Google Suggest and Google Maps are two

examples of a new approach to web applications that we at

Adaptive Path have been calling Ajax. The name is shorthand for Asynchronous JavaScript + XML, and it represents a fundamental

shift in what’s possible on the Web.”

Jesse James GarrettCo-founder, Adaptive Path

Designer!

Page 21: Google Developer Day: State of Ajax
Page 22: Google Developer Day: State of Ajax
Page 23: Google Developer Day: State of Ajax

Compelling User Experience

Page 24: Google Developer Day: State of Ajax
Page 25: Google Developer Day: State of Ajax
Page 26: Google Developer Day: State of Ajax
Page 27: Google Developer Day: State of Ajax
Page 28: Google Developer Day: State of Ajax
Page 29: Google Developer Day: State of Ajax
Page 30: Google Developer Day: State of Ajax
Page 31: Google Developer Day: State of Ajax

Jared LetoJared Leto

Page 32: Google Developer Day: State of Ajax
Page 33: Google Developer Day: State of Ajax
Page 34: Google Developer Day: State of Ajax

Jef RaskinNoted Usability Expert

The Humane Interface

“!e quality of any [so"ware] is ultimately determined by the quality of the interaction between one human and one system.”

Page 35: Google Developer Day: State of Ajax

Jef RaskinNoted Usability Expert

The Humane Interface

“If a system’s one-on-one interaction with its human user is not pleasant and facile, the resulting de#ciency will poison the performance of the entire system, however #ne that system might be in its other aspects.

Page 36: Google Developer Day: State of Ajax

Jef RaskinNoted Usability Expert

The Humane Interface

“If a system’s one-on-one interaction with its human user is not pleasant and facile, the resulting de#ciency will poison the performance of the entire system, however #ne that system might be in its other aspects.

Page 37: Google Developer Day: State of Ajax

User Interface

Visual Design

Interaction Design

Page 38: Google Developer Day: State of Ajax

User Interface

Visual Design

Interaction Design

“Seductive user interfaces” are

vacuous distractions!

Page 39: Google Developer Day: State of Ajax

User Interface

Visual Design

Interaction Design

“Seductive user interfaces” are

vacuous distractions!

HCI researchers are nerds!

Page 40: Google Developer Day: State of Ajax

User Interface

Visual Design

Interaction Design

“Seductive user interfaces” are

vacuous distractions!

HCI researchers are nerds!

Emacs!

Page 41: Google Developer Day: State of Ajax

User Interface

Visual Design

Interaction Design

“Seductive user interfaces” are

vacuous distractions!

HCI researchers are nerds!

Emacs!

vi!

Page 42: Google Developer Day: State of Ajax

User Interface

Visual Design

Interaction Design

“Seductive user interfaces” are

vacuous distractions!

HCI researchers are nerds!

Emacs!

vi!Microsoft Rulez!

Page 43: Google Developer Day: State of Ajax

User Interface

Visual Design

Interaction Design

“Seductive user interfaces” are

vacuous distractions!

HCI researchers are nerds!

Emacs!

vi!Microsoft Rulez!

Real programmers use C++

Page 44: Google Developer Day: State of Ajax
Page 45: Google Developer Day: State of Ajax

The Web didn’t used to be a beautiful place...

Page 46: Google Developer Day: State of Ajax
Page 47: Google Developer Day: State of Ajax
Page 48: Google Developer Day: State of Ajax
Page 49: Google Developer Day: State of Ajax

Top Grossing Film of 1957 Top Grossing Film of 2007

Page 50: Google Developer Day: State of Ajax

Top Grossing Film of 1957 Top Grossing Film of 2007

Page 51: Google Developer Day: State of Ajax
Page 52: Google Developer Day: State of Ajax
Page 53: Google Developer Day: State of Ajax

First Wave of Ajax

Making JavaScript BetterSimple Effects

Responsiveness is the killer app

Page 54: Google Developer Day: State of Ajax
Page 55: Google Developer Day: State of Ajax
Page 56: Google Developer Day: State of Ajax
Page 57: Google Developer Day: State of Ajax

CSS and Animations

dojo.query("#nav > .focusable").

    attr("tabIndex", 0).

    style("border", "1px solid transparent").

    anim({

        "borderColor": { start: "yellow",

end: "white" }

    });

Page 58: Google Developer Day: State of Ajax
Page 59: Google Developer Day: State of Ajax
Page 60: Google Developer Day: State of Ajax
Page 61: Google Developer Day: State of Ajax
Page 62: Google Developer Day: State of Ajax
Page 63: Google Developer Day: State of Ajax

Jakob NielsenNoted Usability Expert

Page 64: Google Developer Day: State of Ajax

Jakob NielsenNoted Usability Expert

“!e basic advice regarding response times has been about the same for thirty years:

Page 65: Google Developer Day: State of Ajax

Jakob NielsenNoted Usability Expert

“0.1 second is about the limit for having the user feel that the system is reacting instantaneously, meaning that no special feedback is necessary except to display the result.

Page 66: Google Developer Day: State of Ajax

Jakob NielsenNoted Usability Expert “1.0 second is about the limit for

the user's $ow of thought to stay uninterrupted, even though the user will notice the delay.

Page 67: Google Developer Day: State of Ajax

<script type="text/javascript">

function getCityByZip(zip) {

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function() {

processResults(xhr);

}

xhr.open("GET", "/fun.endpoint?zip=" + zip);

xhr.send(null);

}

function processResults(xhr) {

if (xhr.readyState == 4) {

var parent = document.getElementById("cityParent");

parent.innerHTML = xhr.responseText;

}

}

</script>

Page 68: Google Developer Day: State of Ajax

Easy Remoting

<script type="text/javascript">

function getCityByZip(zip) {

new Ajax.Request("/fun.endpoint?zip=" + zip, {

method: "get",

onSuccess: function(xhr) {

$("city").value = xhr.responseText;

}

});

}

</script>

Page 69: Google Developer Day: State of Ajax
Page 70: Google Developer Day: State of Ajax

XHR

Page 71: Google Developer Day: State of Ajax

XHR

Page 72: Google Developer Day: State of Ajax
Page 73: Google Developer Day: State of Ajax

The Old Taxonomy

Page 74: Google Developer Day: State of Ajax

The Old Taxonomy

PrototypeLightweight Ajax/JavaScript helpers

Page 75: Google Developer Day: State of Ajax

The Old Taxonomy

PrototypeLightweight Ajax/JavaScript helpers

GWTHate JavaScript? No problem, use Java.

Page 76: Google Developer Day: State of Ajax

The Old Taxonomy

PrototypeLightweight Ajax/JavaScript helpers

GWTHate JavaScript? No problem, use Java.

jQueryNew, DOM-centric JavaScript helper

Page 77: Google Developer Day: State of Ajax

The Old Taxonomy

dojoYour Soup-to-Nuts Ajax/Javascript

Platform

PrototypeLightweight Ajax/JavaScript helpers

GWTHate JavaScript? No problem, use Java.

jQueryNew, DOM-centric JavaScript helper

Page 78: Google Developer Day: State of Ajax

The New Taxonomy

Page 79: Google Developer Day: State of Ajax

Prototype jQuery Dojo Core

The New Taxonomy

Page 80: Google Developer Day: State of Ajax

Prototype jQuery Dojo Core

Plug-in Communityscripteka.com

Plug-in Communityplugins.jquery.com

Plug-in Communitydojox

The New Taxonomy

Page 81: Google Developer Day: State of Ajax

Prototype jQuery Dojo Core

Plug-in Communityscripteka.com

Plug-in Communityplugins.jquery.com

Plug-in Communitydojox

Script.aculo.us jQuery UI dijit

The New Taxonomy

Page 82: Google Developer Day: State of Ajax

DOM Goodness

$(document).bind("ready", function() {

  $("div").bind("mousewheel", function(event, delta) {

    if (delta < 0) {

      $(this).append("up");

    } else {

      $(this).append("down");

   }

);

});

Page 83: Google Developer Day: State of Ajax
Page 84: Google Developer Day: State of Ajax

Mobile Me / SproutCore

Page 85: Google Developer Day: State of Ajax

Mobile Me / SproutCore 280 Slides / Objective-J

Page 86: Google Developer Day: State of Ajax
Page 87: Google Developer Day: State of Ajax

Dojo Charting

Page 88: Google Developer Day: State of Ajax

Dojo Charting

Dojo Grid

Page 89: Google Developer Day: State of Ajax

Dojo Charting

Dojo Grid

Processing.js

Page 90: Google Developer Day: State of Ajax
Page 91: Google Developer Day: State of Ajax

JavaScript Interpreter Native Canvas Implementation

Issues renderingcommands

Refreshes screenvia native APIs

Retains renderingcommands

Page 92: Google Developer Day: State of Ajax

?

Page 93: Google Developer Day: State of Ajax

?

Page 94: Google Developer Day: State of Ajax

?

Page 95: Google Developer Day: State of Ajax
Page 96: Google Developer Day: State of Ajax

Jakob NielsenNoted Usability Expert

“0.1 second is about the limit for having the user feel that the system is reacting instantaneously, meaning that no special feedback is necessary except to display the result.

Page 97: Google Developer Day: State of Ajax

Browser

Page 98: Google Developer Day: State of Ajax

Operating System

Event Queue

Browser

Page 99: Google Developer Day: State of Ajax

Operating System

Event Queue

Browser

Page 100: Google Developer Day: State of Ajax

Operating System

Event Queue

Mouse Moved

Mouse Pressed

Mouse Released

Key Pressed

Key Released

Browser

Page 101: Google Developer Day: State of Ajax

Operating System

Event Queue

Mouse Moved

Mouse Pressed

Mouse Released

Key Pressed

Key Released

Browser

Page 102: Google Developer Day: State of Ajax

Operating System

Event Queue

Mouse Moved

Mouse Pressed

Mouse Released

Key Pressed

Key Released

Browser

Page 103: Google Developer Day: State of Ajax

Operating System

Event Queue

Mouse Moved

Mouse Pressed

Mouse Released

Key Pressed

Key Released

JavaScript

Browser

Page 104: Google Developer Day: State of Ajax

Operating System

Event Queue

Mouse Moved

Mouse Pressed

Mouse Released

Key Pressed

Key Released

JavaScript

Browser

Page 105: Google Developer Day: State of Ajax

Operating System

Event Queue

Mouse Moved

Mouse Pressed

Mouse Released

Key Pressed

Key Released

JavaScript Web Browsing

Browser

Page 106: Google Developer Day: State of Ajax

Operating System

Event Queue

Mouse Moved

Mouse Pressed

Mouse Released

Key Pressed

Key Released

JavaScript Web Browsing

Potential

Bottleneck

Browser

Page 107: Google Developer Day: State of Ajax

User Interface

BackgroundThread

2

Browser

1

Page 108: Google Developer Day: State of Ajax

User Interface

BackgroundThread

2X

Browser

1

Page 109: Google Developer Day: State of Ajax
Page 110: Google Developer Day: State of Ajax

Brendan EichInventor of JavaScript

CTO, Mozilla

Brendan’s Blog

Page 111: Google Developer Day: State of Ajax

Brendan EichInventor of JavaScript

CTO, Mozilla

“!reads suck.”

Brendan’s Blog

Page 112: Google Developer Day: State of Ajax

User Interface

BackgroundThread

2X

Browser

1

Page 113: Google Developer Day: State of Ajax

User Interface

BackgroundThread

2

Browser

1

Page 114: Google Developer Day: State of Ajax

User Interface

WorkerPool

Browser

1

WorkerPool

2 3

Message Passing

Page 115: Google Developer Day: State of Ajax

Jef RaskinNoted Usability Expert

The Humane Interface

“If [a] feature is well–designed, and if we use it repeatedly, we eventually... use the feature habitually, without thought or conscious e%ort.

Page 116: Google Developer Day: State of Ajax

Jef RaskinNoted Usability Expert

The Humane Interface

“In operating an interface we combine or ‘chunk’ sequences of actions into gestures, which, once started, proceed automatically. Because we form gestures, techniques such as having a user respond Y or N to an ‘Are you sure?’ veri#cation do not provide safety: !e typed ‘Y’ becomes part of the gesture.”

Page 117: Google Developer Day: State of Ajax

Prefer Undo to Warning Dialogs

Page 118: Google Developer Day: State of Ajax

Prefer Undo to Warning DialogsErr, how do you do that on the Web?

Page 119: Google Developer Day: State of Ajax

Prefer Undo to Warning DialogsErr, how do you do that on the Web?

...and, uh, how do you handle transactions?

Page 120: Google Developer Day: State of Ajax

Form History

Page 121: Google Developer Day: State of Ajax

Some Business Form

First Name:

Last Name:

Address Line 1:

Address Line 2:

City:

State:

Zip:

Foo:

Gawuzzit:

Lugnutzwit:

Cookie Monster:

Some Value

Some Value

Some Value

Some Value

Some Value

Some Value

Some Value

Some Value

Some Value

Some Value

Some Value

Form History:

PresentPast

Page 122: Google Developer Day: State of Ajax

Some Business Form

First Name:

Last Name:

Address Line 1:

Address Line 2:

City:

State:

Zip:

Foo:

Gawuzzit:

Lugnutzwit:

Cookie Monster:

Some Value

Some Value

Some Value

Some Value

Some Value

Some Value

Some Value

Some Value

Some Value

Some Value

Some Value

Form History:

Present2 weeks ago

Past

History Value Here

History Value Here

History Value Here

History Value Here

History Value Here

History Value Here

History Value Here

History Value Here

History Value Here

History Value Here

History Value Here

Page 123: Google Developer Day: State of Ajax
Page 124: Google Developer Day: State of Ajax

Don't forget, RIA's have rich internet back-ends (RIBs?)

Jonathan SchwartzCEO, Sun Microsystems

Page 125: Google Developer Day: State of Ajax

Web Services

Your Application

Page 126: Google Developer Day: State of Ajax

Web Services

Your Application

Page 127: Google Developer Day: State of Ajax

Web Services

Your Application

Page 128: Google Developer Day: State of Ajax

Web Services

Your Application

Page 129: Google Developer Day: State of Ajax

Web Services

Your Application

Page 130: Google Developer Day: State of Ajax

Macintosh HD

Page 131: Google Developer Day: State of Ajax

Macintosh HD

“You just got another email from your wife!”

Page 132: Google Developer Day: State of Ajax

Macintosh HD

“You just got another email from your wife!”

32

Page 133: Google Developer Day: State of Ajax

Macintosh HD

“You just got another email from your wife!”

32

Page 134: Google Developer Day: State of Ajax

Macintosh HD

“You just got another email from your wife!”

32

Page 135: Google Developer Day: State of Ajax

Fluid

MozillaPrism

Adobe AIR

Gears

Page 136: Google Developer Day: State of Ajax

XHR

Page 137: Google Developer Day: State of Ajax
Page 138: Google Developer Day: State of Ajax
Page 139: Google Developer Day: State of Ajax
Page 140: Google Developer Day: State of Ajax
Page 141: Google Developer Day: State of Ajax

wiiuse library

JNI

Page 142: Google Developer Day: State of Ajax

wiiuse library

JNI

Java Plug-in

Page 143: Google Developer Day: State of Ajax

wiiuse library

JNI

Java Plug-in

wiiusej

Page 144: Google Developer Day: State of Ajax

wiiuse library

JNI

Java Plug-in

WiiTracker

wiiusej

Page 145: Google Developer Day: State of Ajax

wiiuse library

JNI

Java Plug-in

WiiTracker

wiiusej

WiiApplet

Page 146: Google Developer Day: State of Ajax

wiiuse library

JNI

Java Plug-in

WiiTracker

Browser

JavaScript Dart Game

wiiusej

WiiApplet

Page 147: Google Developer Day: State of Ajax

The New Java Plug-inBeta Shipping Today with Java 1.6 “Update 10”

1 Java plug-in now out-of-processNo more locking up the browser UI on launchApplets can persist across browser sessionsMore control over the Applet’s JVM

2 Improved Applet deploymentJavaScript-based “Deployment Toolkit”Mature JNLP-based Applet metadata

3 A smaller JDKMicro-kernel gives streamlined download option

Page 148: Google Developer Day: State of Ajax

The Future?

Page 149: Google Developer Day: State of Ajax

The Breakdown of Modern Web Development

Page 150: Google Developer Day: State of Ajax

CSS Animations

Page 151: Google Developer Day: State of Ajax

CSS Reflections and Masks

Page 152: Google Developer Day: State of Ajax

Google Chrome’s V8 Safari’s SquirrelFish

?IE?Firefox’s TraceMonkey

Page 153: Google Developer Day: State of Ajax

Mozilla’s Monkeys?

Page 154: Google Developer Day: State of Ajax
Page 155: Google Developer Day: State of Ajax
Page 156: Google Developer Day: State of Ajax
Page 157: Google Developer Day: State of Ajax

Updating the Web...

Gears

Page 158: Google Developer Day: State of Ajax

HTML 5 Gears

• Standards• Long term• All browsers• No plugin

• Implementation• Battle hardened• A place for innovation• Cross browser• Plugin

Past

Present

Future

A bleeding edge version of HTML 5!

Page 159: Google Developer Day: State of Ajax

<video><audio><canvas><time><progress><meter><menu><input type="email | date | min | max | required"... >postMessageDrag and drop

HTML 5

Page 160: Google Developer Day: State of Ajax

<video><audio><canvas><time><progress><meter><menu><input type="email | date | min | max | required"... >postMessageDrag and drop

HTML 5

Ian (Hixie) HicksonStandards Editor, Google Employee

Page 161: Google Developer Day: State of Ajax
Page 162: Google Developer Day: State of Ajax

Ajax

Page 163: Google Developer Day: State of Ajax

Ajax

Easy Programming

Model

Page 164: Google Developer Day: State of Ajax

Ajax

Easy Programming

Model

Easy Remoting

Page 165: Google Developer Day: State of Ajax

Ajax

Easy Programming

Model

Easy Remoting

Extensive Customization

Vectors

Page 166: Google Developer Day: State of Ajax

Ajax

Easy Programming

Model

Easy Remoting

Extensive Customization

Vectors

Easy Deployment

Page 167: Google Developer Day: State of Ajax

Ajax

Easy Programming

Model

Easy Remoting

Extensive Customization

Vectors

Great Widgets

Easy Deployment

Page 168: Google Developer Day: State of Ajax

Ajax

Easy Programming

Model

Easy Remoting

Extensive Customization

Vectors

Great Widgets

Easy Deployment

Great FX

Page 169: Google Developer Day: State of Ajax

Ajax

Easy Programming

Model

Easy Remoting

Extensive Customization

Vectors

Great Widgets

Easy Deployment

Great Mobile Story

Great FX

Page 170: Google Developer Day: State of Ajax

Ajax

Easy Programming

Model

Easy Remoting

Extensive Customization

Vectors

Great Widgets

Easy Deployment

Great Mobile Story

Desktop Integration

Great FX

Page 171: Google Developer Day: State of Ajax

Ajax

Easy Programming

Model

Easy Remoting

Extensive Customization

Vectors

Great Widgets

Easy Deployment

Great Mobile Story

Desktop Integration

State-of-the-Art Plug-ins

Great FX

Page 172: Google Developer Day: State of Ajax

Ajax

Easy Programming

Model

Easy Remoting

Extensive Customization

Vectors

Great Widgets

Easy Deployment

Great Mobile Story

Desktop Integration

State-of-the-Art Plug-ins

Great FX

Page 173: Google Developer Day: State of Ajax
Page 174: Google Developer Day: State of Ajax
Page 175: Google Developer Day: State of Ajax
Page 176: Google Developer Day: State of Ajax

Learn more http://code.google.com/

Page 177: Google Developer Day: State of Ajax