SlideShare uma empresa Scribd logo
1 de 45
HTML5:
o que mudou no javascript




Marcelo de Souza
msouza@conrad-caine.com
Sobre mim




Marcelo de Souza
Líder do time de Front-End
Conrad Caine

Fatec/Senac
IFSul (Cefet)


http://www.linkedin.com/in/marcelodesouzacc
Conrad Caine




•   1998, Munique, 2 pessoas
•   2005, Pelotas, 1 pessoa (+ 3)
•   2012, 115 pessoas
     o    Munique, Alemanha
     o    Pelotas, Brasil
     o    Buenos Aires, Argentina
•   Tecnologias
     o    PHP, .NET, Python, Ruby, Node.js HTML5, Flash, Mobile (iOS, Android) e Javascript
•   Criatividade Pragmática
HTML5
HTML




•   1993 - IETF (Internet Engineering Task Force) - HTML 2.0
•   1999 - W3C (World Wide Web Consortium) - HTML 4.1
•   2000 - XHTML 1.0
•   2001 - XHTML 1.1 (CSS)
•   2004 - XHTML 2 - não compatível
HTML5




•   2004 - WHATWG (Web Hypertext Application Technology Working Group)
•   Opera, Apple, Mozilla, Google
•   HTML5
     o   compatilidade
     o   utilidade
     o   interoperabilidade (APIs)
     o   acesso universal
     o   plugin free
HTML5 Javascript APIs
Javascript




"Enquanto HTML é usado para armazenar o conteúdo e a formatação de uma página web, e o CSS
    codifica o estilo de como o conteúdo formatado deve ser exibido graficamente, JavaScript é
    usado para criar efeitos ricos ou aplicações web ricas."


                                                    Mozilla Developer Network
API




Application Programming Interface
HTML5 Javascript APIs




•    Canvas
•    Audio e Video
•    Geolocation
•    Messaging
•    XMLHttpRequest 2
•    Web Socket
•    Web Worker
•    Web Storage
CANVAS API




•   Elemento HTML que pode ser manipulado por javascript através de uma API
•   criado pela Aple - direitos autorais
•   SVG (Adobe) e VML (Microsoft)
•   Explorer
•   Navegadores
     o    Firefox
     o    Safari
     o    Chrome
     o    Opera
     o    IE9
CANVAS API




<canvas id="test">
atualize seu navegador!
</canvas>
CANVAS API




var canv = document.getElementById("test");
if (canv.getContext) {

      var ctx = canv.getContext("2d");
      ctx.fillStyle = "rgb(200,0,0)";
      ctx.fillRect(10, 10, 55, 50);
}
CANVAS API




•   http://mrdoob.com/projects/chromeexperiments/ball_pool
•   http://www.rgraph.net/examples/bar-charts.html
•   http://www.benjoffe.com/code/demos/canvascape/textures
•   http://js-fireworks.appspot.com/
•   http://www.chromeexperiments.com/
AUDIO E VIDEO API




•   Plugin free
•   Audio Codecs
     o    AAC
     o    MPEG-3
     o    Ogg Vorbis (free)
•   Video Codecs
     o    H.264
     o    VP8
     o    Ogg Theora (free)
•   iPhone: acelerador de hardware para H.264
•   Google lança webm em 2010 (VP8 + Ogg Vorbis)
AUDIO E VIDEO API




 Nave mp we og
 gador S bm N
 Intern 4 N g
 et
 Firefo
 Explor N S S
 x 9
 er4.0
 Googl S  S S
 e
 Apple S N N
 Chro
 Safari
 me 6
 Opera N S S
 5
 10.6
AUDIO E VIDEO API




<video id="video1" poster="video.jpg"
  controls>
<source src="video.webm" />
<source src="video.ogv" />
<source src="video.mp4" />
<p>Atualize seu navegador!</p>
</video>
AUDIO E VIDEO API




<audio controls="controls">
<source src="som.ogg" />
<source src="som.mp3" />
<p>Atualize seu navegador!</p>
</audio>
AUDIO E VIDEO API




var vd = document.getElementById('video1');
vd.play();
vd.pause();
console.log(vd.duration);
AUDIO E VIDEO API




•   http://www.w3.org/2010/05/video/mediaevents.html
•   http://videojs.com/
•   http://www.youtube.com/html5
GEOLOCATION API




•   latitude e longitude
•   segurança: permissão do usuário
•   tablet, smartphone, notebook
•   uma das primeiras funções suportadas por todos os navegadores
     o     Firefox 3.5
     o     Chrome 5
     o     IE9
     o     Safari 5
     o     Opera 10.6
GEOLOCATION API




