Applicazioni Web HTML5 vs Native. Riflessioni varie

Si sente sempre più spesso parlare di HTML5, vs flash, vs applicazioni native,.. ma di cosa si tratta in concreto?

Innanzitutto con HTML5 non si tratta di un prodotto finito ma di una specifica del consorzio W3C, quindi la sua bontà dipenderà da chi vorrà implementarlo. Inoltre molte delle tecnologie a cui si allude non fanno parte di questo standard e la loro implementazione non è allo stesso livello su tutti i browser (webkit, firefox, opera, ie). Potete farvi un'idea testando il vostro browser su html5test.com.

Html5 vs Flash

Flash è un plugin molto diffuso che viene utilizzato per lo più per video streaming e animazioni interattive (non che giochini). In questo senso Html5 svolge egregiamente lo streaming video tramite il tag <video> e un codec solitamente h264, theora o il nuovissimo WebM/vp8 reso libero da google.

Riguardo i "giochini" e le animazioni, html5 non ha ancora un'implementazione con prestazioni a livello di flash.

CSS3 e animazioni

Oltre a javascript, è possibile fare alcune semplici animazioni e transizioni direttamente dagli stili del sito. Da fare invidia alle librerie grafiche native.

Html5 vs Applicazioni native

I vantaggi di sviluppare applicazioni native rispetto quelle web stanno sempre più diminuendo. Vediamo alcune tecnologie in particolare che potrebbero farvi ricredere sulla necessità di sviluppare nativamente la vostra prossima applicazione.

Web Workers: ovvero processi in background

Tramite i Web Workers è possibile svolgere pesanti elaborazioni sul client in background senza quindi intaccare l'interfaccia grafica dell'applicazione.

WebGL: grafica e giochi 3D

Permette di visualizzare contenuti 3D con accelerazione hardware all'interno del browser e si manipola in stile opengl con javascript.
Come esempio Quake WebGL è davvero impressionante.

Webkit notification: Notifiche native

Grazie alla specifica è possibile notificare all'utente un certo cambiamento in stile Growl o Ubuntu. Indipendentemente dal fatto che l'utente rimanga sulla pagina.

Selettori di data e altri widget nativi

Tra i vari componenti della famiglia HTML5, c'è anche Webform che permette ai browser di mostrare un "selettore di data" o altri widget specifici su richiesta. Al momento solo il browser Opera implementa la specifica quindi probabilmente vedrete solo textbox normali.

Webstorage: Applicazioni web funzionanti offline

Un limite delle applicazioni web era appunto quello di necessitare di una connessione per funzionare, con webstorage le applicazioni web possono funzionare anche offline.
In particolare localStorage e sessionStorage permettono di salvare delle informazioni come se si trattasse di un database, nel primo per un tempo indeterminato mentre nel secondo per tutta la durata della sessione.

Device API: accesso all'hardware

Il browser di Android 3.0 Gingerbread (Preview @9:50) già implementa questa API per quanto riguarda l'accesso delle web app alla fotocamera, agli accelerometri e alla bussola. Le altre funzionalità che rientreranno in questa specifica saranno: Calendario, Attività, Contatti, Messaggistica, Eventi di sistema (Livello batteria, Stato rete), Filesystem (accesso ai file locali) e molto altro.

Esempi concreti

iScroll, ovvero un'interfaccia touch in javascript che funziona su Android, iPhone e altri browser in particolare webkit.
Pixlr.com/editor/ un image editor web (ma fatto in Flash)
Mugtug.com/sketchpad un image editor fatto in HTML5

Happy Web hacking :P

Altri spunti qui e qui

corso javascript