SlideShare uma empresa Scribd logo
1 de 110
Baixar para ler offline
Introduction to HTML 5
            Brad Neuberg
            Developer Programs, Google




Wednesday, October 7, 2009
The Web Platform is Accelerating




                                                                                                                      Chrome 2.0:
                                                                                                                      May 21, 2009
                                                                                                                      canvas
            User Experience




                                                                                                       Firefox 3.5b4: video
                                                                                                       Apr 27, 2009   geolocation
                                                                                                       canvas         app cache
                                                                                                       video          database
                                                                                                       geolocation workers
                                                                                                       app cache      SVG
                                                                                          Android 1.5: database
                                                                                          Apr 13, 2009 workers
                                                                                          canvas       SVG
                                                                           Opera Labs:    geolocation
                                                                           Mar 26, 2009   app cache
                                                            Safari 4.0b:
                                                                           canvas         database
                                                            Feb 29, 2009
                                                                           video          workers
                                                            canvas
                                         XHR   iPhone 2.2: video           geolocation
                                               Nov 22, 2008 app cache      SVG
                                       CSS
                                 DOM           canvas       database
                                               app cache workers
                              HTML
                                               database     SVG
                                               SVG
                                                                                                                 native    web

                              1990 -- 2008 Q408                                Q109                            Q209          ...

Wednesday, October 7, 2009
And It’s Solving Key Developer Challenges




                                       Graphics   Location     Storage   Speed
            User Experience




                                         XHR
                                       CSS
                                 DOM
                              HTML



                                                                           native   web

                              1990 -- 2008 Q408              Q109         Q209       ...

Wednesday, October 7, 2009
More Developers
                                                   300
                                                           chrome
                                                           firefox 3.1+
            Monthly Contributors to OSS Browsers




                                                           firefox 2.0-3.0
                                                           webkit
                                                   225




                                                   150




                                                    75




                                                     0
                                                         2002    2003        2004   2005   2006   2007   2008   2009

Wednesday, October 7, 2009
More Users
                                    450




                                    350
            OSS Browser Users (M)




                                    250




                                    150




                                     50
                                          2005   2006   2007   2008   2009

Wednesday, October 7, 2009
More Speed
                                        80
            SunSpider Runs Per Minute




                                        60


                                                           100x improvement
                                                           in JavaScript performance
                                        40




                                        20




                                         0
                                             2001   2003   2005   2007   Q108   Q208   Q308   Q408   Q109

Wednesday, October 7, 2009
A More Powerful Web




                             5>4
Wednesday, October 7, 2009
Cautionary Tales of Latent Lemonade




                                           AJAX (2004)

                             xml (1998)


                      css           xhr
                    (1996)        (1999)




Wednesday, October 7, 2009
HTML 5: A Chance to Do Things Differently




Wednesday, October 7, 2009
canvas/SVG           video   geolocation   app cache &   web workers
                                                    database

Wednesday, October 7, 2009
Until Recently, You Couldn’t Draw on the Web

                                 0
                             0                        X

                                         y

                                     x




                                                     height
                                 Y           width




Wednesday, October 7, 2009
And Graphics Weren’t Very Interactive




                             javascript:onClick(Draw());


Wednesday, October 7, 2009
The Usual Options Do This...
                                           Silverlight
                             VML
                                   Flash




Wednesday, October 7, 2009
... But canvas and SVG Are Intrinsic to the Web

                                       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,
                                DOM    Novell, JavaSoft, SoftQuad Inc., Inso EPS, Texcel
                                       Research, Arbortext
            Transparent Stack




                                       Hypertext Markup Language (HTML)
                                       Original: http://tools.ietf.org/html/rfc1866
                                       Latest: http://www.w3.org/TR/html5/
                                HTML   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,
                                HTTP   Microsoft, W3C, T. Berners-Lee, R. Fielding, J. Gettys,
                                       J. Mogul, H. Frystyk, L. Masinter, P. Leach




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




                             <rect




             15



Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
            • HTML-like tags for drawing




                             <rect
                               x="0" y="0"




             15



Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
            • HTML-like tags for drawing




                             <rect
                               x="0" y="0"
                               width="100" height="100"




             15



Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
            • HTML-like tags for drawing




                             <rect
                               x="0" y="0"
                               width="100" height="100"
                               fill="blue" stroke="red"




             15



Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
            • HTML-like tags for drawing




                             <rect
                               x="0" y="0"
                               width="100" height="100"
                               fill="blue" stroke="red"
                               stroke-width="5px"




             15



Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
            • HTML-like tags for drawing




                             <rect
                               x="0" y="0"
                               width="100" height="100"
                               fill="blue" stroke="red"
                               stroke-width="5px"
                               rx="8" ry="8"




             15



Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
            • HTML-like tags for drawing




                             <rect
                               x="0" y="0"
                               width="100" height="100"
                               fill="blue" stroke="red"
                               stroke-width="5px"
                               rx="8" ry="8"
                               id="myRect" class="chart" />


             15



Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
            • HTML-like tags for drawing




                             <rect
                               x="0" y="0"
                               width="100" height="100"
                               fill="blue" stroke="red"
                               stroke-width="5px"
                               rx="8" ry="8"
                               id="myRect" class="chart" />


             15



Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)
            • HTML-like tags for drawing
                       <!DOCTYPE html>
                       <html>
                       <body>
                       <svg width="200" height="200">
                         <rect
                           x="0" y="0"
                           width="100" height="100"
                           fill="blue" stroke="red"
                           stroke-width="5px"
                           rx="8" ry="8"
                           id="myRect" class="chart" />
                       </svg>
                       </body>
             15
                       </html>
Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)




             16



Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)




                  var rect = document.getElementById('myRect');




             16



Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)




                  var rect = document.getElementById('myRect');
                  rect.style.fill = 'green';




             16



Wednesday, October 7, 2009
Scalable Vector Graphics (SVG)




                  var rect = document.getElementById('myRect');
                  rect.style.fill = 'green';
                  rect.onclick = function() { alert('hello'); }




             16



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")

               <canvas id="myCanvas" width="150" height="150">
               </canvas>




             18



Wednesday, October 7, 2009
Canvas API
            • JavaScript API ("Scriptable Image Tag")

               <canvas id="myCanvas" width="150" height="150">
               </canvas>

               var canvas = document.getElementById('myCanvas');




             18



Wednesday, October 7, 2009
Canvas API
            • JavaScript API ("Scriptable Image Tag")

               <canvas id="myCanvas" width="150" height="150">
               </canvas>

               var canvas = document.getElementById('myCanvas');
               var ctx = canvas.getContext('2d');




             18



