html 5

56
<HTML> 5 Introduction to HTML 5 By Rohit Ghatol

Upload: rohit-ghatol

Post on 13-Jan-2015

2.118 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Html 5

<HTML>5

Introduction to HTML 5

By Rohit Ghatol

Page 2: Html 5

<HTML>5

About Me

• Name – Rohit Ghatol• Associations – Founder Pune GTUG and Co Founder Pune

Agile Group. Technical Speaker on various platforms like CSI, Indic Threads, etc…

• Experience – 8 years total, 3 years as a speaker & trainer• Companies – Synerzip, Google, Persistent, Sigma• Technologies – GWT, Ajax, Android, OpenSocial, GAE, Cloud

computing, J2EE, Google Ajax Apis etc..• Role – Architect and Senior Manager. Agile Practitioner and

Trainer in Synerzip.• Qualification – BE from PICT Pune

Page 3: Html 5

<HTML>5

We will discuss

• History! Why HTML 5?• What is HTML 5?• How to use HTML 5?• Examples• Programming in Java instead of Javascript

Page 4: Html 5

<HTML>5

Rough History of WebU

ser E

xper

ienc

e

Time line

1990 ……..2010

HTML

DOMCSS

Ajax

Canvas/SVG

Offline

VideoGeo

Workers

200820042000

Static HTML

Ajax Apps

RIA/Next Gen Apps

HTML 5

6Funeral

Flex/Silver light

Page 5: Html 5

<HTML>5

Why HTML 5?

• Flash, Silver light, JavaFx, and more….• Standards Vs Corporate Babies• Say in the Standards

• In short, Browsers + Standards = Better Results

Page 6: Html 5

<HTML>5

What is HTML 5?

Offline CacheX

DatabaseMain Thread

More Threads

N

S

EW

Geo Location

Category 1 Category 2 Category 3 Category 4

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

Series 1

Series 2

Series 3

Canvas & SVG

Video

Page 7: Html 5

<HTML>5

SVG Programming<!DOCTYPE html><html>

<body><svg width="200" height="200">

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

</svg></body>

</html>

Page 8: Html 5

<HTML>5

SVG Event handling

var svgRect = document.getElementById(“myRect”);

svgRect.onClick=function(){alert(“Clicked Rect”);

};

It’s the same!

Page 9: Html 5

<HTML>5

But this did not work

• Browsers only sees a HTML as SVG if its content type is “image/svg+xml"

• E.g in JSP one would need to add this to it<%@ page contentType="image/svg+xml" %>

Page 10: Html 5

<HTML>5

Does it work on IE?

• Yes, the same classic question again?• No, IE 8 does not have support for SVG!

• Options– Use SVGWeb, a javascript library that uses flash to

enable SVG support on IE browser

Page 12: Html 5

<HTML>5

Canvas Programming

<canvas id="myCanvas" width="150" height="150"></canvas> <script type="text/javascript">

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

</script>

Page 13: Html 5

<HTML>5

Canvas<!DOCTYPE html> <html>

<body> <canvas id="myCanvas" width="150" height="150"></canvas> <script type="text/javascript">

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

</script> </body>

</html>

Page 14: Html 5

<HTML>5

SVG Vs Canvas

SVG• Based on Tree of UI Objects• Interactively via mouse• Easy as Tag based• Medium Animation• Overall an High level API

Canvas• Based on Pixels• Difficult object selection• Based on JS APIs• Better Animation• Overall a Low Level API

Page 16: Html 5

<HTML>5

Support

FireFox Safari FireFox Opera IE

Canvas/SVG Yes Yes Yes Yes SvgWeb and Explorer Canvas

Page 17: Html 5

<HTML>5

Video Support

Current Video Support

Install Plug-ins

Page 18: Html 5

<HTML>5

Video Support

Current Video Support

<video src="http://www.w3schools.com/html5/movie.ogg" controls > Your browser does not support the video element.

</video>

Page 19: Html 5

<HTML>5

Programming Video Player<button id="play“ onClick="playMovie()"> Play </button>

<script>

function playMovie(){

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

}

</script>

Page 20: Html 5

<HTML>5

Support

FireFox Safari FireFox Opera IE

Canvas/SVG Yes Yes Yes Yes SvgWeb and Explorer Canvas

Video Yes Yes Yes Yes Not Yet

