Aplicații Firefox OS cu HTML5

60
Dr. Sabin Buraga Facultatea de Informatică, Universitatea “Alexandru Ioan Cuza” Iași www.purl.org/net/busaco + + =

description

De la suita de tehnologii HTML5 la maniera de dezvoltare de aplicații Web pentru sistemul de operare Firefox OS destinat dispozitivelor mobile.

Transcript of Aplicații Firefox OS cu HTML5

Page 1: Aplicații Firefox OS cu HTML5

Dr. Sabin Buraga Facultatea de Informatică, Universitatea “Alexandru Ioan Cuza” Iași

www.purl.org/net/busaco

+ + =

Page 2: Aplicații Firefox OS cu HTML5

+ + =

designer Web

Page 3: Aplicații Firefox OS cu HTML5

+ + =

dezvoltator Web

Page 4: Aplicații Firefox OS cu HTML5

+ + =

altcineva cool (?!)

Page 5: Aplicații Firefox OS cu HTML5

+ + =

Salut, eu sunt suita de tehnologii HTML5!

Page 6: Aplicații Firefox OS cu HTML5

+ + =

vocabular (set de elemente + atribute) folosit pentru marcarea paginilor Web

Page 7: Aplicații Firefox OS cu HTML5

+ + =

suită de API-uri facilitând procesarea documentelor la nivelul navigatorului Web – desktop, mobil,…

Page 8: Aplicații Firefox OS cu HTML5

+ + =

permite dezvoltarea standardizată de aplicații Web

Page 9: Aplicații Firefox OS cu HTML5

+ + =

recurge la tehnologii înrudite referitoare la prezentare via foi de stiluri în cascadă – CSS

model conceptual – DOM procesare la nivel de navigator Web – JavaScript

…și altele

Page 10: Aplicații Firefox OS cu HTML5

+ + =

.web-ui { tehnologie: CSS3; }

Cascading Style Sheets

Page 11: Aplicații Firefox OS cu HTML5

@font-face Web fonts calc() as CSS unit value 2.1 selectors Counters Feature Queries Filter Effects Generated content Gradients Grid Layout Hyphenation inline-block Masks min/max-width/height outline position:fixed Regions Repeating Gradients resize property Table display 3D Transforms Animation

Background-image options Border images Border-radius (rounded corners) Box-shadow Box-sizing Colors Media Queries Multiple backgrounds Multiple column layout object-fit/object-position Opacity Overflow-wrap selectors Text-overflow Text-shadow Transforms Transitions word-break Flexible Box Layout Module Font feature settings rem (root em) units

Page 12: Aplicații Firefox OS cu HTML5

http://caniuse.com/

Page 13: Aplicații Firefox OS cu HTML5

+ + =

acces & manipulare DOM

(Document Object Model)

Page 14: Aplicații Firefox OS cu HTML5

<html> <body> <p> Tehnologii Web </p> <div> <img src="web.png"/> </div> </body> </html>

HTML HtmlElement

HTML BodyElement

HTML Paragraph Element

Text

HTML DivElement

HTML ImageElement

document text (.html) reprezentare în memorie ca arbore de obiecte

Page 15: Aplicații Firefox OS cu HTML5

+ + =

procesare via API-uri

this.javascript

Page 16: Aplicații Firefox OS cu HTML5

+ + =

în curs de standardizare la Consorțiul Web statut candidate recommendation (decembrie 2012)

www.w3.org/TR/html5/

Page 17: Aplicații Firefox OS cu HTML5

diverse specificații HTML5 în lucru: dev.w3.org/html5/

Page 18: Aplicații Firefox OS cu HTML5

“HTML5 should not be considered as a whole. You should cherry-pick the technology

that suits the solution to your problem.” Remy Sharp

Page 19: Aplicații Firefox OS cu HTML5

+ + =

semantic markup

noi elemente de structurare a conținutului

Page 20: Aplicații Firefox OS cu HTML5

<!DOCTYPE html> <html> <head> <title>Titlu glorios al paginii sau aplicației Web</title> <link rel="stylesheet" type="text/css" href="stiluri.css" /> <meta charset="utf-8" /> </head> <body> <header> <h1>Titlu principal</h1> <p class="slogan">...</p> </header> <article> <nav class="menu"> <a href="...">Undeva</a> * <a href="...">Altundeva</a> </nav> <section> <p>ceva aparent interesant?!</p> <aside>informații adiționale</aside> </section> <section>...</section> </article> <footer> <h6>Ultima actualizare, autorul, termeni legali,...</h6> </footer> </body> </html>

detalii la http://html5doctor.com/

Page 21: Aplicații Firefox OS cu HTML5

+ + =