function upd(position) {
  // codigo
}
function err(error) {
  // codigo
}
if (navigator.geolocation) {
navigator.geolocation
.getCurrentPosition(upd, err);
}
GEOLOCATION API




•   http://html5demos.com/geo
•   http://maxheapsize.com/static/html5geolocationdemo.html
Cross Document Messaging




•   comunicação entre iFrames, tabs e windows em um navegador
•   permite diferentes sites comunicarem-se entre si através do navegador
•   segurança: origem da mensagem
•   Navegadores
     o   Firefox 3
     o   Chrome
     o   IE8
     o   Opera 9.6
     o   Safari 4
Cross Document Messaging




if (window.postMessage) {
  var h = document.body.clientHeight;
window.postMessage(h, 'exemplo.com');
}
Cross Document Messaging




function messageHandler(ev) {
  if (ev.origin == 'exemplo.com') {
    iframe.style.height = ev.data;
}
}
Cross Document Messaging




•   Facebook apps
•   API de videos do YouTube
HXMLHttpRequest Level 2




•   Versão melhorada do AJAX
•   Cross Origin (configurações no servidor)
•   Progress events
    o    loadstart, progress, abort, error, load, loaded
•   Navegadores
    o   Chrome
     o   Firefox 3.5
     o   Safari 4
WebSocket API




•   Full-Duplex: Conexão em tempo real com o servidor
•   redução da quantidade de bytes
•   redução da latência
•   aplicativos web
•   websocket servers
     o    Kaazing, Netty, mod_pywebsocket, node.js
•   Navegadores
     o    Chrome 4
     o    Firefox 4
     o    Safari 5
WebSocket API
WebSocket API




if (window.WebSocket) {
  ws = new WebSocket('ws://exemplo.com');
  ws.onopen = function() {
    ws.send('mensagem ao servidor');
}
ws.onmessage = function(ev) {
  console.log(ev.data);
}
ws.onclose = function(ev) {
  console.log('conexão fechada');
}
}
Web Workers API




•   Processamento Javascript em Background
•   Threads: multicore CPUs
•   Previne avisos: "Script não responde"
•   Não trava o navegador
Web Workers API




•   Não consegue acessar elementos na página pai
•   Usa postMessage como comunicação
•   Navegadores
     o   Firefox 3.5
     o   Chrome 3
     o   IE10
     o   Opera 10.6
     o   Safari 4
Web Workers API




// main.js
if (window.Worker) {
  w = new Worker('task.js');
  w.postMessage('start');
  w.onmessage = function(ev) {
    console.log(ev.data);
w.terminate();
}
}
Web Workers API




// task.js
importScripts('jQuery.js');
function start() {
  // codigo
}
self.onmessage = function(ev) {
  if (ev.data == 'start') {
    start();
    self.postMessage('feito!');
}
}
Web Workers API




•   http://ie.microsoft.com/testdrive/Graphics/WorkerFountains/D
•   http://ie.microsoft.com/testdrive/HTML5/WebWorkerTest262/D
•   http://www.facebooktv.co/labs/html5_demo_web_workers/
Web Storage API




•   Armazenamento de dados local
     o   Local Storage
     o   Session Storage
•   Cookie
     o   4KB
     o   enviado ao servidor
•   Navegadores
     o   Chrome 3
     o   Firefox 3
     o   IE8
     o   Opera 10
     o   Safari 4
Web Storage API




if (window.localStorage) {
localStorage.setItem('nome', 'Marcelo');
console.log(localStorage.getItem('nome'));

    localStorage.removeItem('nome');
    localStorage.clear();
}
// window.sessionStorage
Web Storage API




•   http://labs.zenorocha.com/html5/local-storage/
•   http://diveintohtml5.info/examples/localstorage-halma.html
O futuro do HTML5
2022




DATA PREVISTA PARA NO MÍNIMO DOIS NAVEGADORES IMPLEMENTAREM TODAS AS
FUNÇÕES
2014




DATA PREVISTA PARA A RECOMENDAÇÃO OFICIAL
Estatística de Navegadores




Fonte: http://www.w3schools.com/browsers/browsers_stats.asp
Internet Explorer




Fonte: http://www.w3schools.com/browsers/browsers_stats.asp
Obrigado!

Mais conteúdo relacionado

Mais procurados

APIs do Jeito Certo
APIs do Jeito CertoAPIs do Jeito Certo
APIs do Jeito CertoRavan Scafi
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVCMichael Douglas
 
Evitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel HomesteadEvitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel HomesteadDanilo Esser
 