Page 21: Html 5

<HTML>5

Geo Location Aware

• Geo helps Local Business• Geo helps Social Networking• Geo helps Ads• Geo helps Photo/Video tagging• And more…..• All Future Netbooks and Phone probably will

have Geo Awareness

Page 22: Html 5

<HTML>5

Geo Programming

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

// Show position on Google Maps}

);

Page 23: Html 5

<HTML>5

Geo Programming Demo

Page 24: Html 5

<HTML>5

Geo Programming Demo<!DOCTYPE html><html><head>

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=abcdefg" type="text/javascript"></script>// See next page for script which goes here

</head><body onLoad="initialize()">

<h1>Geo Demo</h1><b>Your location is <div id="loc">Loading...</div></b><hr>

<div id="map_canvas" style="border:1px solid black;width: 500px; height: 300px"></div>

</body></html>

Page 25: Html 5

<HTML>5

Geo Programming Demo <script type="text/javascript">

function initialize() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map_canvas")); navigator.geolocation.getCurrentPosition(

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

document.getElementById("loc").innerHTML=lat+","+lon;map.setCenter(new GLatLng(lat, lon), 13);var point = new GLatLng(lat,lon);

map.addOverlay(new GMarker(point));}

); } }

</script>

Page 26: Html 5

<HTML>5

Support

FireFox Safari Safari Opera IE

Canvas/SVG Yes Yes Yes Yes SvgWeb and Explorer Canvas

Video Yes Yes Yes Yes Not Yet

Geo Yes IPhone Not Yet

Page 27: Html 5

<HTML>5

App Cache and Database

• Lets see these one by one

Page 28: Html 5

<HTML>5

App Cache

• Loading of web apps when browser is offline

• Storage of cache of the web app resources

• Tracking and Aware of cache changes

Page 29: Html 5

<HTML>5

App Cache

• Enable offline cache

<html manifest="todo.manifest"></html>

Page 30: Html 5

<HTML>5

cache.manifest

CACHE MANIFEST# version 1

CACHE:todo-list-3.htmlcss/todo-list.cssimages/todo.jpgscript/todo-list.js

Page 31: Html 5

<HTML>5

Offline/Online Event

<script type="text/javascript"> function online(event) {

var status = document.getElementById('statusDiv'); status.className = navigator.onLine ? 'online' : 'offline'; status.innerHTML = navigator.onLine ? 'online' : 'offline';

} addEvent(window, 'online', online); addEvent(window, 'offline', online);

</script>

Page 32: Html 5

<HTML>5

Cache Events• For example, you get the DOMApplicationCache object as follows:

cache = window.applicationCache;

• You can check the status of the application cache as follows:if (window.applicationCache.status == window.applicationCache.UPDATEREADY)...

• If the application cache is in the UPDATEREADY state, then you can update it by sending it the update() message as follows:window.applicationCache.update();

• If the update is successful, swap the old and new caches as follows:window.applicationCache.swapCache();

Page 33: Html 5

<HTML>5

Cache Operations• For example, you get the DOMApplicationCache object as follows:

cache = window.applicationCache;

• You can listen to cache updates register for the updateready event to be notified when the application cache is ready to be updated:cache.addEventListener('updateready', cacheUpdatereadyListener, false);

• Also, register for the error event to take some action if the update process failscache.addEventListener('error', cacheErrorListener, false);

Page 34: Html 5

<HTML>5

Offline Application Detailed

• For more details visit – • http://www.whatwg.org/specs/web-apps/curr

ent-work/multipage/offline.html#offline

Page 35: Html 5

<HTML>5

Browser DatabasesOpening a database Connection

if (window.openDatabase) {

db = openDatabase("NoteTest", "1.0", "HTML5 Database API example", 200000);

}

Page 36: Html 5

<HTML>5

Creating Tablesfunction loaded(){ db.transaction(function(tx) { tx.executeSql("SELECT COUNT(*) FROM Tasks", [], function(tx,result) { count=result.rows.item(0)["COUNT(*)"];

alert(“Total rows is “+count); }, function(tx, error) { tx.executeSql("CREATE TABLE Tasks (id REAL UNIQUE, task TEXT)", [],

function(result) { alert(“created tables”);

}); }); });}

Page 37: Html 5

<HTML>5

Creating Tables