Wednesday, October 7, 2009
Canvas API
            • JavaScript API ("Scriptable Image Tag")

               <canvas id="myCanvas" width="150" height="150">
               </canvas>

               var canvas = document.getElementById('myCanvas');
               var ctx = canvas.getContext('2d');

               ctx.fillStyle = "rgb(200,0,0)";




             18



Wednesday, October 7, 2009
Canvas API
            • JavaScript API ("Scriptable Image Tag")

               <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);




             18



Wednesday, October 7, 2009
Canvas API
            • JavaScript API ("Scriptable Image Tag")

               <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)";



             18



Wednesday, October 7, 2009
Canvas API
            • JavaScript API ("Scriptable Image Tag")

               <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);

             18



Wednesday, October 7, 2009
Canvas API
            • JavaScript API ("Scriptable Image Tag")

               <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);

             18



Wednesday, October 7, 2009
• Mozilla Download Center (FF)
      • First Person Gifter (FF)
      • Population Demo (FF)
      • Bespin (Safari)
      • German Election Atlas (Safari)




                             canvas and SVG demos




Wednesday, October 7, 2009
When Canvas or SVG?




             20



Wednesday, October 7, 2009
When Canvas or SVG?



              SVG -> High level
              –Import/Export
              –Easy UIs
              –Interactive
              –Medium Animation
              –Tree of objects



             20



Wednesday, October 7, 2009
When Canvas or SVG?



              SVG -> High level   Canvas -> Low level
              –Import/Export      –No mouse interaction
              –Easy UIs           –High Animation
              –Interactive        –JS Centric
              –Medium Animation   –More Bookkeeping
              –Tree of objects    –Pixels



             20



Wednesday, October 7, 2009
HTML 5 Support

                                     Chrome   Firefox   Safari   Opera
                 canvas/SVG



                             video



               geolocation



                   app cache



                     database



                       workers




Wednesday, October 7, 2009
http://tinyurl.com/mbw73x


Wednesday, October 7, 2009
http://tinyurl.com/mbw73x


Wednesday, October 7, 2009
Wednesday, October 7, 2009
canvas/SVG           video   geolocation   app cache &   web workers
                                                    database

Wednesday, October 7, 2009
Video is Complicated, and Outside Your Control




Wednesday, October 7, 2009
// HTML 5 makes
              <video> as easy
              as <img>



Wednesday, October 7, 2009
Embedding Video




             27



Wednesday, October 7, 2009
Embedding Video




      <video src="http://example.com/myMovie.ogg" controls>




             27



Wednesday, October 7, 2009
Embedding Video




      <video src="http://example.com/myMovie.ogg" controls>
         Your browser does not support the video element.




             27



Wednesday, October 7, 2009
Embedding Video




      <video src="http://example.com/myMovie.ogg" controls>
         Your browser does not support the video element.
      </video>




             27



Wednesday, October 7, 2009
Multiple Files & Scripting


      <video controls>
         <source src="foo.ogg" type="video/ogg">
         <source src="foo.mp4">
         Your browser does not support the video element.
      </video>




             28



Wednesday, October 7, 2009
Multiple Files & Scripting


      <video controls>
         <source src="foo.ogg" type="video/ogg">
         <source src="foo.mp4">
         Your browser does not support the video element.
      </video>


      var v = document.getElementsByTagName("video")[0];
      v.play();




             28



Wednesday, October 7, 2009
• Basic Player (FF 3.5)
      • YouTube (Safari 4) - View Source




                             <video> demos




Wednesday, October 7, 2009
HTML 5 Support

                                     Chrome   Firefox   Safari   Opera
                 canvas/SVG



                             video



               geolocation



                   app cache



                     database



                       workers




Wednesday, October 7, 2009
canvas/SVG           video   geolocation   app cache &   web workers
                                                    database

Wednesday, October 7, 2009
Life’s Better with Location
                                                   2.8 mi

                                                   Places




                                 Social   Ads                        Games
                        CRM                                 Photos




                                                            2.1 mi
                                                                     1.1 mi

                                          500 ft

                                  20 ft

                         75 ft
Wednesday, October 7, 2009
...And Browsers Are Now Location-Enabled




Wednesday, October 7, 2009
// the
              geolocation api
              brings browser-
              based location
              to your apps

Wednesday, October 7, 2009
Geolocation Sample




             35