Offline apps Using Ionic Framework and PouchDB
Offline apps  Using Ionic Framework and PouchDBOffline apps  Using Ionic Framework and PouchDB
Offline apps Using Ionic Framework and PouchDBAlvaro Viebrantz
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5Willian Molinari
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Html5 pt - Offline Apps
Html5 pt - Offline AppsHtml5 pt - Offline Apps
Html5 pt - Offline AppsByclosure
 
Php além do LAMP
Php além do LAMPPhp além do LAMP
Php além do LAMPThiago Paes
 
Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rustBruno Rocha
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )Michael Douglas
 
Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxThiago Paes
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsRafael Soares
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensRodrigo Matheus
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 
Dockerizando uma aplicação NodeJS
Dockerizando uma aplicação NodeJSDockerizando uma aplicação NodeJS
Dockerizando uma aplicação NodeJSLuís Bianchin
 

Mais procurados (20)

APIs do Jeito Certo
APIs do Jeito CertoAPIs do Jeito Certo
APIs do Jeito Certo
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVC
 
Evitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel HomesteadEvitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel Homestead
 
Debug de cabo a rabo
Debug de cabo a raboDebug de cabo a rabo
Debug de cabo a rabo
 
Offline apps Using Ionic Framework and PouchDB
Offline apps  Using Ionic Framework and PouchDBOffline apps  Using Ionic Framework and PouchDB
Offline apps Using Ionic Framework and PouchDB
 
Ionic Framework
Ionic FrameworkIonic Framework
Ionic Framework
 
Boas práticas de API Design
Boas práticas de API DesignBoas práticas de API Design
Boas práticas de API Design
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Html5 pt - Offline Apps
Html5 pt - Offline AppsHtml5 pt - Offline Apps
Html5 pt - Offline Apps
 
Php além do LAMP
Php além do LAMPPhp além do LAMP
Php além do LAMP
 
Quasar framework
Quasar frameworkQuasar framework
Quasar framework
 
Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rust
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )
 
Alta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com NginxAlta perfomance de aplicações PHP com Nginx
Alta perfomance de aplicações PHP com Nginx
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagens
 
I educar-manual-de-instalaao
I educar-manual-de-instalaaoI educar-manual-de-instalaao
I educar-manual-de-instalaao
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Dockerizando uma aplicação NodeJS
Dockerizando uma aplicação NodeJSDockerizando uma aplicação NodeJS
Dockerizando uma aplicação NodeJS
 

Destaque

Destaque (8)

Arquivos de Inicialização do Linux
Arquivos de Inicialização do LinuxArquivos de Inicialização do Linux
Arquivos de Inicialização do Linux
 
Estrutura de diretorios
Estrutura de diretoriosEstrutura de diretorios
Estrutura de diretorios
 
Personalizando o ambiente do usuário
Personalizando o ambiente do usuárioPersonalizando o ambiente do usuário
Personalizando o ambiente do usuário
 
Obtendo ajuda no Linux
Obtendo ajuda no LinuxObtendo ajuda no Linux
Obtendo ajuda no Linux
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
Introdução Linux
Introdução LinuxIntrodução Linux
Introdução Linux
 
Editor de texto VI
Editor de texto VIEditor de texto VI
Editor de texto VI
 
Sistemas de arquivos
Sistemas de arquivosSistemas de arquivos
Sistemas de arquivos
 

Semelhante a Html5

Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013javamanrj
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsNuno Paz
 
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...Rio Info
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaJoselito Nascimento
 
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebLeonardo Balter
 
Write once, run "everywhere"
Write once, run "everywhere"Write once, run "everywhere"
Write once, run "everywhere"Stefan Horochovec
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo maisakamud
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaDiego Cavalca
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Firefox - Developer's Best Friend // Fisl2008
Firefox - Developer's Best Friend // Fisl2008Firefox - Developer's Best Friend // Fisl2008
Firefox - Developer's Best Friend // Fisl2008Clauber Stipkovic
 
JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3
JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3
JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3Loiane Groner
 
MobileConf 2013: PhoneGap
MobileConf 2013: PhoneGapMobileConf 2013: PhoneGap
MobileConf 2013: PhoneGapLoiane Groner
 
Mobile Apps Cross-Platform
Mobile Apps Cross-PlatformMobile Apps Cross-Platform
Mobile Apps Cross-PlatformAdriel Café
 

Semelhante a Html5 (20)

Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.js
 
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
Rio Info 2010 - Oficina - Oficina Papel Devigner Novidades HTML5 - Ricardo Pa...
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
 
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
 
Python 08
Python 08Python 08
Python 08
 
Java Nuvem Appengine
Java Nuvem AppengineJava Nuvem Appengine
Java Nuvem Appengine
 