semantic markup

noi tipuri de interacțiune

via formulare Web search tel url email date number range

Page 22: Aplicații Firefox OS cu HTML5

+ + =

semantic markup

microdate schema.org

Page 23: Aplicații Firefox OS cu HTML5

+ + =

grafică 2D & 3D

<canvas> în contextul 2D

Page 24: Aplicații Firefox OS cu HTML5

www.html5canvastutorials.com

<canvas> + JavaScript =

Page 25: Aplicații Firefox OS cu HTML5

+ + =

grafică 2D & 3D

<canvas> în contextul 3D

WebGL

Page 26: Aplicații Firefox OS cu HTML5

instrumente pentru dezvoltatori: CopperLicht, CubicVR, PhiloGL, SceneJS, TDL (ThreeD Library), Three.js

Page 27: Aplicații Firefox OS cu HTML5

+ + =

grafică 2D & 3D

grafică vectorială SVG / TinySVG

Page 28: Aplicații Firefox OS cu HTML5

biblioteci Javascript: BonsaiJS, D3.js, Raphaël.js,…

<svg> ... <circle cx="75" cy="75" r="10" class="forma"/> </svg>

.forma { /* stiluri pentru construcțiile SVG */ fill: red; stroke: yellow; stroke-width: 3px; }

Page 29: Aplicații Firefox OS cu HTML5

+ + =

multimedia

<audio> <video>

API-uri de procesare a sunetului

Page 30: Aplicații Firefox OS cu HTML5

+ + =

Web Storage (localStorage & sessionStorage)

baze de date: IndexedDB caching via ApplicationCache

offline & storage

Page 31: Aplicații Firefox OS cu HTML5

+ + =

mesaje între documente XMLHttpRequest2

WebSocket evenimente de la server

WebRTC

connectivity & real-time

Page 32: Aplicații Firefox OS cu HTML5

+ + =

performanța

WebWorker RequestAnimationFrame

date direct în URL – BlobURL

Page 33: Aplicații Firefox OS cu HTML5

+ + =

drag & drop orientation geolocation

starea bateriei

device access

Page 34: Aplicații Firefox OS cu HTML5

+ + =

notificări acces la camera Web

acces la fișiere – FileAPI

device access

Page 35: Aplicații Firefox OS cu HTML5

Blob URLs Cross-document messaging Cross-Origin Resource Sharing Device Orientation events File API FileReader API Filesystem & FileWriter API Full Screen API Geolocation getUserMedia/Stream API Hashchange event IndexedDB

matchMedia Navigation Timing API PageVisibility requestAnimationFrame Server-sent DOM events Shared Web Workers Typed Arrays Web Audio API Web Notifications Web Sockets Web Storage Web Workers

HTML5 – cele mai importante API-uri JavaScript http://www.w3.org/standards/techs/js#w3c_all

Page 36: Aplicații Firefox OS cu HTML5

http://mobilehtml5.org/

Page 37: Aplicații Firefox OS cu HTML5

+ + =

Super!... Mai multe despre tehnologiile HTML5?

Page 38: Aplicații Firefox OS cu HTML5

www.webplatform.org

Page 39: Aplicații Firefox OS cu HTML5

http://diveintohtml5.org/

Page 40: Aplicații Firefox OS cu HTML5

developer.mozilla.org

Page 41: Aplicații Firefox OS cu HTML5

www.html5rocks.com

Page 42: Aplicații Firefox OS cu HTML5

http://html5please.com/

Page 43: Aplicații Firefox OS cu HTML5

http://webplatformtools.org/

Page 44: Aplicații Firefox OS cu HTML5

http://html5weekly.com/

Page 45: Aplicații Firefox OS cu HTML5

+ + =

aplicație Firefox OS

Page 46: Aplicații Firefox OS cu HTML5

+ + =

aplicație Firefox OS

construită cu HTML, CSS și JavaScript

Page 47: Aplicații Firefox OS cu HTML5

. │ favicon.ico │ index.html │ install.html │ manifest.webapp │ offline.appcache ├───css │ app.css │ install-button.css ├───img │ │ offline.png │ │ online.png │ │ pattern.png │ │ recommend.png │ └───icons └───js │ app.js │ init.js │ install-button.js └───lib

Page 48: Aplicații Firefox OS cu HTML5

. │ favicon.ico │ index.html │ install.html │ manifest.webapp │ offline.appcache ├───css │ app.css │ install-button.css ├───img │ │ offline.png │ │ online.png │ │ pattern.png │ │ recommend.png │ └───icons └───js │ app.js │ init.js │ install-button.js └───lib

document HTML5 structurare conținut +

interacțiune cu utilizatorul