Wednesday, October 7, 2009
Geolocation Sample


             navigator.geolocation.getCurrentPosition(




             35



Wednesday, October 7, 2009
Geolocation Sample


             navigator.geolocation.getCurrentPosition(
                function(position) {




             35



Wednesday, October 7, 2009
Geolocation Sample


             navigator.geolocation.getCurrentPosition(
                function(position) {
                   var lat = position.coords.latitude;




             35



Wednesday, October 7, 2009
Geolocation Sample


             navigator.geolocation.getCurrentPosition(
                function(position) {
                   var lat = position.coords.latitude;
                   var lon = position.coords.longitude;




             35



Wednesday, October 7, 2009
Geolocation Sample


             navigator.geolocation.getCurrentPosition(
                function(position) {
                   var lat = position.coords.latitude;
                   var lon = position.coords.longitude;
                   showLocation(lat, lon);




             35



Wednesday, October 7, 2009
Geolocation Sample


             navigator.geolocation.getCurrentPosition(
                function(position) {
                   var lat = position.coords.latitude;
                   var lon = position.coords.longitude;
                   showLocation(lat, lon);
                }




             35



Wednesday, October 7, 2009
Geolocation Sample


             navigator.geolocation.getCurrentPosition(
                function(position) {
                   var lat = position.coords.latitude;
                   var lon = position.coords.longitude;
                   showLocation(lat, lon);
                }
             );




             35



Wednesday, October 7, 2009
• Google Maps (FF 3.5)




                             geolocation demos




Wednesday, October 7, 2009
HTML 5 Support

                                     Chrome   Firefox   Safari        Opera
                 canvas/SVG



                             video



               geolocation
                                                           (iPhone)


                   app cache



                     database



                       workers




Wednesday, October 7, 2009
canvas/SVG           video   geolocation   app cache &   web workers
                                                    database

Wednesday, October 7, 2009
Web Apps Need to Work Everywhere




Wednesday, October 7, 2009
// database and
              app cache store
              user data and
              app resources
              locally

Wednesday, October 7, 2009
• Sticky Notes Demo (Safari 4)




                             app cache & database demos




Wednesday, October 7, 2009
App Cache
            • List resources that you want to take offline

               CACHE MANIFEST
               /static/stickies.html
               /media/deleteButton.png
               /media/deleteButtonPressed.png
               /css/stickies.css
               /js/stickies.js




             42



Wednesday, October 7, 2009
App Cache
            • List resources that you want to take offline

               CACHE MANIFEST
               /static/stickies.html
               /media/deleteButton.png
               /media/deleteButtonPressed.png
               /css/stickies.css
               /js/stickies.js


               <body manifest="./cache.manifest">
               </body>




             42



Wednesday, October 7, 2009
Database
Wednesday, October 7, 2009
Database




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",
                                            "Example DB",




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",
                                            "Example DB",
                                            200000);




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",
                                            "Example DB",
                                            200000);

            function saveMe(id, text, timestamp, left, top, zIndex) {




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",
                                            "Example DB",
                                            200000);

            function saveMe(id, text, timestamp, left, top, zIndex) {
               db.transaction(




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",
                                            "Example DB",
                                            200000);

            function saveMe(id, text, timestamp, left, top, zIndex) {
               db.transaction(
                  function (tx) {




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",
                                            "Example DB",
                                            200000);

            function saveMe(id, text, timestamp, left, top, zIndex) {
               db.transaction(
                  function (tx) {
                     tx.executeSql(




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",
                                            "Example DB",
                                            200000);

            function saveMe(id, text, timestamp, left, top, zIndex) {
               db.transaction(
                  function (tx) {
                     tx.executeSql(
                         "INSERT INTO WebKitStickyNotes "




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",
                                            "Example DB",
                                            200000);

            function saveMe(id, text, timestamp, left, top, zIndex) {
               db.transaction(
                  function (tx) {
                     tx.executeSql(
                         "INSERT INTO WebKitStickyNotes "
                         + "(id, note, timestamp, left, top, zindex) "




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",
                                            "Example DB",
                                            200000);

            function saveMe(id, text, timestamp, left, top, zIndex) {
               db.transaction(
                  function (tx) {
                     tx.executeSql(
                         "INSERT INTO WebKitStickyNotes "
                         + "(id, note, timestamp, left, top, zindex) "
                         + "VALUES (?, ?, ?, ?, ?, ?)",




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",
                                            "Example DB",
                                            200000);

            function saveMe(id, text, timestamp, left, top, zIndex) {
               db.transaction(
                  function (tx) {
                     tx.executeSql(
                         "INSERT INTO WebKitStickyNotes "
                         + "(id, note, timestamp, left, top, zindex) "
                         + "VALUES (?, ?, ?, ?, ?, ?)",
                         [id, text, timestamp, left, top, zIndex]);




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",
                                            "Example DB",
                                            200000);

            function saveMe(id, text, timestamp, left, top, zIndex) {
               db.transaction(
                  function (tx) {
                     tx.executeSql(
                         "INSERT INTO WebKitStickyNotes "
                         + "(id, note, timestamp, left, top, zindex) "
                         + "VALUES (?, ?, ?, ?, ?, ?)",
                         [id, text, timestamp, left, top, zIndex]);
                   }




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",
                                            "Example DB",
                                            200000);

            function saveMe(id, text, timestamp, left, top, zIndex) {
               db.transaction(
                  function (tx) {
                     tx.executeSql(
                         "INSERT INTO WebKitStickyNotes "
                         + "(id, note, timestamp, left, top, zindex) "
                         + "VALUES (?, ?, ?, ?, ?, ?)",
                         [id, text, timestamp, left, top, zIndex]);
                   }
               );




             44



Wednesday, October 7, 2009
Database
            var db = window.openDatabase("NoteTest", "1.0",
                                            "Example DB",
                                            200000);

            function saveMe(id, text, timestamp, left, top, zIndex) {
               db.transaction(
                  function (tx) {
                     tx.executeSql(
                         "INSERT INTO WebKitStickyNotes "
                         + "(id, note, timestamp, left, top, zindex) "
                         + "VALUES (?, ?, ?, ?, ?, ?)",
                         [id, text, timestamp, left, top, zIndex]);
                   }
               );
            }



             44



Wednesday, October 7, 2009
HTML 5 Support

                                     Chrome   Firefox   Safari        Opera
                 canvas/SVG



                             video



               geolocation
                                                           (iPhone)


                   app cache
                                                                        (mobile)


                     database
                                                                        (mobile)


                       workers




Wednesday, October 7, 2009
canvas/SVG           video   geolocation   app cache &   web workers
                                                    database

Wednesday, October 7, 2009
A More Powerful Web == More Powerful Apps




Wednesday, October 7, 2009
But More Power == More Responsibility


                             I will not hose the browser with JavaScript

                             I will not hose the browser with JavaScript

                             I will not hose the browser with JavaScript

                             I will not hose the browser with JavaScript

                             I will not hose the browser with JavaScript

                             I will not hose the browser with JavaScript



Wednesday, October 7, 2009
// web workers
              defines an API
              for running
              background
              scripts

Wednesday, October 7, 2009
• Bad Primes (FF 3.5)
      • Good Primes (FF 3.5)
      • Motion Tracker (FF)




                             web workers demos




Wednesday, October 7, 2009
Web Workers




             51



Wednesday, October 7, 2009
Web Workers

            <script>




             51



Wednesday, October 7, 2009
Web Workers

            <script>
               var worker = new Worker('worker.js');




             51



Wednesday, October 7, 2009
Web Workers

            <script>
               var worker = new Worker('worker.js');
               worker.onmessage = function (event) {




             51



Wednesday, October 7, 2009
Web Workers

            <script>
               var worker = new Worker('worker.js');
               worker.onmessage = function (event) {
                  console.log('Results: ' + event.data);




             51



Wednesday, October 7, 2009
Web Workers

            <script>
               var worker = new Worker('worker.js');
               worker.onmessage = function (event) {
                  console.log('Results: ' + event.data);
               };




             51



Wednesday, October 7, 2009
Web Workers

            <script>
               var worker = new Worker('worker.js');
               worker.onmessage = function (event) {
                  console.log('Results: ' + event.data);
               };
            </script>




             51



Wednesday, October 7, 2009
worker.js

            function findPrimes() {
               // ... prime algorithm here
               postMessage(nextPrime);
            }

            findPrimes();




             52



Wednesday, October 7, 2009
HTML5 Support

                                     Chrome   Firefox   Safari        Opera
                 canvas/SVG



                             video



               geolocation
                                                           (iPhone)


                   app cache
                                                                        (mobile)


                     database
                                                                        (mobile)


                       workers
                                                                        (mobile)



Wednesday, October 7, 2009
Download Slides
            • http://codinginparadise.org/presentations/intro_html5.pdf




             54



Wednesday, October 7, 2009
Introduction to HTML 5
            Brad Neuberg
            Developer Programs, Google




Wednesday, October 7, 2009

Mais conteúdo relacionado

Destaque

Isabel: Reuniones, Clases y Congresos a través de Internet
Isabel: Reuniones, Clases y Congresos a través de InternetIsabel: Reuniones, Clases y Congresos a través de Internet
Isabel: Reuniones, Clases y Congresos a través de InternetJuan Quemada
 
Internet Ice091117
Internet Ice091117Internet Ice091117
Internet Ice091117Juan Quemada
 
Introducción a los Frameworks CSS
Introducción a los Frameworks CSSIntroducción a los Frameworks CSS
Introducción a los Frameworks CSSLuis Miguel Martín
 
Herramientas para el desarrollo en plataformas móviles web
Herramientas para el desarrollo en plataformas móviles   webHerramientas para el desarrollo en plataformas móviles   web
Herramientas para el desarrollo en plataformas móviles webjoycesita
 
Arquitectura del Web 2
Arquitectura del Web 2Arquitectura del Web 2
Arquitectura del Web 2Juan Quemada
 
Nuevos retos de Internet: Movilidad y Cloud Computing
Nuevos retos de Internet: Movilidad y Cloud ComputingNuevos retos de Internet: Movilidad y Cloud Computing
Nuevos retos de Internet: Movilidad y Cloud ComputingJuan Quemada
 
Human Interaction, Social Protocols and Collaborative Applications
Human Interaction, Social Protocols and Collaborative ApplicationsHuman Interaction, Social Protocols and Collaborative Applications
Human Interaction, Social Protocols and Collaborative ApplicationsJuan Quemada
 
GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group PresentationCarlos A. Iglesias
 
Proyecto de Topicos II - HTML5
Proyecto de Topicos II - HTML5Proyecto de Topicos II - HTML5
Proyecto de Topicos II - HTML5joycesita
 
Html5 Open Video Tutorial
Html5 Open Video TutorialHtml5 Open Video Tutorial
Html5 Open Video TutorialSilvia Pfeiffer
 
Introduccion al Web 2.0
Introduccion al Web 2.0Introduccion al Web 2.0
Introduccion al Web 2.0Juan Quemada
 
Creación y estilizado de una página en HTML5 - 70-480 certificacion microsoft
Creación y estilizado de una página en HTML5 - 70-480 certificacion microsoftCreación y estilizado de una página en HTML5 - 70-480 certificacion microsoft
Creación y estilizado de una página en HTML5 - 70-480 certificacion microsoftNicolas Navarro Rincón
 

Destaque (20)

Isabel: Reuniones, Clases y Congresos a través de Internet
Isabel: Reuniones, Clases y Congresos a través de InternetIsabel: Reuniones, Clases y Congresos a través de Internet
Isabel: Reuniones, Clases y Congresos a través de Internet
 
Introducción CSS
Introducción CSSIntroducción CSS
Introducción CSS
 
Presentación TEWC
Presentación TEWCPresentación TEWC
Presentación TEWC
 
Internet Ice091117
Internet Ice091117Internet Ice091117
Internet Ice091117
 
Introducción a los Frameworks CSS
Introducción a los Frameworks CSSIntroducción a los Frameworks CSS
Introducción a los Frameworks CSS
 
Herramientas para el desarrollo en plataformas móviles web
Herramientas para el desarrollo en plataformas móviles   webHerramientas para el desarrollo en plataformas móviles   web
Herramientas para el desarrollo en plataformas móviles web
 
CSS
CSSCSS
CSS
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Arquitectura del Web 2
Arquitectura del Web 2Arquitectura del Web 2
Arquitectura del Web 2
 
Fundamentos de CSS
Fundamentos de CSSFundamentos de CSS
Fundamentos de CSS
 
Nuevos retos de Internet: Movilidad y Cloud Computing
Nuevos retos de Internet: Movilidad y Cloud ComputingNuevos retos de Internet: Movilidad y Cloud Computing
Nuevos retos de Internet: Movilidad y Cloud Computing
 
Empresa 2.0
Empresa 2.0Empresa 2.0
Empresa 2.0
 
Human Interaction, Social Protocols and Collaborative Applications
Human Interaction, Social Protocols and Collaborative ApplicationsHuman Interaction, Social Protocols and Collaborative Applications
Human Interaction, Social Protocols and Collaborative Applications
 
GSI Research Group Presentation
GSI Research Group PresentationGSI Research Group Presentation
GSI Research Group Presentation
 
Proyecto de Topicos II - HTML5
Proyecto de Topicos II - HTML5Proyecto de Topicos II - HTML5
Proyecto de Topicos II - HTML5
 
Html5 Open Video Tutorial
Html5 Open Video TutorialHtml5 Open Video Tutorial
Html5 Open Video Tutorial
 
HTML5 Canvas
HTML5 CanvasHTML5 Canvas
HTML5 Canvas
 
Css - Tema 1
Css - Tema 1Css - Tema 1
Css - Tema 1
 
Introduccion al Web 2.0
Introduccion al Web 2.0Introduccion al Web 2.0
Introduccion al Web 2.0
 
Creación y estilizado de una página en HTML5 - 70-480 certificacion microsoft
Creación y estilizado de una página en HTML5 - 70-480 certificacion microsoftCreación y estilizado de una página en HTML5 - 70-480 certificacion microsoft
Creación y estilizado de una página en HTML5 - 70-480 certificacion microsoft
 

Semelhante a Google html5 Tutorial

Alejandro Villanueva - Google Inc.
Alejandro Villanueva - Google Inc.Alejandro Villanueva - Google Inc.
Alejandro Villanueva - Google Inc.Alejandro Corpeño
 
Google - Charla para CTOs
Google - Charla para CTOsGoogle - Charla para CTOs
Google - Charla para CTOsPalermo Valley
 
Google DevFest 09
Google DevFest 09Google DevFest 09
Google DevFest 09Eze Torres
 
Google Devfest 2009 Argentina - Keynote
Google Devfest 2009 Argentina - KeynoteGoogle Devfest 2009 Argentina - Keynote
Google Devfest 2009 Argentina - KeynotePatrick Chanezon
 
HTML5 and Google Chrome - DevFest09
HTML5 and Google Chrome - DevFest09HTML5 and Google Chrome - DevFest09
HTML5 and Google Chrome - DevFest09mihaiionescu
 
Mozilla in Vietnam 2009
Mozilla in Vietnam 2009Mozilla in Vietnam 2009
Mozilla in Vietnam 2009Gen Kanai
 
Standards Talk - Opera Uni Tour Indonesia
Standards Talk - Opera Uni Tour IndonesiaStandards Talk - Opera Uni Tour Indonesia
Standards Talk - Opera Uni Tour IndonesiaZi Bin Cheah
 
Mozilla In Malaysia
Mozilla In MalaysiaMozilla In Malaysia
Mozilla In MalaysiaGen Kanai
 
Adobe Flex: Creating Widgets for the Desktop and Web
Adobe Flex: Creating Widgets for the Desktop and WebAdobe Flex: Creating Widgets for the Desktop and Web
Adobe Flex: Creating Widgets for the Desktop and WebColin Loretz
 
Web Standards @ Opera Talk Oslo
Web Standards @ Opera Talk OsloWeb Standards @ Opera Talk Oslo
Web Standards @ Opera Talk OsloZi Bin Cheah
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?jbandi
 
Google Web Toolkit for the Enterprise Developer - JBoss World 2009
Google Web Toolkit for the Enterprise Developer - JBoss World 2009Google Web Toolkit for the Enterprise Developer - JBoss World 2009
Google Web Toolkit for the Enterprise Developer - JBoss World 2009Fred Sauer
 
クラウドを支えるハードウェア・ソフトウェア基盤技術
クラウドを支えるハードウェア・ソフトウェア基盤技術クラウドを支えるハードウェア・ソフトウェア基盤技術
クラウドを支えるハードウェア・ソフトウェア基盤技術Ryousei Takano
 
Mobile Web App Development
Mobile Web App DevelopmentMobile Web App Development
Mobile Web App DevelopmentBrian LeRoux
 
Build HTML5 App (Intel Elements 2011)
Build HTML5 App (Intel Elements 2011)Build HTML5 App (Intel Elements 2011)
Build HTML5 App (Intel Elements 2011)Ariya Hidayat
 
Elements2011 html5-app-110928141627-phpapp01
Elements2011 html5-app-110928141627-phpapp01Elements2011 html5-app-110928141627-phpapp01
Elements2011 html5-app-110928141627-phpapp01Jesse Smith
 
Introduction to First Commercial Memcached Service for Cloud
Introduction to First Commercial Memcached Service for CloudIntroduction to First Commercial Memcached Service for Cloud
Introduction to First Commercial Memcached Service for CloudGear6
 

Semelhante a Google html5 Tutorial (20)

Alejandro Villanueva - Google Inc.
Alejandro Villanueva - Google Inc.Alejandro Villanueva - Google Inc.
Alejandro Villanueva - Google Inc.
 
Google - Charla para CTOs
Google - Charla para CTOsGoogle - Charla para CTOs
Google - Charla para CTOs
 
Google DevFest 09
Google DevFest 09Google DevFest 09
Google DevFest 09
 
Google Devfest 2009 Argentina - Keynote
Google Devfest 2009 Argentina - KeynoteGoogle Devfest 2009 Argentina - Keynote
Google Devfest 2009 Argentina - Keynote
 
HTML5 and Google Chrome - DevFest09
HTML5 and Google Chrome - DevFest09HTML5 and Google Chrome - DevFest09
HTML5 and Google Chrome - DevFest09
 
Mozilla in Vietnam 2009
Mozilla in Vietnam 2009Mozilla in Vietnam 2009
Mozilla in Vietnam 2009
 
Standards Talk - Opera Uni Tour Indonesia
Standards Talk - Opera Uni Tour IndonesiaStandards Talk - Opera Uni Tour Indonesia
Standards Talk - Opera Uni Tour Indonesia
 
Mozilla In Malaysia
Mozilla In MalaysiaMozilla In Malaysia
Mozilla In Malaysia
 
Adobe Flex: Creating Widgets for the Desktop and Web
Adobe Flex: Creating Widgets for the Desktop and WebAdobe Flex: Creating Widgets for the Desktop and Web
Adobe Flex: Creating Widgets for the Desktop and Web
 
Web Standards @ Opera Talk Oslo
Web Standards @ Opera Talk OsloWeb Standards @ Opera Talk Oslo
Web Standards @ Opera Talk Oslo
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?
 
Nuxeo 5.2 Glassfish
Nuxeo 5.2 GlassfishNuxeo 5.2 Glassfish
Nuxeo 5.2 Glassfish
 
Google Web Toolkit for the Enterprise Developer - JBoss World 2009
Google Web Toolkit for the Enterprise Developer - JBoss World 2009Google Web Toolkit for the Enterprise Developer - JBoss World 2009
Google Web Toolkit for the Enterprise Developer - JBoss World 2009
 
クラウドを支えるハードウェア・ソフトウェア基盤技術
クラウドを支えるハードウェア・ソフトウェア基盤技術クラウドを支えるハードウェア・ソフトウェア基盤技術
クラウドを支えるハードウェア・ソフトウェア基盤技術
 
Mobile Web App Development
Mobile Web App DevelopmentMobile Web App Development
Mobile Web App Development
 
Build HTML5 App (Intel Elements 2011)
Build HTML5 App (Intel Elements 2011)Build HTML5 App (Intel Elements 2011)
Build HTML5 App (Intel Elements 2011)
 
Elements2011 html5-app-110928141627-phpapp01
Elements2011 html5-app-110928141627-phpapp01Elements2011 html5-app-110928141627-phpapp01
Elements2011 html5-app-110928141627-phpapp01
 
Firefox 3.5 Overview
Firefox 3.5 OverviewFirefox 3.5 Overview
Firefox 3.5 Overview
 
RubyConf 2009
RubyConf 2009RubyConf 2009
RubyConf 2009
 
Introduction to First Commercial Memcached Service for Cloud
Introduction to First Commercial Memcached Service for CloudIntroduction to First Commercial Memcached Service for Cloud
Introduction to First Commercial Memcached Service for Cloud
 

Último

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 

Último (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 

Google html5 Tutorial

  • 1. Introduction to HTML 5 Brad Neuberg Developer Programs, Google Wednesday, October 7, 2009
  • 2. The Web Platform is Accelerating Chrome 2.0: May 21, 2009 canvas User Experience Firefox 3.5b4: video Apr 27, 2009 geolocation canvas app cache video database geolocation workers app cache SVG Android 1.5: database Apr 13, 2009 workers canvas SVG Opera Labs: geolocation Mar 26, 2009 app cache Safari 4.0b: canvas database Feb 29, 2009 video workers canvas XHR iPhone 2.2: video geolocation Nov 22, 2008 app cache SVG CSS DOM canvas database app cache workers HTML database SVG SVG native web 1990 -- 2008 Q408 Q109 Q209 ... Wednesday, October 7, 2009
  • 3. And It’s Solving Key Developer Challenges Graphics Location Storage Speed User Experience XHR CSS DOM HTML native web 1990 -- 2008 Q408 Q109 Q209 ... Wednesday, October 7, 2009
  • 4. More Developers 300 chrome firefox 3.1+ Monthly Contributors to OSS Browsers firefox 2.0-3.0 webkit 225 150 75 0 2002 2003 2004 2005 2006 2007 2008 2009 Wednesday, October 7, 2009
  • 5. More Users 450 350 OSS Browser Users (M) 250 150 50 2005 2006 2007 2008 2009 Wednesday, October 7, 2009
  • 6. More Speed 80 SunSpider Runs Per Minute 60 100x improvement in JavaScript performance 40 20 0 2001 2003 2005 2007 Q108 Q208 Q308 Q408 Q109 Wednesday, October 7, 2009
  • 7. A More Powerful Web 5>4 Wednesday, October 7, 2009
  • 8. Cautionary Tales of Latent Lemonade AJAX (2004) xml (1998) css xhr (1996) (1999) Wednesday, October 7, 2009
  • 9. HTML 5: A Chance to Do Things Differently Wednesday, October 7, 2009
  • 10. canvas/SVG video geolocation app cache & web workers database Wednesday, October 7, 2009
  • 11. Until Recently, You Couldn’t Draw on the Web 0 0 X y x height Y width Wednesday, October 7, 2009
  • 12. And Graphics Weren’t Very Interactive javascript:onClick(Draw()); Wednesday, October 7, 2009
  • 13. The Usual Options Do This... Silverlight VML Flash Wednesday, October 7, 2009
  • 14. ... But canvas and SVG Are Intrinsic to the Web 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, DOM Novell, JavaSoft, SoftQuad Inc., Inso EPS, Texcel Research, Arbortext Transparent Stack Hypertext Markup Language (HTML) Original: http://tools.ietf.org/html/rfc1866 Latest: http://www.w3.org/TR/html5/ HTML 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, HTTP Microsoft, W3C, T. Berners-Lee, R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach Wednesday, October 7, 2009
  • 15. Scalable Vector Graphics (SVG) • HTML-like tags for drawing 15 Wednesday, October 7, 2009
  • 16. Scalable Vector Graphics (SVG) • HTML-like tags for drawing <rect 15 Wednesday, October 7, 2009
  • 17. Scalable Vector Graphics (SVG) • HTML-like tags for drawing <rect x="0" y="0" 15 Wednesday, October 7, 2009
  • 18. Scalable Vector Graphics (SVG) • HTML-like tags for drawing <rect x="0" y="0" width="100" height="100" 15 Wednesday, October 7, 2009
  • 19. Scalable Vector Graphics (SVG) • HTML-like tags for drawing <rect x="0" y="0" width="100" height="100" fill="blue" stroke="red" 15 Wednesday, October 7, 2009
  • 20. Scalable Vector Graphics (SVG) • HTML-like tags for drawing <rect x="0" y="0" width="100" height="100" fill="blue" stroke="red" stroke-width="5px" 15 Wednesday, October 7, 2009
  • 21. Scalable Vector Graphics (SVG) • HTML-like tags for drawing <rect x="0" y="0" width="100" height="100" fill="blue" stroke="red" stroke-width="5px" rx="8" ry="8" 15 Wednesday, October 7, 2009
  • 22. Scalable Vector Graphics (SVG) • HTML-like tags for drawing <rect x="0" y="0" width="100" height="100" fill="blue" stroke="red" stroke-width="5px" rx="8" ry="8" id="myRect" class="chart" /> 15 Wednesday, October 7, 2009
  • 23. Scalable Vector Graphics (SVG) • HTML-like tags for drawing <rect x="0" y="0" width="100" height="100" fill="blue" stroke="red" stroke-width="5px" rx="8" ry="8" id="myRect" class="chart" /> 15 Wednesday, October 7, 2009
  • 24. Scalable Vector Graphics (SVG) • HTML-like tags for drawing <!DOCTYPE html> <html> <body> <svg width="200" height="200"> <rect x="0" y="0" width="100" height="100" fill="blue" stroke="red" stroke-width="5px" rx="8" ry="8" id="myRect" class="chart" /> </svg> </body> 15 </html> Wednesday, October 7, 2009
  • 25. Scalable Vector Graphics (SVG) 16 Wednesday, October 7, 2009
  • 26. Scalable Vector Graphics (SVG) var rect = document.getElementById('myRect'); 16 Wednesday, October 7, 2009
  • 27. Scalable Vector Graphics (SVG) var rect = document.getElementById('myRect'); rect.style.fill = 'green'; 16 Wednesday, October 7, 2009
  • 28. Scalable Vector Graphics (SVG) var rect = document.getElementById('myRect'); rect.style.fill = 'green'; rect.onclick = function() { alert('hello'); } 16 Wednesday, October 7, 2009
  • 29. Scalable Vector Graphics 17 Wednesday, October 7, 2009
  • 30. Canvas API • JavaScript API ("Scriptable Image Tag") 18 Wednesday, October 7, 2009
  • 31. Canvas API • JavaScript API ("Scriptable Image Tag") <canvas id="myCanvas" width="150" height="150"> </canvas> 18 Wednesday, October 7, 2009
  • 32. Canvas API • JavaScript API ("Scriptable Image Tag") <canvas id="myCanvas" width="150" height="150"> </canvas> var canvas = document.getElementById('myCanvas'); 18 Wednesday, October 7, 2009
  • 33. Canvas API • JavaScript API ("Scriptable Image Tag") <canvas id="myCanvas" width="150" height="150"> </canvas> var canvas = document.getElementById('myCanvas'); var ctx = canvas.getContext('2d'); 18 Wednesday, October 7, 2009
  • 34. Canvas API • JavaScript API ("Scriptable Image Tag") <canvas id="myCanvas" width="150" height="150"> </canvas> var canvas = document.getElementById('myCanvas'); var ctx = canvas.getContext('2d'); ctx.fillStyle = "rgb(200,0,0)"; 18 Wednesday, October 7, 2009
  • 35. Canvas API • JavaScript API ("Scriptable Image Tag") <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); 18 Wednesday, October 7, 2009
  • 36. Canvas API • JavaScript API ("Scriptable Image Tag") <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)"; 18 Wednesday, October 7, 2009
  • 37. Canvas API • JavaScript API ("Scriptable Image Tag") <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); 18 Wednesday, October 7, 2009
  • 38. Canvas API • JavaScript API ("Scriptable Image Tag") <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); 18 Wednesday, October 7, 2009
  • 39. • Mozilla Download Center (FF) • First Person Gifter (FF) • Population Demo (FF) • Bespin (Safari) • German Election Atlas (Safari) canvas and SVG demos Wednesday, October 7, 2009
  • 40. When Canvas or SVG? 20 Wednesday, October 7, 2009
  • 41. When Canvas or SVG? SVG -> High level –Import/Export –Easy UIs –Interactive –Medium Animation –Tree of objects 20 Wednesday, October 7, 2009
  • 42. When Canvas or SVG? SVG -> High level Canvas -> Low level –Import/Export –No mouse interaction –Easy UIs –High Animation –Interactive –JS Centric –Medium Animation –More Bookkeeping –Tree of objects –Pixels 20 Wednesday, October 7, 2009
  • 43. HTML 5 Support Chrome Firefox Safari Opera canvas/SVG video geolocation app cache database workers Wednesday, October 7, 2009
  • 47. canvas/SVG video geolocation app cache & web workers database Wednesday, October 7, 2009
  • 48. Video is Complicated, and Outside Your Control Wednesday, October 7, 2009
  • 49. // HTML 5 makes <video> as easy as <img> Wednesday, October 7, 2009
  • 50. Embedding Video 27 Wednesday, October 7, 2009
  • 51. Embedding Video <video src="http://example.com/myMovie.ogg" controls> 27 Wednesday, October 7, 2009
  • 52. Embedding Video <video src="http://example.com/myMovie.ogg" controls> Your browser does not support the video element. 27 Wednesday, October 7, 2009
  • 53. Embedding Video <video src="http://example.com/myMovie.ogg" controls> Your browser does not support the video element. </video> 27 Wednesday, October 7, 2009
  • 54. Multiple Files & Scripting <video controls> <source src="foo.ogg" type="video/ogg"> <source src="foo.mp4"> Your browser does not support the video element. </video> 28 Wednesday, October 7, 2009
  • 55. Multiple Files & Scripting <video controls> <source src="foo.ogg" type="video/ogg"> <source src="foo.mp4"> Your browser does not support the video element. </video> var v = document.getElementsByTagName("video")[0]; v.play(); 28 Wednesday, October 7, 2009
  • 56. • Basic Player (FF 3.5) • YouTube (Safari 4) - View Source <video> demos Wednesday, October 7, 2009
  • 57. HTML 5 Support Chrome Firefox Safari Opera canvas/SVG video geolocation app cache database workers Wednesday, October 7, 2009
  • 58. canvas/SVG video geolocation app cache & web workers database Wednesday, October 7, 2009
  • 59. Life’s Better with Location 2.8 mi Places Social Ads Games CRM Photos 2.1 mi 1.1 mi 500 ft 20 ft 75 ft Wednesday, October 7, 2009
  • 60. ...And Browsers Are Now Location-Enabled Wednesday, October 7, 2009
  • 61. // the geolocation api brings browser- based location to your apps Wednesday, October 7, 2009
  • 62. Geolocation Sample 35 Wednesday, October 7, 2009
  • 63. Geolocation Sample navigator.geolocation.getCurrentPosition( 35 Wednesday, October 7, 2009
  • 64. Geolocation Sample navigator.geolocation.getCurrentPosition( function(position) { 35 Wednesday, October 7, 2009
  • 65. Geolocation Sample navigator.geolocation.getCurrentPosition( function(position) { var lat = position.coords.latitude; 35 Wednesday, October 7, 2009
  • 66. Geolocation Sample navigator.geolocation.getCurrentPosition( function(position) { var lat = position.coords.latitude; var lon = position.coords.longitude; 35 Wednesday, October 7, 2009
  • 67. Geolocation Sample navigator.geolocation.getCurrentPosition( function(position) { var lat = position.coords.latitude; var lon = position.coords.longitude; showLocation(lat, lon); 35 Wednesday, October 7, 2009
  • 68. Geolocation Sample navigator.geolocation.getCurrentPosition( function(position) { var lat = position.coords.latitude; var lon = position.coords.longitude; showLocation(lat, lon); } 35 Wednesday, October 7, 2009
  • 69. Geolocation Sample navigator.geolocation.getCurrentPosition( function(position) { var lat = position.coords.latitude; var lon = position.coords.longitude; showLocation(lat, lon); } ); 35 Wednesday, October 7, 2009
  • 70. • Google Maps (FF 3.5) geolocation demos Wednesday, October 7, 2009
  • 71. HTML 5 Support Chrome Firefox Safari Opera canvas/SVG video geolocation (iPhone) app cache database workers Wednesday, October 7, 2009
  • 72. canvas/SVG video geolocation app cache & web workers database Wednesday, October 7, 2009
  • 73. Web Apps Need to Work Everywhere Wednesday, October 7, 2009
  • 74. // database and app cache store user data and app resources locally Wednesday, October 7, 2009
  • 75. • Sticky Notes Demo (Safari 4) app cache & database demos Wednesday, October 7, 2009
  • 76. App Cache • List resources that you want to take offline CACHE MANIFEST /static/stickies.html /media/deleteButton.png /media/deleteButtonPressed.png /css/stickies.css /js/stickies.js 42 Wednesday, October 7, 2009
  • 77. App Cache • List resources that you want to take offline CACHE MANIFEST /static/stickies.html /media/deleteButton.png /media/deleteButtonPressed.png /css/stickies.css /js/stickies.js <body manifest="./cache.manifest"> </body> 42 Wednesday, October 7, 2009
  • 79. Database 44 Wednesday, October 7, 2009
  • 80. Database var db = window.openDatabase("NoteTest", "1.0", 44 Wednesday, October 7, 2009
  • 81. Database var db = window.openDatabase("NoteTest", "1.0", "Example DB", 44 Wednesday, October 7, 2009
  • 82. Database var db = window.openDatabase("NoteTest", "1.0", "Example DB", 200000); 44 Wednesday, October 7, 2009
  • 83. Database var db = window.openDatabase("NoteTest", "1.0", "Example DB", 200000); function saveMe(id, text, timestamp, left, top, zIndex) { 44 Wednesday, October 7, 2009
  • 84. Database var db = window.openDatabase("NoteTest", "1.0", "Example DB", 200000); function saveMe(id, text, timestamp, left, top, zIndex) { db.transaction( 44 Wednesday, October 7, 2009
  • 85. Database var db = window.openDatabase("NoteTest", "1.0", "Example DB", 200000); function saveMe(id, text, timestamp, left, top, zIndex) { db.transaction( function (tx) { 44 Wednesday, October 7, 2009
  • 86. Database var db = window.openDatabase("NoteTest", "1.0", "Example DB", 200000); function saveMe(id, text, timestamp, left, top, zIndex) { db.transaction( function (tx) { tx.executeSql( 44 Wednesday, October 7, 2009
  • 87. Database var db = window.openDatabase("NoteTest", "1.0", "Example DB", 200000); function saveMe(id, text, timestamp, left, top, zIndex) { db.transaction( function (tx) { tx.executeSql( "INSERT INTO WebKitStickyNotes " 44 Wednesday, October 7, 2009
  • 88. Database var db = window.openDatabase("NoteTest", "1.0", "Example DB", 200000); function saveMe(id, text, timestamp, left, top, zIndex) { db.transaction( function (tx) { tx.executeSql( "INSERT INTO WebKitStickyNotes " + "(id, note, timestamp, left, top, zindex) " 44 Wednesday, October 7, 2009
  • 89. Database var db = window.openDatabase("NoteTest", "1.0", "Example DB", 200000); function saveMe(id, text, timestamp, left, top, zIndex) { db.transaction( function (tx) { tx.executeSql( "INSERT INTO WebKitStickyNotes " + "(id, note, timestamp, left, top, zindex) " + "VALUES (?, ?, ?, ?, ?, ?)", 44 Wednesday, October 7, 2009
  • 90. Database var db = window.openDatabase("NoteTest", "1.0", "Example DB", 200000); function saveMe(id, text, timestamp, left, top, zIndex) { db.transaction( function (tx) { tx.executeSql( "INSERT INTO WebKitStickyNotes " + "(id, note, timestamp, left, top, zindex) " + "VALUES (?, ?, ?, ?, ?, ?)", [id, text, timestamp, left, top, zIndex]); 44 Wednesday, October 7, 2009
  • 91. Database var db = window.openDatabase("NoteTest", "1.0", "Example DB", 200000); function saveMe(id, text, timestamp, left, top, zIndex) { db.transaction( function (tx) { tx.executeSql( "INSERT INTO WebKitStickyNotes " + "(id, note, timestamp, left, top, zindex) " + "VALUES (?, ?, ?, ?, ?, ?)", [id, text, timestamp, left, top, zIndex]); } 44 Wednesday, October 7, 2009
  • 92. Database var db = window.openDatabase("NoteTest", "1.0", "Example DB", 200000); function saveMe(id, text, timestamp, left, top, zIndex) { db.transaction( function (tx) { tx.executeSql( "INSERT INTO WebKitStickyNotes " + "(id, note, timestamp, left, top, zindex) " + "VALUES (?, ?, ?, ?, ?, ?)", [id, text, timestamp, left, top, zIndex]); } ); 44 Wednesday, October 7, 2009
  • 93. Database var db = window.openDatabase("NoteTest", "1.0", "Example DB", 200000); function saveMe(id, text, timestamp, left, top, zIndex) { db.transaction( function (tx) { tx.executeSql( "INSERT INTO WebKitStickyNotes " + "(id, note, timestamp, left, top, zindex) " + "VALUES (?, ?, ?, ?, ?, ?)", [id, text, timestamp, left, top, zIndex]); } ); } 44 Wednesday, October 7, 2009
  • 94. HTML 5 Support Chrome Firefox Safari Opera canvas/SVG video geolocation (iPhone) app cache (mobile) database (mobile) workers Wednesday, October 7, 2009
  • 95. canvas/SVG video geolocation app cache & web workers database Wednesday, October 7, 2009
  • 96. A More Powerful Web == More Powerful Apps Wednesday, October 7, 2009
  • 97. But More Power == More Responsibility I will not hose the browser with JavaScript I will not hose the browser with JavaScript I will not hose the browser with JavaScript I will not hose the browser with JavaScript I will not hose the browser with JavaScript I will not hose the browser with JavaScript Wednesday, October 7, 2009
  • 98. // web workers defines an API for running background scripts Wednesday, October 7, 2009
  • 99. • Bad Primes (FF 3.5) • Good Primes (FF 3.5) • Motion Tracker (FF) web workers demos Wednesday, October 7, 2009
  • 100. Web Workers 51 Wednesday, October 7, 2009
  • 101. Web Workers <script> 51 Wednesday, October 7, 2009
  • 102. Web Workers <script> var worker = new Worker('worker.js'); 51 Wednesday, October 7, 2009
  • 103. Web Workers <script> var worker = new Worker('worker.js'); worker.onmessage = function (event) { 51 Wednesday, October 7, 2009
  • 104. Web Workers <script> var worker = new Worker('worker.js'); worker.onmessage = function (event) { console.log('Results: ' + event.data); 51 Wednesday, October 7, 2009
  • 105. Web Workers <script> var worker = new Worker('worker.js'); worker.onmessage = function (event) { console.log('Results: ' + event.data); }; 51 Wednesday, October 7, 2009
  • 106. Web Workers <script> var worker = new Worker('worker.js'); worker.onmessage = function (event) { console.log('Results: ' + event.data); }; </script> 51 Wednesday, October 7, 2009
  • 107. worker.js function findPrimes() { // ... prime algorithm here postMessage(nextPrime); } findPrimes(); 52 Wednesday, October 7, 2009
  • 108. HTML5 Support Chrome Firefox Safari Opera canvas/SVG video geolocation (iPhone) app cache (mobile) database (mobile) workers (mobile) Wednesday, October 7, 2009
  • 109. Download Slides • http://codinginparadise.org/presentations/intro_html5.pdf 54 Wednesday, October 7, 2009
  • 110. Introduction to HTML 5 Brad Neuberg Developer Programs, Google Wednesday, October 7, 2009