HTML5 and Google Chrome - DevFest09
HTML5 and Google Chrome - DevFest09
HTML 5 and Google Chrome Mihai Ionescu Developer Advocate, Google
Browsers Started a Revolution that Continues • In 1995 Netscape introduced JavaScript • In 1999, Microsoft introduces XMLHTTP • In 2002, Mozilla 1.0 includes XMLHttpRequest natively   ... Then web applications started taking off ...   • In 2004, Gmail launches as a beta • In 2005, AJAX takes off (e.g. Google Maps)   ... Now web applications are demanding more capabilities
User Experience   The Web is Developing Fast…                                    XHR                                              Native       Web                          CSS                       DOM                   HTML                1990 – 2008 Q109          Q209   Q309   Q409
The Web is Developing Fast…                                                                                                           Android 2.0: Oct 26, 2009                                                                                                       Chrome 3.0: Sep 15, 2009                                                                                               Firefox 3.5: June 30, 2009 User Experience                                                                                           iPhone 3.0: June 30, 2009                                                                                Safari 4.0: Jun 08, 2009                                                                     Palm Pre: June 06, 2009                                                            Chrome 2.0: May 21, 2009                                               Android 1.5: Apr 13, 2009                                 XHR                                      Opera Labs: Mar 26, 2009                                   Native            Web                          CSS                       DOM                   HTML                1990 – 2008 Q109                                       Q209                       Q309        Q409
The web is also getting faster                             160                               140 SunSpider Runs Per Minute                                 120                               100                        100x improvement                                                    in JavaScript performance                             80                               60                               40                               20                               00                                   2001   2003   2005   2007        2008        2009
What New Capabilities do Webapps Need? • Plugins currently address some needs, others are still not well  addressed    – Playing video    – Webcam / microphone access    – Better file uploads    – Geolocation    – Offline abilities    – 3D    – Positional and multi-channel audio    – Drag and drop of content and files into and out of webapps • Some of these capabilities are working their way through  standards process
Our Goal • Empower web applications   – If a native app can do it, why can’t a webapp?   – Can we build upon webapps strengths? • Understand what new capabilities are needed   – Talking to application developers (you!)   – Figure out what native applications people run       • And what web applications serve similar purposes       • And what native applications have no web equivalent • Implement (we’re going full speed ahead...)   – We prototyped in Gears   – Now we’re implementing natively in Google Chrome • Standardize
<canvas> • One of the first HTML5 additions to be implemented by  browsers – in Safari, then Firefox and Opera. (We got it for  free in Google Chrome from WebKit). • Provides a surface on which you can draw 2D images • Talk of extending the model for 3D (more later)   // canvas is a reference to a <canvas> element   var context = canvas.getContext('2d');   context.fillRect(0,0,50,50);   canvas.setAttribute('width', '300'); // clears the canvas   context.fillRect(0,100,50,50);   canvas.width = canvas.width; // clears the canvas   context.fillRect(100,0,50,50); // only this square remains  (reproduced from http://www.whatwg.org/specs/web-apps/current- work/#canvas with permission)
<canvas> Demo
<video> / <audio> • Allows a page to natively play video / audio  – No plugins required  – As simple as including an image - <audio src=“song.mp3”> • Has built-in playback controls  – Stop  – Pause  – Play • Scriptable, in case you want your own dynamic control • Implemented in WebKit / Chrome
<video> / < audio> Demo
Local Data Store • Provides a way to store data client side • Useful for many classes of applications, especially in  conjunction with offline capabilities • 2 main APIs provided: a database API (exposing a SQLite  database) and a structured storage api (key/value pairs) • Implementation under way in Google Chrome, already  working in WebKit.   db.transaction(function(tx) {     tx.executeSql('SELECT * FROM MyTable', [],         function(tx, rs) {           for (var i = 0; i < rs.rows.length; ++i) {             var row = rs.rows.item(i);             DoSomething(row['column']);           }         });     });
Local Storage Demo
Workers • Workers provide web apps with a means for concurrency • Can offload heavy computation onto a separate thread so  your app doesn’t block • Come in 3 flavors:  – Dedicated (think: bound to a single tab)  – Shared (shared among multiple windows in an origin)  – Persistent (run when the browser is “closed”)  main.js:    var worker = new Worker(‘extra_work.js');    worker.onmessage = function (event) { alert(event.data); };   extra_work.js:    // do some work; when done post message.    postMessage(some_data);
Workers Demo
Application Cache • Application cache solves the problem of how to make it such  that one can load an application URL while offline and it just  “works” • Web pages can provide a “manifest” of files that should be  cached locally • These pages can be accessed offline • Enables web pages to work without the user being connected  to the Internet • Implemented in WebKit, implementation ongoing in Google  Chrome
Web Sockets • Allows bi-directional communication between client and  server in a cleaner, more efficient form than hanging gets  (or a series of XMLHttpRequests) • Intended to be as close as possible to just exposing raw  TCP/IP to JavaScript given the constraints of the Web. • Available in dev channel    var socket = new WebSocket(location);  socket.onopen = function(event) {                     socket.postMessage(“Hello, WebSocket”);}  socket.onmessage =function(event) { alert(event.data); }  socket.onclose = function(event) { alert(“closed”); }
Notifications • Alert() dialogs are annoying, modal, and not a great user  experience • Provide a way to do less intrusive event notifications • Work regardless of what tab / window has focus • Provide more flexibility than an alert() dialog • Prototype available in Webkit / Chrome • Standardization discussions ongoing  var notify = window.webkitNotifications.createNotification(                                          icon, title, text);  notify.show();   notify.ondisplay = function() { alert(‘ondisplay’); };  notify.onclose = function() { alert(‘onclose’); };
Notifications Demo
3D APIs • WebGL (Canvas 3D), developed by Mozilla, is a command-  mode API that allows developers to make OpenGL calls via  JavaScript • O3D is an effort by Google to develop a retain-mode API  where developers can build up a scene graph and manipulate  via JavaScript, also hardware accelerated • Discussion on the web and in standards bodies to follow
WebGL Demo
Geolocation • Make JavaScript APIs from the client to figure out where you  are • Location info from GPS, IP address, Bluetooth, cell towers • Optionally share your location with trusted parties • Watch the user’s position as it changes over time • Implementation ongoing in Chrome     // Single position request.   navigator.geolocation.getCurrentPosition(successCallback);    // Request position updates.   navigator.geolocation.watchPosition(successCallback);
Geolocation Demo
And So Much More… • There’s much work ahead. • Some is well defined  – File API  – Forms2  – WebFont @font-face • Many things less defined  – P2p APIs  – Better drag + drop support  – Webcam / Microphone access  – O/S integration (protocol / file extension handlers and more)  – And more
Chrome HTML 5 in a Nutshell       Video, Audio, Workers                                                             Additional APIs       available in Chrome 3.                                                             (TBD) to better       Websockets in dev channel.                            support web                                                             applications                   Appcache,             More work                   Notifications,        -Geolocation                   Database,             , Web GL,                   Local storage,        File API                   in dev channel      Q4          Q1 / 2010             Q2                  Q3
HTML 5 Native Support    Canvas  Video  ….  Local storage  Web workers
HTML 5 Native Support                          with                         Chrome Frame  Canvas  Video  ….  Local storage  Web workers
HTML 5 Resources www.whatwg.org/html5  www.chromium.org/developers/web-platform-status  blog.chromium.org  diveintohtml5.org  quirksmode.org
Q&A
HTML5 and Google Chrome - DevFest09

More Related Content

PDF
Google Chrome Extensions - DevFest09
PPT
Chrome Extension Develop Starts
PPTX
Google chrome extension
PPTX
Chrome Extension Development - Adam Horvath, Google Technology User Group, Sy...
ODP
Chrome extension development
PDF
Chrome extensions
PDF
Discovering Chrome Extensions
PPTX
Orange is the new blue: How to port Chrome Extension to Firefox Extension
Google Chrome Extensions - DevFest09
Chrome Extension Develop Starts
Google chrome extension
Chrome Extension Development - Adam Horvath, Google Technology User Group, Sy...
Chrome extension development
Chrome extensions
Discovering Chrome Extensions
Orange is the new blue: How to port Chrome Extension to Firefox Extension

What's hot (20)

PDF
Introduction to chrome extension development
PDF
Building Chrome Extensions
PDF
Introduction of chrome extension development
PPTX
Build your own Chrome Extension with AngularJS
PDF
Chrome extension development
PPT
An Introduction to Google Chrome OS..........
PPTX
Chrome Apps & Extensions
PDF
Introduction to Google Chrome Extensions Development
PDF
WordPress Development Tools and Best Practices
PDF
Mobile Hybrid Development with WordPress
PDF
Improve WordPress performance with caching and deferred execution of code
PPTX
Google chrome
ODP
Making Chrome Extension with AngularJS
PPTX
Google chrome operating system
PPT
Google chrome OS
PPSX
Google chrome operating system.ppt
PPT
Google Chrome Operating System
PPT
Google chrome os chromebook
PDF
Browser Performance Tests - Internet Explorer 11 vs Firefox 25 vs Google Chro...
PDF
Advanced Chrome extension exploitation
Introduction to chrome extension development
Building Chrome Extensions
Introduction of chrome extension development
Build your own Chrome Extension with AngularJS
Chrome extension development
An Introduction to Google Chrome OS..........
Chrome Apps & Extensions
Introduction to Google Chrome Extensions Development
WordPress Development Tools and Best Practices
Mobile Hybrid Development with WordPress
Improve WordPress performance with caching and deferred execution of code
Google chrome
Making Chrome Extension with AngularJS
Google chrome operating system
Google chrome OS
Google chrome operating system.ppt
Google Chrome Operating System
Google chrome os chromebook
Browser Performance Tests - Internet Explorer 11 vs Firefox 25 vs Google Chro...
Advanced Chrome extension exploitation
Ad

Similar to HTML5 and Google Chrome - DevFest09 (20)

PDF
An Intro to Mobile HTML5
PPTX
HTML5 on Mobile
PDF
Alejandro Villanueva - Google Inc.
PDF
Google - Charla para CTOs
KEY
HTML5 and the Mobile Web
PDF
Modern Browser Support
PDF
HTML5 and the dawn of rich mobile web applications
PDF
A Snapshot of the Mobile HTML5 Revolution
PPTX
HTML5: An Overview
PDF
The Web is the platform, @lxjs
PDF
Bruce Lawson, Web Development 2.0, SparkUp! Poznan Poland
PDF
HTML5 Technical Executive Summary
PDF
Trends in front end engineering_handouts
PPTX
HTML5 for Rich User Experience
PDF
HTML5 and the dawn of rich mobile web applications pt 1
PDF
APIs, now and in the future
PDF
Web fundamentals
KEY
HTML5 and the Future of Apps
PPTX
An Intro to Mobile HTML5
HTML5 on Mobile
Alejandro Villanueva - Google Inc.
Google - Charla para CTOs
HTML5 and the Mobile Web
Modern Browser Support
HTML5 and the dawn of rich mobile web applications
A Snapshot of the Mobile HTML5 Revolution
HTML5: An Overview
The Web is the platform, @lxjs
Bruce Lawson, Web Development 2.0, SparkUp! Poznan Poland
HTML5 Technical Executive Summary
Trends in front end engineering_handouts
HTML5 for Rich User Experience
HTML5 and the dawn of rich mobile web applications pt 1
APIs, now and in the future
Web fundamentals
HTML5 and the Future of Apps
Ad

Recently uploaded (20)

PPTX
Custom Battery Pack Design Considerations for Performance and Safety
PPTX
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
A proposed approach for plagiarism detection in Myanmar Unicode text
PPTX
Configure Apache Mutual Authentication
PDF
Statistics on Ai - sourced from AIPRM.pdf
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PPTX
AI IN MARKETING- PRESENTED BY ANWAR KABIR 1st June 2025.pptx
PPTX
Microsoft Excel 365/2024 Beginner's training
PDF
CloudStack 4.21: First Look Webinar slides
PDF
Architecture types and enterprise applications.pdf
PPTX
The various Industrial Revolutions .pptx
PDF
Credit Without Borders: AI and Financial Inclusion in Bangladesh
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
DOCX
Basics of Cloud Computing - Cloud Ecosystem
PDF
“A New Era of 3D Sensing: Transforming Industries and Creating Opportunities,...
PPTX
Build Your First AI Agent with UiPath.pptx
PDF
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
PDF
OpenACC and Open Hackathons Monthly Highlights July 2025
PPT
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
Custom Battery Pack Design Considerations for Performance and Safety
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
Module 1.ppt Iot fundamentals and Architecture
A proposed approach for plagiarism detection in Myanmar Unicode text
Configure Apache Mutual Authentication
Statistics on Ai - sourced from AIPRM.pdf
NewMind AI Weekly Chronicles – August ’25 Week III
AI IN MARKETING- PRESENTED BY ANWAR KABIR 1st June 2025.pptx
Microsoft Excel 365/2024 Beginner's training
CloudStack 4.21: First Look Webinar slides
Architecture types and enterprise applications.pdf
The various Industrial Revolutions .pptx
Credit Without Borders: AI and Financial Inclusion in Bangladesh
A contest of sentiment analysis: k-nearest neighbor versus neural network
Basics of Cloud Computing - Cloud Ecosystem
“A New Era of 3D Sensing: Transforming Industries and Creating Opportunities,...
Build Your First AI Agent with UiPath.pptx
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
OpenACC and Open Hackathons Monthly Highlights July 2025
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...

HTML5 and Google Chrome - DevFest09

  • 3. HTML 5 and Google Chrome Mihai Ionescu Developer Advocate, Google
  • 4. Browsers Started a Revolution that Continues • In 1995 Netscape introduced JavaScript • In 1999, Microsoft introduces XMLHTTP • In 2002, Mozilla 1.0 includes XMLHttpRequest natively ... Then web applications started taking off ... • In 2004, Gmail launches as a beta • In 2005, AJAX takes off (e.g. Google Maps) ... Now web applications are demanding more capabilities
  • 5. User Experience The Web is Developing Fast… XHR Native Web CSS DOM HTML 1990 – 2008 Q109 Q209 Q309 Q409
  • 6. The Web is Developing Fast… Android 2.0: Oct 26, 2009 Chrome 3.0: Sep 15, 2009 Firefox 3.5: June 30, 2009 User Experience iPhone 3.0: June 30, 2009 Safari 4.0: Jun 08, 2009 Palm Pre: June 06, 2009 Chrome 2.0: May 21, 2009 Android 1.5: Apr 13, 2009 XHR Opera Labs: Mar 26, 2009 Native Web CSS DOM HTML 1990 – 2008 Q109 Q209 Q309 Q409
  • 7. The web is also getting faster 160 140 SunSpider Runs Per Minute 120 100 100x improvement in JavaScript performance 80 60 40 20 00 2001 2003 2005 2007 2008 2009
  • 8. What New Capabilities do Webapps Need? • Plugins currently address some needs, others are still not well addressed – Playing video – Webcam / microphone access – Better file uploads – Geolocation – Offline abilities – 3D – Positional and multi-channel audio – Drag and drop of content and files into and out of webapps • Some of these capabilities are working their way through standards process
  • 9. Our Goal • Empower web applications – If a native app can do it, why can’t a webapp? – Can we build upon webapps strengths? • Understand what new capabilities are needed – Talking to application developers (you!) – Figure out what native applications people run • And what web applications serve similar purposes • And what native applications have no web equivalent • Implement (we’re going full speed ahead...) – We prototyped in Gears – Now we’re implementing natively in Google Chrome • Standardize
  • 10. <canvas> • One of the first HTML5 additions to be implemented by browsers – in Safari, then Firefox and Opera. (We got it for free in Google Chrome from WebKit). • Provides a surface on which you can draw 2D images • Talk of extending the model for 3D (more later) // canvas is a reference to a <canvas> element var context = canvas.getContext('2d'); context.fillRect(0,0,50,50); canvas.setAttribute('width', '300'); // clears the canvas context.fillRect(0,100,50,50); canvas.width = canvas.width; // clears the canvas context.fillRect(100,0,50,50); // only this square remains (reproduced from http://www.whatwg.org/specs/web-apps/current- work/#canvas with permission)
  • 12. <video> / <audio> • Allows a page to natively play video / audio – No plugins required – As simple as including an image - <audio src=“song.mp3”> • Has built-in playback controls – Stop – Pause – Play • Scriptable, in case you want your own dynamic control • Implemented in WebKit / Chrome
  • 13. <video> / < audio> Demo
  • 14. Local Data Store • Provides a way to store data client side • Useful for many classes of applications, especially in conjunction with offline capabilities • 2 main APIs provided: a database API (exposing a SQLite database) and a structured storage api (key/value pairs) • Implementation under way in Google Chrome, already working in WebKit. db.transaction(function(tx) { tx.executeSql('SELECT * FROM MyTable', [], function(tx, rs) { for (var i = 0; i < rs.rows.length; ++i) { var row = rs.rows.item(i); DoSomething(row['column']); } }); });
  • 16. Workers • Workers provide web apps with a means for concurrency • Can offload heavy computation onto a separate thread so your app doesn’t block • Come in 3 flavors: – Dedicated (think: bound to a single tab) – Shared (shared among multiple windows in an origin) – Persistent (run when the browser is “closed”) main.js: var worker = new Worker(‘extra_work.js'); worker.onmessage = function (event) { alert(event.data); }; extra_work.js: // do some work; when done post message. postMessage(some_data);
  • 18. Application Cache • Application cache solves the problem of how to make it such that one can load an application URL while offline and it just “works” • Web pages can provide a “manifest” of files that should be cached locally • These pages can be accessed offline • Enables web pages to work without the user being connected to the Internet • Implemented in WebKit, implementation ongoing in Google Chrome
  • 19. Web Sockets • Allows bi-directional communication between client and server in a cleaner, more efficient form than hanging gets (or a series of XMLHttpRequests) • Intended to be as close as possible to just exposing raw TCP/IP to JavaScript given the constraints of the Web. • Available in dev channel var socket = new WebSocket(location); socket.onopen = function(event) { socket.postMessage(“Hello, WebSocket”);} socket.onmessage =function(event) { alert(event.data); } socket.onclose = function(event) { alert(“closed”); }
  • 20. Notifications • Alert() dialogs are annoying, modal, and not a great user experience • Provide a way to do less intrusive event notifications • Work regardless of what tab / window has focus • Provide more flexibility than an alert() dialog • Prototype available in Webkit / Chrome • Standardization discussions ongoing var notify = window.webkitNotifications.createNotification( icon, title, text); notify.show(); notify.ondisplay = function() { alert(‘ondisplay’); }; notify.onclose = function() { alert(‘onclose’); };
  • 22. 3D APIs • WebGL (Canvas 3D), developed by Mozilla, is a command- mode API that allows developers to make OpenGL calls via JavaScript • O3D is an effort by Google to develop a retain-mode API where developers can build up a scene graph and manipulate via JavaScript, also hardware accelerated • Discussion on the web and in standards bodies to follow
  • 24. Geolocation • Make JavaScript APIs from the client to figure out where you are • Location info from GPS, IP address, Bluetooth, cell towers • Optionally share your location with trusted parties • Watch the user’s position as it changes over time • Implementation ongoing in Chrome // Single position request. navigator.geolocation.getCurrentPosition(successCallback); // Request position updates. navigator.geolocation.watchPosition(successCallback);
  • 26. And So Much More… • There’s much work ahead. • Some is well defined – File API – Forms2 – WebFont @font-face • Many things less defined – P2p APIs – Better drag + drop support – Webcam / Microphone access – O/S integration (protocol / file extension handlers and more) – And more
  • 27. Chrome HTML 5 in a Nutshell Video, Audio, Workers Additional APIs available in Chrome 3. (TBD) to better Websockets in dev channel. support web applications Appcache, More work Notifications, -Geolocation Database, , Web GL, Local storage, File API in dev channel Q4 Q1 / 2010 Q2 Q3
  • 28. HTML 5 Native Support Canvas Video …. Local storage Web workers
  • 29. HTML 5 Native Support with Chrome Frame Canvas Video …. Local storage Web workers
  • 31. Q&A