Running everything as a transactionsdb.transaction(<<func(tx)>>,<<func(tx,error>>);

1. First function is used to execute an sql2. Second function is a call back when

transaction error occures

Page 38: Html 5

<HTML>5

Creating Tables

Running everything as a transactionstx.executeSql(<<sql>>,<<args>>,<<func(tx,result)

>>);1. First argument is an sql2. Second argument is paramters to sql3. Callback when sql query returns

1. tx – SQL transaction2. result – SQL Result Set

Page 39: Html 5

<HTML>5

Retrieving recordsfunction loadTasks(){ db.transaction(function(tx) { tx.executeSql("SELECT id, task FROM Tasks", [], function(tx, result) {

for (var i = 0; i < result.rows.length; ++i) { var row = result.rows.item(i); innerHTML=innerHTML+row.task+"<br>"; } todoListElem.innerHTML=innerHTML;

}, function(tx, error) { alert('Failed to retrieve tasks from database - ' + error.message);

}); });}

Page 40: Html 5

<HTML>5

Inserting new recordsfunction saveTask(){

var textBox=document.getElementById("task")var taskText=textBox.value;textBox.value="";db.transaction(function (tx)

{ tx.executeSql("INSERT INTO Tasks (id, task) VALUES (?, ?)", [count+

+,taskText ]); });

loadTasks();}

Page 41: Html 5

<HTML>5

Deleting Recordsfunction clearAllTask(){

db.transaction(function (tx) { tx.executeSql("Delete From Tasks"); });

loadTasks();}

Page 42: Html 5

<HTML>5

Support

FireFox Safari Safari Opera IE

Canvas/SVG Yes Yes Yes Yes SvgWeb and Explorer Canvas

Video Yes Yes Yes Yes Not Yet

Geo Yes IPhone Not Yet

Offline/Database

Yes Yes Not Yet

Page 43: Html 5

<HTML>5

Web Workers

• History!• Browsers are single threaded, except ajax

callbacks

Page 44: Html 5

<HTML>5

Web Workers

• JavaScript has become 100 times more fast

> 100x

Page 45: Html 5

<HTML>5

Web Workers

• ThenOne Tortoise

Single Threaded Browser

Page 46: Html 5

<HTML>5

Web Workers

• NowMany Rabbits

Multi Threaded Browser

Page 47: Html 5

<HTML>5

Web Workers

• Too many to be true, Pinch me I am dreaming

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

console.log('Results: ' + event.data);};

</script>

Page 48: Html 5

<HTML>5

worker.js

function findPrimes() {// ... prime algorithm herepostMessage(nextPrime);

}findPrimes();

Page 49: Html 5

<HTML>5

What does it mean?

Heavy Progressing

Slow Throughput, I may want to do this processing in a different thread

Year 2010, Dual/Quad Core Processors,Browsers can’t do multithreading

Priceless!

Page 50: Html 5

<HTML>5

What does it mean?

Worker sends messages

Worker sends messages

Browser can now use the actual CPU Power of the machine, to do wonders!

Page 51: Html 5

<HTML>5

JavaScript Developers in India

Myth!

Page 52: Html 5

<HTML>5

JavaScript Developers

• Needs to understand – JavaScript language in depth– Closures– Memory leaks– Browser Quirks– Cross Browser compatibility– CSS knowledge– DOM handling– List continues……………………….

Page 53: Html 5

<HTML>5

Two Options

JavaScript• Go ahead with hiring or

training JS developers• Try it for 6 months• Let your projects fail• Burn your fingers• Now try option two

Java based• Use something like GWT, no

use GWT• Use HTML 5 Libraries, or

create some your self• Let your developers code in

Java, be productive• Let GWT give you the most

optimized js ever possible• After 6 months Thank me!

Page 54: Html 5

<HTML>5

Why GWT?

• Day 3 your java developers are productive• No. of 3rd party support for html 5 and widgets

available (even of IE, can you believe it!)• You can quickly create wrapper on underlying

javascript apis for HTML 5 and abstract you developers from it

Page 55: Html 5

<HTML>5

Next month

• What topics you want?• We vote now and fix this!• Some Options– GWT– GAE (java)– Google Ajax API (including Maps)– Android– Wave (done twice actually)

Page 56: Html 5

<HTML>5

Thank you!