Page 49: Aplicații Firefox OS cu HTML5

. │ favicon.ico │ index.html │ install.html │ manifest.webapp │ offline.appcache ├───css │ app.css │ install-button.css ├───img │ │ offline.png │ │ online.png │ │ pattern.png │ │ recommend.png │ └───icons └───js │ app.js │ init.js │ install-button.js └───lib

document HTML5 structurare conținut +

interacțiune cu utilizatorul

<!DOCTYPE html> <html> <head manifest="offline.appcache"> <meta charset="utf-8" /> <title>Aplicație Firefox OS</title> <meta name="description" content="..."/> <link rel="stylesheet" href="css/app.css"/> </head> <body> <!-- conținut oferit de aplicație --> <!-- indicator baterie --> <div id="indicator">...</div> <script type="text/javascript" data-main="js/init.js" src="js/lib/require.js"> </script> </body> </html>

Page 50: Aplicații Firefox OS cu HTML5

. │ favicon.ico │ index.html │ install.html │ manifest.webapp │ offline.appcache ├───css │ app.css │ install-button.css ├───img │ │ offline.png │ │ online.png │ │ pattern.png │ │ recommend.png │ └───icons └───js │ app.js │ init.js │ install-button.js └───lib

stiluri CSS, eventual imagini pentru redarea datelor

Page 51: Aplicații Firefox OS cu HTML5

. │ favicon.ico │ index.html │ install.html │ manifest.webapp │ offline.appcache ├───css │ app.css │ install-button.css ├───img │ │ offline.png │ │ online.png │ │ pattern.png │ │ recommend.png │ └───icons └───js │ app.js │ init.js │ install-button.js └───lib

stiluri CSS, eventual imagini pentru redarea datelor

html { background: url(../img/pattern.png); } /* responsive Web design */ @media only screen and (max-width : 500px) { #indicator { /* indicator baterie */ border: 2px solid #999; text-align: center; ... } }

Page 52: Aplicații Firefox OS cu HTML5

. │ favicon.ico │ index.html │ install.html │ manifest.webapp │ offline.appcache ├───css │ app.css │ install-button.css ├───img │ │ offline.png │ │ online.png │ │ pattern.png │ │ recommend.png │ └───icons └───js │ app.js │ init.js │ install-button.js └───lib

programe JavaScript recurg la API-uri HTML5

& API-uri specifice Firefox OS

Page 53: Aplicații Firefox OS cu HTML5

. │ favicon.ico │ index.html │ install.html │ manifest.webapp │ offline.appcache ├───css │ app.css │ install-button.css ├───img │ │ offline.png │ │ online.png │ │ pattern.png │ │ recommend.png │ └───icons └───js │ app.js │ init.js │ install-button.js └───lib

... // creăm via DOM un element <canvas> var canvas = document.createElement ('canvas'); var ctx = canvas.getContext ('2d'); canvas.width = game.width * blocksize; canvas.height = game.height * blocksize; canvas.id = 'game-canvas'; ... // desenăm numărul nivelului jocului ctx.fillStyle = 'rgb(0, 0, 0)'; ctx.font = '14pt SilkscreenNormal, sans-serif'; ctx.fillText ('Level: ' + (game.levelidx + 1), canvas.width - blocksize, canvas.height + 1); ...

fragment de cod JavaScript implementând un joc

Page 54: Aplicații Firefox OS cu HTML5

+ + =

sistemul Firefox OS

Page 55: Aplicații Firefox OS cu HTML5

+ + =

sistemul Firefox OS

Gaia – interfața cu utilizatorul

Page 56: Aplicații Firefox OS cu HTML5

+ + =

sistemul Firefox OS

Gecko redarea & procesarea datelor via standarde Web deschise

(HTML, CSS, JS etc.)

Page 57: Aplicații Firefox OS cu HTML5

+ + =

sistemul Firefox OS

Gonk biblioteci & nucleu Linux

Page 58: Aplicații Firefox OS cu HTML5

+ + =

resurse pentru creatorii de aplicații Firefox OS (documentații, exemplificări, referințe, ajutor,…)

oferite de Mozilla:

developer.mozilla.org/en/docs/Mozilla/Firefox_OS

Page 59: Aplicații Firefox OS cu HTML5

+ + =

resurse pentru creatorii de aplicații Firefox OS (documentații, exemplificări, referințe, ajutor,…)

puse la dispoziție de alții:

http://firefoxos.info/ http://buildingfirefoxos.com/

Page 60: Aplicații Firefox OS cu HTML5

Dr. Sabin Buraga Facultatea de Informatică, Universitatea “Alexandru Ioan Cuza” Iași

www.purl.org/net/busaco

+ + =

Mult succes!