• A new major milestone for web development • Focused on web pages web sites web applica/ons • Not “one thing” – bunch of features • Combined (ongoing) efforts of W3C, WHATWG and many others • Eliminates HTML and web framework fragmentaZon
No more buggy plugins that crash your browser, gobble resources and cause security issues. …because HTML5 makes the web as your pla^orm for crazily rich web applicaZon experiences. …because it’s already everywhere !!
and greatest, check http://caniuse.com • In code, use Modernizr.js if(Modernizr.geolocation) { navigator.geolocation.getCurrentPosition(); } else { alert(‘Geolocation not supported’); }
cache • LocalStorage API • SessionStorage API …because using cookies = blasphemy !!! Use cases: online shopping carts, client-‐side prefs, UI customizaZons etc. • Web SQL Databases • Browsers implemenZng in-‐memory DB Engines (SQLite etc.) • js allows you to write SQL queries !! • Save almost all kinds of typed data • Secured Data -‐ Datastore access restricted exclusively within same-‐origin Use cases: rich offline apps, everything under the sun • Applica/on cache (appcache) • Cache resources (html, js, css, images etc.) in browser -‐> offline access • Offline/Online Events navigator.onLine(); // true if you are online document.body.addEventListener("online", function () {...} document.body.addEventListener("offline", function () {...}
of the browser navigator.geolocation.getCurrentPosition(successCallBack(position)); function successCallBack(position) { generateMap(position.coords.latitude, position.coords.longitude); } Uses GPS, wi-‐fi access point info, MAC address (Skyhook Wireless) • Na/ve Drag and Drop • Filesystem API • sandboxed secZon of naZve filesystem window.webkitStorageInfo.requestQuota(); // request quota of ‘n’ bytes for this web app window.requestFileSystem(); // returns FileSystem object fs (handle) fs.root.getFile('log.txt', {create: true, exclusive: true}, success(fileEntry){}); fs.root.getDirectory('MyPictures', {create: true}, successCallBack(fileEntry){}); fileEntry.createWriter(); // returns FileWriter object fileWriter.write(); // writes to file dirReader = fs.root.createReader(); // returns a DirReader object dirReader.readEntries(); // read contents of the directory (files and subdirectories)
control + access input/output devices such as cameras etc. • getUserMedia(); • Orienta/on Physics • Accelerometer, etc. • window.addEventListener(‘deviceorientation’); • WebGL (Web Graphics Library) • Leveraging GPU (Graphics Processors/3D accelerator cards) in the client machine to render mind-‐blowing graphics
js threads !! • async != concurrency • Web workers can only access a subset of all js features (no DOM manipulaZon) • Use-‐cases: • Real-‐Zme text formalng • Number/JSON crunching • Background DB operaZons WebSockets • Full-‐duplex, bi-‐direcZonal communicaZon over the Web • Just data, no HTTP headers • Socket connecZons between web browser and server • Use-‐cases: • MulZplayer online games • Chat apps • RealZme social streams • Custom protocol interacZon No/fica/ons API
bitmap canvas which can be used for rendering graphs, game graphics, or other visual images on the fly. • use JavaScript to draw anything you want !! • <canvas /> element HTML5 Video • <video /> element • Standard way to embed video in a webpage • Browser support for major formats: H.264, MP4, AVI, OGG etc. HTML5 Audio • <audio /> element • Standard way to embed audio in a webpage • Browser support for major formats: H.264, MP3, ALAC, WAV etc.
SVG WebGL Web Audio API 3D Canvas Microdata <ruby/> WebRTC PostMessage HTML Selector API requestAnimaZonFrame CORS Cross-‐Origin Resource Sharing Lots of CSS3 stuff Web Intents XmlHtpRequest2 History API IndexedDB