Professional Documents
Culture Documents
Introduction To HTML 5: Brad Neuberg Developer Programs, Google
Introduction To HTML 5: Brad Neuberg Developer Programs, Google
Brad Neuberg
Developer Programs, Google
Wednesday, October 7, 2009
The Web Platform is Accelerating
U
s
e
r
E
x
p
e
r
i
e
n
c
e
native web
1990 -- 2008 Q408 Q109 Q209 ...
iPhone 2.2:
Nov 22, 2008
canvas
app cache
database
SVG
Safari 4.0b:
Feb 29, 2009
canvas
video
app cache
database
workers
SVG
HTML
DOM
CSS
XHR
Opera Labs:
Mar 26, 2009
canvas
video
geolocation
SVG
Android 1.5:
Apr 13, 2009
canvas
geolocation
app cache
database
workers
Firefox 3.5b4:
Apr 27, 2009
canvas
video
geolocation
app cache
database
workers
SVG
Chrome 2.0:
May 21, 2009
canvas
video
geolocation
app cache
database
workers
SVG
Wednesday, October 7, 2009
And Its Solving Key Developer Challenges
U
s
e
r
E
x
p
e
r
i
e
n
c
e
native web
HTML
DOM
CSS
XHR
Speed Location Graphics Storage
1990 -- 2008 Q408 Q109 Q209 ...
Wednesday, October 7, 2009
More Developers
0
75
150
225
300
M
o
n
t
h
l
y
C
o
n
t
r
i
b
u
t
o
r
s
t
o
O
S
S
B
r
o
w
s
e
r
s
2002 2003 2004 2005 2006 2007 2008 2009
webkit
firefox 2.0-3.0
firefox 3.1+
chrome
Wednesday, October 7, 2009
More Users
50
150
250
350
450
O
S
S
B
r
o
w
s
e
r
U
s
e
r
s
(
M
)
2005 2006 2007 2008 2009
Wednesday, October 7, 2009
More Speed
0
20
40
60
80
S
u
n
S
p
i
d
e
r
R
u
n
s
P
e
r
M
i
n
u
t
e
2001 2003 2005 2007 Q108 Q208 Q308 Q408 Q109
100x improvement
in JavaScript performance
Wednesday, October 7, 2009
5>4
A More Powerful Web
Wednesday, October 7, 2009
Cautionary Tales of Latent Lemonade
xhr
(1999)
xml (1998)
css
(1996)
AJAX (2004)
Wednesday, October 7, 2009
HTML 5: A Chance to Do Things Differently
Wednesday, October 7, 2009
canvas/SVG video geolocation app cache &
database
web workers
Wednesday, October 7, 2009
0
0
width
h
e
i
g
h
t
Y
x
y
X
Until Recently, You Couldnt Draw on the Web
Wednesday, October 7, 2009
And Graphics Werent Very Interactive
javascript:onClick(Draw());
Wednesday, October 7, 2009
The Usual Options Do This...
VML
Flash
Silverlight
Wednesday, October 7, 2009
... But canvas and SVG Are Intrinsic to the Web
T
r
a
n
s
p
a
r
e
n
t
S
t
a
c
k
DOM
Document Object Model (DOM) Specification
Original: http://www.w3.org/TR/REC-DOM-Level-1/
Latest: http://www.w3.org/TR/DOM-Level-3-Core/
Contributors: Netscape, Sun, Microsoft, W3C, IBM,
Novell, JavaSoft, SoftQuad Inc., Inso EPS, Texcel
Research, Arbortext
Hypertext Markup Language (HTML)
Original: http://tools.ietf.org/html/rfc1866
Latest: http://www.w3.org/TR/html5/
Contributors: T. Berners-Lee, D. Connolly, L. Masinter,
MIT, W3C, AT&T, IBM, Microsoft, Netscape, Novell,
SoftQuad, Spyglass, Adobe, Lotus, CWI, Reuters,
JavaSoft, HP, GRIF, Sun, Opera, Mozilla, Google, Apple
Hypertext Transfer Protocol (HTTP)
Original: http://tools.ietf.org/html/rfc1945
Latest: http://tools.ietf.org/html/rfc2616
Contributors: UC Urvine, Compaq, MIT, Xerox,
Microsoft, W3C, T. Berners-Lee, R. Fielding, J. Gettys,
J. Mogul, H. Frystyk, L. Masinter, P. Leach
HTTP
HTML
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
HTML-like tags for drawing
15
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
HTML-like tags for drawing
15
<rect
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
HTML-like tags for drawing
15
<rect
x="0" y="0"
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
HTML-like tags for drawing
15
<rect
x="0" y="0"
width="100" height="100"
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
HTML-like tags for drawing
15
<rect
x="0" y="0"
width="100" height="100"
fill="blue" stroke="red"
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
HTML-like tags for drawing
15
<rect
x="0" y="0"
width="100" height="100"
fill="blue" stroke="red"
stroke-width="5px"
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
HTML-like tags for drawing
15
<rect
x="0" y="0"
width="100" height="100"
fill="blue" stroke="red"
stroke-width="5px"
rx="8" ry="8"
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
HTML-like tags for drawing
15
<rect
x="0" y="0"
width="100" height="100"
fill="blue" stroke="red"
stroke-width="5px"
rx="8" ry="8"
id="myRect" class="chart" />
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
HTML-like tags for drawing
15
<rect
x="0" y="0"
width="100" height="100"
fill="blue" stroke="red"
stroke-width="5px"
rx="8" ry="8"
id="myRect" class="chart" />
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
HTML-like tags for drawing
15
<!DOCTYPE html>
<html>
<body>
<svg width="200" height="200">
</svg>
</body>
</html>
<rect
x="0" y="0"
width="100" height="100"
fill="blue" stroke="red"
stroke-width="5px"
rx="8" ry="8"
id="myRect" class="chart" />
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
16
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
16
var rect = document.getElementById('myRect');
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
16
var rect = document.getElementById('myRect');
rect.style.fill = 'green';
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
16
var rect = document.getElementById('myRect');
rect.style.fill = 'green';
rect.onclick = function() { alert('hello'); }
Wednesday, October 7, 2009
Scalable Vector Graphics
17
Wednesday, October 7, 2009
Canvas API
JavaScript API ("Scriptable Image Tag")
18
Wednesday, October 7, 2009
Canvas API
JavaScript API ("Scriptable Image Tag")
18
<canvas id="myCanvas" width="150" height="150">
</canvas>
Wednesday, October 7, 2009
Canvas API
JavaScript API ("Scriptable Image Tag")
18
<canvas id="myCanvas" width="150" height="150">
</canvas>
var canvas = document.getElementById('myCanvas');
Wednesday, October 7, 2009
Canvas API
JavaScript API ("Scriptable Image Tag")
18
<canvas id="myCanvas" width="150" height="150">
</canvas>
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
Wednesday, October 7, 2009
Canvas API
JavaScript API ("Scriptable Image Tag")
18
<canvas id="myCanvas" width="150" height="150">
</canvas>
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.fillStyle = "rgb(200,0,0)";
Wednesday, October 7, 2009
Canvas API
JavaScript API ("Scriptable Image Tag")
18
<canvas id="myCanvas" width="150" height="150">
</canvas>
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect (10, 10, 55, 50);
Wednesday, October 7, 2009
Canvas API
JavaScript API ("Scriptable Image Tag")
18
<canvas id="myCanvas" width="150" height="150">
</canvas>
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect (10, 10, 55, 50);
ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
Wednesday, October 7, 2009
Canvas API
JavaScript API ("Scriptable Image Tag")
18
<canvas id="myCanvas" width="150" height="150">
</canvas>
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect (10, 10, 55, 50);
ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
ctx.fillRect (30, 30, 55, 50);
Wednesday, October 7, 2009
Canvas API
JavaScript API ("Scriptable Image Tag")
18
<canvas id="myCanvas" width="150" height="150">
</canvas>
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect (10, 10, 55, 50);
ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
ctx.fillRect (30, 30, 55, 50);
Wednesday, October 7, 2009
canvas and SVG demos
Bespin (Safari)