Write once, run "everywhere"
Write once, run "everywhere"Write once, run "everywhere"
Write once, run "everywhere"
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
Workshop - Ionic + firebase
Workshop - Ionic + firebaseWorkshop - Ionic + firebase
Workshop - Ionic + firebase
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec Cafelândia
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Firefox - Developer's Best Friend // Fisl2008
Firefox - Developer's Best Friend // Fisl2008Firefox - Developer's Best Friend // Fisl2008
Firefox - Developer's Best Friend // Fisl2008
 
JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3
JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3
JustJava 2013: Aplicações Desktop HTML5, CSS3, Javascript com Servlets 3
 
Palestra sobre o FirefoxOS
Palestra sobre o FirefoxOSPalestra sobre o FirefoxOS
Palestra sobre o FirefoxOS
 
MobileConf 2013: PhoneGap
MobileConf 2013: PhoneGapMobileConf 2013: PhoneGap
MobileConf 2013: PhoneGap
 
HTML5
HTML5HTML5
HTML5
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Mobile Apps Cross-Platform
Mobile Apps Cross-PlatformMobile Apps Cross-Platform
Mobile Apps Cross-Platform
 

Html5

  • 1. HTML5: o que mudou no javascript Marcelo de Souza msouza@conrad-caine.com
  • 2. Sobre mim Marcelo de Souza Líder do time de Front-End Conrad Caine Fatec/Senac IFSul (Cefet) http://www.linkedin.com/in/marcelodesouzacc
  • 3. Conrad Caine • 1998, Munique, 2 pessoas • 2005, Pelotas, 1 pessoa (+ 3) • 2012, 115 pessoas o Munique, Alemanha o Pelotas, Brasil o Buenos Aires, Argentina • Tecnologias o PHP, .NET, Python, Ruby, Node.js HTML5, Flash, Mobile (iOS, Android) e Javascript • Criatividade Pragmática
  • 5. HTML • 1993 - IETF (Internet Engineering Task Force) - HTML 2.0 • 1999 - W3C (World Wide Web Consortium) - HTML 4.1 • 2000 - XHTML 1.0 • 2001 - XHTML 1.1 (CSS) • 2004 - XHTML 2 - não compatível
  • 6. HTML5 • 2004 - WHATWG (Web Hypertext Application Technology Working Group) • Opera, Apple, Mozilla, Google • HTML5 o compatilidade o utilidade o interoperabilidade (APIs) o acesso universal o plugin free
  • 8. Javascript "Enquanto HTML é usado para armazenar o conteúdo e a formatação de uma página web, e o CSS codifica o estilo de como o conteúdo formatado deve ser exibido graficamente, JavaScript é usado para criar efeitos ricos ou aplicações web ricas." Mozilla Developer Network
  • 10. HTML5 Javascript APIs • Canvas • Audio e Video • Geolocation • Messaging • XMLHttpRequest 2 • Web Socket • Web Worker • Web Storage
  • 11. CANVAS API • Elemento HTML que pode ser manipulado por javascript através de uma API • criado pela Aple - direitos autorais • SVG (Adobe) e VML (Microsoft) • Explorer • Navegadores o Firefox o Safari o Chrome o Opera o IE9
  • 12. CANVAS API <canvas id="test"> atualize seu navegador! </canvas>
  • 13. CANVAS API var canv = document.getElementById("test"); if (canv.getContext) { var ctx = canv.getContext("2d"); ctx.fillStyle = "rgb(200,0,0)"; ctx.fillRect(10, 10, 55, 50); }
  • 14. CANVAS API • http://mrdoob.com/projects/chromeexperiments/ball_pool • http://www.rgraph.net/examples/bar-charts.html • http://www.benjoffe.com/code/demos/canvascape/textures • http://js-fireworks.appspot.com/ • http://www.chromeexperiments.com/
  • 15. AUDIO E VIDEO API • Plugin free • Audio Codecs o AAC o MPEG-3 o Ogg Vorbis (free) • Video Codecs o H.264 o VP8 o Ogg Theora (free) • iPhone: acelerador de hardware para H.264 • Google lança webm em 2010 (VP8 + Ogg Vorbis)
  • 16. AUDIO E VIDEO API Nave mp we og gador S bm N Intern 4 N g et Firefo Explor N S S x 9 er4.0 Googl S S S e Apple S N N Chro Safari me 6 Opera N S S 5 10.6
  • 17. AUDIO E VIDEO API <video id="video1" poster="video.jpg" controls> <source src="video.webm" /> <source src="video.ogv" /> <source src="video.mp4" /> <p>Atualize seu navegador!</p> </video>
  • 18. AUDIO E VIDEO API <audio controls="controls"> <source src="som.ogg" /> <source src="som.mp3" /> <p>Atualize seu navegador!</p> </audio>
  • 19. AUDIO E VIDEO API var vd = document.getElementById('video1'); vd.play(); vd.pause(); console.log(vd.duration);
  • 20. AUDIO E VIDEO API • http://www.w3.org/2010/05/video/mediaevents.html • http://videojs.com/ • http://www.youtube.com/html5
  • 21. GEOLOCATION API • latitude e longitude • segurança: permissão do usuário • tablet, smartphone, notebook • uma das primeiras funções suportadas por todos os navegadores o Firefox 3.5 o Chrome 5 o IE9 o Safari 5 o Opera 10.6
  • 22. GEOLOCATION API function upd(position) { // codigo } function err(error) { // codigo } if (navigator.geolocation) { navigator.geolocation .getCurrentPosition(upd, err); }
  • 23. GEOLOCATION API • http://html5demos.com/geo • http://maxheapsize.com/static/html5geolocationdemo.html
  • 24. Cross Document Messaging • comunicação entre iFrames, tabs e windows em um navegador • permite diferentes sites comunicarem-se entre si através do navegador • segurança: origem da mensagem • Navegadores o Firefox 3 o Chrome o IE8 o Opera 9.6 o Safari 4
  • 25. Cross Document Messaging if (window.postMessage) { var h = document.body.clientHeight; window.postMessage(h, 'exemplo.com'); }
  • 26. Cross Document Messaging function messageHandler(ev) { if (ev.origin == 'exemplo.com') { iframe.style.height = ev.data; } }
  • 27. Cross Document Messaging • Facebook apps • API de videos do YouTube
  • 28. HXMLHttpRequest Level 2 • Versão melhorada do AJAX • Cross Origin (configurações no servidor) • Progress events o loadstart, progress, abort, error, load, loaded • Navegadores o Chrome o Firefox 3.5 o Safari 4
  • 29. WebSocket API • Full-Duplex: Conexão em tempo real com o servidor • redução da quantidade de bytes • redução da latência • aplicativos web • websocket servers o Kaazing, Netty, mod_pywebsocket, node.js • Navegadores o Chrome 4 o Firefox 4 o Safari 5
  • 31. WebSocket API if (window.WebSocket) { ws = new WebSocket('ws://exemplo.com'); ws.onopen = function() { ws.send('mensagem ao servidor'); } ws.onmessage = function(ev) { console.log(ev.data); } ws.onclose = function(ev) { console.log('conexão fechada'); } }
  • 32. Web Workers API • Processamento Javascript em Background • Threads: multicore CPUs • Previne avisos: "Script não responde" • Não trava o navegador
  • 33. Web Workers API • Não consegue acessar elementos na página pai • Usa postMessage como comunicação • Navegadores o Firefox 3.5 o Chrome 3 o IE10 o Opera 10.6 o Safari 4
  • 34. Web Workers API // main.js if (window.Worker) { w = new Worker('task.js'); w.postMessage('start'); w.onmessage = function(ev) { console.log(ev.data); w.terminate(); } }
  • 35. Web Workers API // task.js importScripts('jQuery.js'); function start() { // codigo } self.onmessage = function(ev) { if (ev.data == 'start') { start(); self.postMessage('feito!'); } }
  • 36. Web Workers API • http://ie.microsoft.com/testdrive/Graphics/WorkerFountains/D • http://ie.microsoft.com/testdrive/HTML5/WebWorkerTest262/D • http://www.facebooktv.co/labs/html5_demo_web_workers/
  • 37. Web Storage API • Armazenamento de dados local o Local Storage o Session Storage • Cookie o 4KB o enviado ao servidor • Navegadores o Chrome 3 o Firefox 3 o IE8 o Opera 10 o Safari 4
  • 38. Web Storage API if (window.localStorage) { localStorage.setItem('nome', 'Marcelo'); console.log(localStorage.getItem('nome')); localStorage.removeItem('nome'); localStorage.clear(); } // window.sessionStorage
  • 39. Web Storage API • http://labs.zenorocha.com/html5/local-storage/ • http://diveintohtml5.info/examples/localstorage-halma.html
  • 40. O futuro do HTML5
  • 41. 2022 DATA PREVISTA PARA NO MÍNIMO DOIS NAVEGADORES IMPLEMENTAREM TODAS AS FUNÇÕES
  • 42. 2014 DATA PREVISTA PARA A RECOMENDAÇÃO OFICIAL
  • 43. Estatística de Navegadores Fonte: http://www.w3schools.com/browsers/browsers_stats.asp