html 5

Post on 13-Jan-2015

2.118 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

<HTML>5

Introduction to HTML 5

By Rohit Ghatol

<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

<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

<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

<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

<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

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

<HTML>5

SVG Event handling

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

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

};

It’s the same!

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

<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

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

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

<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

<HTML>5

Support

FireFox Safari FireFox Opera IE

Canvas/SVG Yes Yes Yes Yes SvgWeb and Explorer Canvas

<HTML>5

Video Support

Current Video Support

Install Plug-ins

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

<HTML>5

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

<script>

function playMovie(){

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

}

</script>

<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

<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

<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}

);

<HTML>5

Geo Programming Demo

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

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

<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

<HTML>5

App Cache and Database

• Lets see these one by one

<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

<HTML>5

App Cache

• Enable offline cache

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

<HTML>5

cache.manifest

CACHE MANIFEST# version 1

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

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

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

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

<HTML>5

Offline Application Detailed

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

ent-work/multipage/offline.html#offline

<HTML>5

Browser DatabasesOpening a database Connection

if (window.openDatabase) {

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

}

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

}); }); });}

<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

<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

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

}); });}

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

<HTML>5

Deleting Recordsfunction clearAllTask(){

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

loadTasks();}

<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

<HTML>5

Web Workers

• History!• Browsers are single threaded, except ajax

callbacks

<HTML>5

Web Workers

• JavaScript has become 100 times more fast

> 100x

<HTML>5

Web Workers

• ThenOne Tortoise

Single Threaded Browser

<HTML>5

Web Workers

• NowMany Rabbits

Multi Threaded Browser

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

<HTML>5

worker.js

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

}findPrimes();

<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!

<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!

<HTML>5

JavaScript Developers in India

Myth!

<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……………………….

<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!

<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

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

<HTML>5

Thank you!

top related