HTML5 - I HTML5 è una specifica di HTML che ha introdotto nel linguaggio funzionalità che vanno ben oltre il markup tradizionale (che, sostanzialmente, definiva "solo" la struttura dei contenuti) [www.html.it/guide/guida-html5/] Un esempio di tali funzionalità è il supporto alla multimedialità: – Con HTML5 è possibile includere (e quindi visualizzare) in una pagina Web elementi audio e video senza l'ausilio di plugin esterni (QuickTime, Flash, ...), grazie ai tag video e audio – Inoltre, ogni elemento multimediale è rappresentato come "oggetto" manipolabile da Javascript (HTMLVideoElement, HTMLVideoElement, ...), grazie agli API definiti nel (nuovo) DOM a.a. 2015/16 Tecnologie Web 1 HTML5 - II • Le specifiche di HTML5 sono uno standard W3C (www.w3.org/TR/html5) • Molte funzionalità sono supportate dalla maggioranza delle (per es Explorer p 9 e Firefox 5)) e ultime versioni dei browser (p per questo utilizzate su portali come youtube... Attenzione, però! esistono parti delle specifiche che sono (ad oggi) supportate in modo superficiale e disomogeneo... Tabella di compatibilità per i vari browser: www.html.it/guide/esempi/html5/tabella_supporto/tabella.html • Gli aspetti innovativi di HTML5 ruotano principalmente attorno a due temi: 1. un nuovo approccio "semantico" nella creazione delle pagine Web 2. un ricco insieme di API (per manipolare gli oggetti del DOM, anch'esso arricchito) a.a. 2015/16 Tecnologie Web 2 1 HTML5 - III STORIA DI HTML5 (da www.html.it/guide/guida-html5/) Venerdì 4 giugno 2004, in una notte buia e tempestosa, Ian Hickson annuncia la creazione del gruppo di ricerca WHAT, acronimo di Web Hypertext Application Technology [...] L’obiettivo del gruppo è quello di elaborare specifiche per aiutare lo sviluppo di un web più orientato alle applicazioni che ai documenti; tra i sottoscrittori di questa iniziativa si annoverano aziende del calibro di Apple, Mozilla e Opera. Questo piccolo scisma dal W3C è determinato dal disaccordo in merito alla rotta decisa dal consorzio durante un famoso convegno del 2004 dove, per un pugno di voti, prevalse la linea orientata ai documenti di XHTML2. [...] Il 27 ottobre 2006 in un post sul proprio blog [...]Tim Berners-Lee annuncia la volontà di creare un nuovo gruppo di ricerca che strizzi l’occhio al WHAT e ammette alcuni sbagli commessi seguendo la filosofia XHTML2 [...] Dovranno passare quasi altri due anni di competizione tra le due specifiche, questa volta entrambe interne al W3C, prima che nel luglio del 2009 lo stesso Tim sancisca di non voler riconfermare il gruppo XHTML2 per l’anno successivo preferendo di fatto la direzione intrapresa dall’HTML5. [...] Nonostante il continuo e solerte lavoro e il grande intervallo di tempo speso nella stesura di questo documento, i passi residui necessari ad eleggere questa tecnologia al rango di ‘W3C Recommandation’, relegandola così tra gli standard riconosciuti, sono ancora molti, al punto che si prevede di raggiungere l’agognato traguardo soltanto attorno al 2020. a.a. 2015/16 Tecnologie Web 3 HTML5 - IV all'interno di HTML5 convivono l'eredità dell'XHTML2 e quella del WHAT risultato di questo mix: 1. evoluzione del modello di markup, in direzione "semantica" specifiche per nuovi microformati e per l'i l'integrazione i tra HTML5 e RDFa RDF 2. estensione delle API JavaScript, per supportare nuove funzionalità, per es: • • • • • • salvare informazioni sul device dell’utente accedere all’applicazione anche in assenza di una connessione eseguire operazioni in background pilotare flussi multimediali (video, audio) editare contenuti anche complessi, come documenti di testo usare metafore di interazione tipiche di applicazioni desktop, come il drag and drop • accedere e manipolare informazioni generate in tempo reale dall'utente attraverso sensori multimediali quali microfono e webcam a.a. 2015/16 Tecnologie Web 4 2 HTML5: nuovo markup - I 1. Evoluzione del markup e "semantica" • All'inizio erano tabelle... poi arrivarono i <div> (vi ricordate... il Box Model di CSS2?!? un modello pensato per separare in modo chiaro struttura e contenuto) • Debolezze dei <div>: i nomi dei div erano arbitrari mancava omogeneità + browser (e motori di ricerca) non "capivano" questi nomi... problema principale dell'HTML4: incapacità di descrivere il significato delle informazioni contenute in una pagina Web in un formato "comprensibile" da altri software a.a. 2015/16 Tecnologie Web HTML5: nuovo markup - II 5 slide saltata nascono diversi microformati, per es hRecipe (microformats.org/wiki/hrecipe) per le ricette: <span class="hrecipe"> fn=titolo titolo <span class="fn">Tisana class= fn >Tisana alla liquirizia</span> fn <span class="ingredient">2 cucchiai di zucchero</span> <span class="ingredient">20g radice di liquirizia</span> <span class="yield">2</span> yield=per quante persone <span class="instructions"> Scaldare un pentolino con 200cl d'acqua fino a 95°C; versare la radice di liquirizia; lasciar macerare per 7 minuti; zuccherare e servire. </span> <span class="duration">90 min</span> </span> HTML5 nasce per far fronte a queste problematiche... a.a. 2015/16 Tecnologie Web 6 3 HTML5: nuovo markup - III Quali innovazioni introduce HTML5 (relativamente al markup) rispetto alle versioni precedenti? • Sancisce la definitiva fine di una serie di elementi e attributi[*] ((che mantengono g validità formale solo per p preservare p la retrocompatibilità, ma sono espressamente vietati nella creazione di nuovi documenti); per es gli attributi: align, valign, background, bgcolor, cellpadding, border, cellspacing Documentazione completa: www.w3.org/TR/html5-diff/#absent-attributes [*] TAG: <elem attrib1="val1" attrib2="val2" ...> • IIntroduce d d i nuovii tag "semantici" dei " i i" (con ( nomii "significativi" " i ifi i i" rispetto al contenuto); per es: <header> Titolo </header> <nav> Voci di menu </nav> <article> Post </article> <article> Altro Post </article> a.a. 2015/16 Tecnologie Web 7 HTML5: nuovo markup - IV Principali nuovi tag "semantici": Header: per raggruppare elementi introduttivi (es. titoli o barre di navigazione) <header> <hgroup> <h1>Questo è un titolo</h1> <h2>Questo è un sotto-titolo</h2> </hgroup> <nav>[<a...>link1</a> <a...>link2</a> <a...>link3</a>]</nav> </header> Hgroup: per raggruppare titoli e sottotitoli <hgroup> <h1>Questo è un titolo</h1> <h2>Questo è un sotto-titolo</h2> </hgroup> Nav: per raggruppare gli elementi di navigazione (link, menu) <nav>[<a...>link1</a> <a...>link2</a> <a...>link3</a>]</nav> a.a. 2015/16 Tecnologie Web 8 4 HTML5: nuovo markup - V Article: per definire sezioni di contenuto autonome <article> <header> <h1>Titolo articolo</h1> <time pubdate datetime="2011-10-09T14:28-08:00"></time> </header> <p>Contenuto dell'articolo</p> <footer><p>Informazioni sull'autore</p></footer> </article> Section: per suddividere la pagina in sezioni (generiche) <article> <section> <h1>Titolo 1</h1> <p>Primo testo</p> </section> / <section> <h1>Titolo 2</h1> <p>Secondo testo</p> </section> </article> a.a. 2015/16 Tecnologie Web 9 HTML5: nuovo markup - VI Aside: per definire e raggruppare informazioni correlate ai contenuti principali (correlate al contenuto dell'elemento padre che la contiene) <aside> <h1>Approfondimenti</h1> <nav> <h2>Link interessanti:</h2> <ul> <li>Informazione correlata al contenuto</li> <li>Informazione correlata al contenuto</li> <li>Informazione correlata al contenuto</li> </ul> </nav> <section> [immagini pubblicitarie] <section> </aside> Footer: per inserire informazioni sulla sezione che lo contiene <footer> <small>©2011 Autore contenuto. Design by ...</sl> </footer> a.a. 2015/16 Tecnologie Web 10 5 HTML5: nuovo markup - VII Time (e gli attributi pubdate e datetime): per definire date e orari; in particolare: time rappresenta il tempo su un orologio di 24 ore, o una data precisa nel calendario Gregoriano (accompagnata opzionalmente con un orario e una differen a di fuso differenza f so orario) <p>La riunione si terrà alle <time>15:00</time></p> l'attributo pubdate è di tipo booleano (true/false); la sua presenza indica che la data presente nel tag <time> è anche la data nella quale è stato scritto l'<article> padre più vicino l'attributo datetime serve a specificare in modo più dettagliato la data (ANNO-MESE-GIORNO-ORE:MINUTI:SECONDI.MILLISECONDI-FUSO ORARIO) <time pubdate datetime="2011-01-20">20 Gennaio</time> a.a. 2015/16 Tecnologie Web 11 HTML5: nuovo markup - VIII Mark: per evidenziare (sequenze di) parole importanti nella pagina; per es. per mostrare una pagina risultante da una query in un motore di ricerca, in cui sono evidenziate le parole ricercate <p>Prima erano necessari <mark>plug in</mark> di terze parti per mostrare contenuti multimediali; con HTML5 i <mark>plug p g in</mark> non servono più...</p> Meter: per definire misure (scalari); possiede i seguenti attributi: min, max, value, low, high, optimum <meter value="6" max="8"> 6 blocchi utilizzati (su un totale di 8) </meter> Progress: rappresenta lo stato di completamento di un compito; esempio: i www.html.it/guide/esempi/html5/esempi/lezione_progress/ progress.html a.a. 2015/16 Tecnologie Web 12 6 HTML5: nuovo markup - IX • Definisce un nuovo attributo globale, contenteditable, che impostato a true rende qualsiasi elemento modificabile da browser (per offrire uno strumento di editing testuale oltre le aree di testo) NOTA: Ma cosa significa "modificabile da browser"? Che riscontro visivo dovrebbe avere l'utente? Come dovrebbe comportarsi il markup in seguito alle modifiche dell'utente? Su questi aspetti le specifiche non sono tanto chiare... dicono solo che il risultato delle modifiche deve essere conforme all'HTML5: questa libertà ha prodotto comportamenti diversi nei browser; per es alcuni traducono il tasto invio con <br> ((interruzione di linea), ), altri con <p> p ((nuovo p paragrafo)... g ) • Parallelamente mette a disposizione un insieme di API per agire sulla zona modificabile; per es è possibile definire un pulsante per attivare/disattivare il grassetto sulla selezione corrente utilizzando la funzione document.execCommand('bold') a.a. 2015/16 Tecnologie Web 13 HTML5: nuovo markup - X • Media query: consentono di selezionare il corretto CSS per il device utilizzato; per es: <link rel="stylesheet" href="monitor.css" media="screen"> <link rel="stylesheet" rel= stylesheet href= href="printer printer.css css" media= media="print"> print > <link rel="stylesheet" href="printer.css" media="print and (min-resolution: 1000dpi)"> stampante con almeno 1000dpi <link rel="stylesheet" href="phone_landscape.css" media="screen and (max-device-width: 480px) and (orientation: landscape)"> <link rel="stylesheet" href="phone_portrait.css" media="screen and (max-device-width: 480px) and (orientation: portrait)"> <link rel="stylesheet" href="progressive.css" media="tv and (scan: progressive)"> TV con scan dell'immagine progressiva <link rel="stylesheet" href="mono.css" media="screen and (monochrome)"> device monocromatici (Kindle, etc..) a.a. 2015/16 Tecnologie Web 14 7 HTML5: nuovo markup - XI FORM in HTML5 • Uno degli usi principali di Javascript è quello di interagire con i campi dei form, per esempio per controllarne il contenuto t t ("validazione (" lid i dei d i form") f ") VEDI: sol_es_2.html a.a. 2015/16 Tecnologie Web 15 HTML5: nuovo markup - XII In Javascript: (2) se il campo da controllare è vuoto (value=""), mostra una pop-up window (alert) e restituisci il valore true (vero) <HEAD> <SCRIPT language="JavaScript"> function e_vuoto(campo) { if (window (window.document.getElementById(campo).value=="") document getElementById(campo) value=="") { alert(campo + " non puo' essere vuoto!"); return true; } else { return false; } } </SCRIPT> (1) quando l'utente clicca sul pulsante 'OK' (onSubmit), </HEAD> controlla il valore della funzione e_vuoto(...); se tale valore <BODY> è true ((vero), ) blocca l'invio del modulo (return false) <FORM NAME="modulo" onSubmit="if (e_vuoto('email')) return false;" ACTION="registra.php"> email: <INPUT TYPE="text" ID="email"> <INPUT TYPE="Submit" VALUE="OK"> </FORM> </BODY> a.a. 2015/16 Tecnologie Web 16 8 HTML5: nuovo markup - XIII Con HTML5: • come per gli elementi multimediali (video e audio), HTML5 introduce dei tag per realizzare funzioni di controllo del contenuto dei campi p dei form tramite markup p • Nuovi tipi che effettuano automaticamente (alcun)i controlli: <input type="text" name="nickname"> – type = email per l'inserimento di indirizzi e-mail; se inserisco qualcosa che non ha la "forma" di un'email, me lo segnala <input type type="email" email name name="nickname"> nickname > – type = tel per l'inserimento di numeri di telefono a.a. 2015/16 Tecnologie Web 17 HTML5: nuovo markup - XIV – type = url per l'inserimento di URL (indirizzi Web); se inserisco qualcosa che non ha la "forma" di un'URL, me lo segnala – type = date (time) per l'inserimento di date (e orari); mi mette automaticamente a disposizione un calendario – type = number per l'inserimento di valori numerici a.a. 2015/16 Tecnologie Web 18 9 HTML5: nuovo markup - XV – type = range per l'inserimento di un numero attraverso uno slider – type = color per la selezione di colori; mi mette automaticamente a disposizione una palette di colori – type = search per l'inserimento di query di ricerca (in realtà, nella maggioranza dei browser browser, equivale ad un campo di testo semplice) NB non tutti i browser supportano tutti questi tipi!!! Provate con Google Chrome... (e NON usate Explorer!) a.a. 2015/16 Tecnologie Web 19 HTML5: nuovo markup - XVI • Nuovi attributi, per es: – required: attributo booleano (cioè che può assumere solo i valori true (vero) e false (falso)) che serve a rendere obbligatoria la compilazione co p a o e dell'elemento de e e e to a cui cu è applicato; app cato; il controllo co t o o viene ve e fatto automaticamente al "submit" (invio) del form – placeholder: testo che compare in un campo e che scompare quando l'utente inizia a scrivere Messaggio <textarea name="msg" placeholder="Scrivi qui il tuo messaggio" required> q </textarea> NB per gli attributi boleani vale la seguente equivalenza: attr=true attr (es: required=true required) a.a. 2015/16 Tecnologie Web 20 10 HTML5: nuovo markup - XVII – min e max: indicano il valore minimo e massimo consentito; si applicano alle date (type=date, type=time, ...) e ai numeri (type=number, type=range) Età: <input p type="number" yp name="age" g min="18" max="100"> il menu che mi compare automaticamente (type=number) parte da 18 e arriva fino a 100 – autocomplete: spesso i browser forniscono suggerimenti per riempire i campi; questo a volte è comodo e a volte fastidioso... con l'attributo autocomplete possiamo attivare/disattivare questo p comportamento NB non tutti i browser supportano tutti questi attributi... verificate provando o cercando online (per es. sui forum) a.a. 2015/16 Tecnologie Web 21 HTML5: nuove API - I 2. Estensione delle API (Javascript) E' possibile suddividere questi strumenti in due categorie: – API per la multimedialità – API per costruire applicazioni Web "ricche" ricche , cioè che offrono all'utente un'esperienza interattiva simile a quella offerta da programmi desktop/stand alone Ci focalizzeremo sul secondo aspetto, vedendo qualche esempio Esempi di funzionalità offerte da HTML5: – supporto al funzionamento offline di app Web – memorizzazione di informazioni sul browser – supporto al drag&drop – utilizzo di informazioni georeferenziate E inoltre... – comunicazione bidirezionale tra client e server – esecuzione asincrona e parallela di script Javascript a.a. 2015/16 Tecnologie Web 22 11 HTML5: nuove API - II Offline API • consentono di creare applicazioni Web funzionanti anche offline • con queste t API è infatti i f tti possibile ibil specificare ifi in i un apposito it file, .manifest (es: C:/Programmi/Mozilla_Firefox/browser/ chrome.manifest), un elenco di pagine Web, immagini, fogli di stile CSS, ecc. dei quali vogliamo che il browser conservi una copia locale • questi oggetti, dopo la prima sessione di navigazione online, resteranno accessibili anche senza connessione di rete a.a. 2015/16 Tecnologie Web 23 HTML5: nuove API - III Indexed Database API • consentono di accedere a database locali, gestiti dal browser • con queste API è possibile eseguire operazioni di inserimento d ti modifica, dati, difi eliminazione li i i e ricerca i • ogni database può contenere un numero arbitrario di Object Store ("contenitori di oggetti") • gli Object Store sono liste associative (ordinate), dove ogni coppia chiave-valore rappresenta un oggetto • es: database libreria contiene 2 Object j Store: LibriInPrestito,, LibriPrestati chiavi libro a_chi Un covo di vipere Paola L'uomo inquieto a.a. 2015/16 Steve libro da_chi Nido vacio Diego Salam, maman mamma valori Tecnologie Web 24 12 HTML5: nuove API - IV API per il drag&drop • un esempio delle capacità del supporto al drag&drop offerto da HTML5 è visibile in GMail: per allegare un file ad un'email (cioè p di un file)) è ppossibile trascinare il file sulla pagina p g fare l'upload per la composizione del messaggio a.a. 2015/16 Tecnologie Web 25 HTML5: nuove API - V Geolocation API • non appartengono ad HTML5 in senso stretto, ma fanno parte di quell'insieme di librerie che gravitano attorno alle specifiche [dev.w3.org/geo/api/spec-source.html dev w3 org/geo/api/spec source html] • servono per definire una struttura-dati atta a contenere dati geospaziali e delle funzioni di accesso a tali dati • se invocate da un dispositivo mobile (di ultima generazione) utilizzano le coordinate provenienti dal GPS; se invocate da un PC (es: portatile) utilizzano posizionamento legato all'indirizzo IP dell'host • NB: per proteggere la privacy dell'utente è vietato utilizzare tali info senza autorizzazione esplicita a.a. 2015/16 Tecnologie Web 26 13 HTML5: nuove API - VI • le funzioni principali messe a disposizione da queste API sono: – getCurrentPosition: restituisce la posizione corrente – watchPosition: si attiva automaticamente ogni volta che la posizione cambia (es se l'utente sta passeggiando) • se l'operazione di recupero della posizione dell'utente (coordinate) ha successo, viene eseguita una funzione (definita dal programmatore) che ha come input (dato in ingresso) la posizione, corredata di data e ora di recupero (es: tale funzione potrebbe, data la posizione dell'utente, suggerirgli i sushi bar più iù vicini) i i i) a.a. 2015/16 Tecnologie Web 27 Suggerimenti bibliografici - I (oltre ai link segnalati nelle slide...) • Guida HTML5 www.html.it/guide/guida-html5/ a.a. 2015/16 Tecnologie Web 28 14 Dispositivi mobili e mobile apps - I Cloud Computing SaaS abilita Ubiquitous Computing servizi e dati nella nuvola accessibili in modalità ubiquitous (anywhere and anytime) NB L'accesso da device mobile ha caratteristiche diverse rispetto all'accesso da PC (e l'accesso da smartphone non è identico ) all'accesso da tablet)... E' diverso soprattutto il contesto (sono quindi diverse le problematiche di interazione – HCI) a.a. 2015/16 Tecnologie Web 29 Dispositivi mobili e mobile apps - II • I dispositivi mobili ad oggi più diffusi sono gli smartphone e i tablet • Smartphone e tablet fanno uso di sistemi operativi diversi: Android, Apple iOS, Microsoft Windows Phone, BlackBerry OS, Symbian, ecc. le applicazioni mobili (app) vengono sviluppate appositamente per ogni sistema • Su smartphone e tablet è tipicamente possibile installare nuove app, accanto a quelle "di sistema" • L'interazione L interazione con smartphone e tablet avviene tipicamente attraverso schermi touch a.a. 2015/16 Tecnologie Web 30 15 Sistemi Operativi mobili Fonte: IDC (International Data Corporation: www.idc.com) Worldwide Mobile Phone Tracker, 14/8/2014 [www.idc.com/getdoc.jsp?containerId=prUS25037214] a.a. 2015/16 Tecnologie Web 31 Sistemi Operativi mobili: Android - I • Android = sistema operativo per dispositivi mobili [1+2+3] + piattaforma per lo sviluppo di applicazioni mobili [4] (SDK: Software Development Kit che include strumenti di sviluppo, p documentazione)) librerie, un emulatore del dispositivo, prodotto da Google (in collaborazione con l'Open Handset Alliance: www.openhandsetalliance.com) • è un software open source • ha un'architettura a layer (strati) che comprende: 1. Sistema Operativo vero e proprio – Linux Kernel 2. librerie ((C/C++)) per p le funzionalità core 3. Dalvik Virtual Machine (interprete del bytecode delle app) 4. librerie (Java) per realizzare applicazioni mobili Nota: in Android tutte le applicazioni sono "uguali": le applicazioni native e quelle sviluppate da terze parti sono scritte con le stesse API ed eseguite allo stesso modo; è possibile rimuovere o sostituire qualsiasi applicazione nativa a.a. 2015/16 Tecnologie Web 32 16 Sistemi Operativi mobili: Android - II Architettura di Android (da: Carli 2010; www.android.com) [4] [3] [2] [1] a.a. 2015/16 Tecnologie Web 33 Altri Sistemi Operativi mobili - I • iOS: versione mobile del sistema operativo desktop Mac OS X della Apple [www.apple.com/ios] • Windows Phone: sistema operativo mobile per smartphone sviluppato dalla Microsoft [www.windowsphone.com] • BlackBerry: sistema operativo mobile per dispositivi della BlackBerry Limited (ex Research In Motion RIM Limited [global.blackberry.com] a.a. 2015/16 Tecnologie Web 34 17 Applicazioni: tipologie - I Principali tipologie di applicazioni mobili: • native • web-based • ibride Come scegliere? "Sono molti i fattori che possono far propendere un’azienda per lo sviluppo dell’una o dell’altra, tra questi: le capacità e le conoscenze del team di sviluppo, l’accesso alle funzionalità del dispositivo, l’importanza della sicurezza, la personalizzazione dell’applicazione rispetto al look and feel della piattaforma, la possibilità di non richiedere accesso alla rete pper poter p p essere eseguita, l’interoperabilità su più piattaforme differenti, le performance e le risorse richieste in fase d’esecuzione ed il tipo di applicazione da sviluppare (gioco, produttività, finanza, sport, salute, moda, cibo, ecc.)" [Tesi Spadaccia – vedi bibliografia finale] a.a. 2015/16 Tecnologie Web 35 Applicazioni: tipologie - II Esempio di app (Unito su Facebook) – gen 2014 nativa (a sinistra) e web-based (a destra) [Fonte: Tesi Spadaccia – vedi bibliografia finale] a.a. 2015/16 Tecnologie Web 36 18 Applicazioni native - I Applicazioni native • sono sviluppate con strumenti e linguaggi definiti dalla specifica piattaforma (es: Java, Objective C, C#, C++, ecc.) • vengono g scaricate dall'app pp store di riferimento ed installate sul dispositivo • Vantaggi principali: – fedeltà al look&feel della piattaforma e, generalmente, migliore user experience – accesso alle risorse hardware del dispositivo (es:, fotocamera, GPS, ...) e ai dati dell'utente gestiti dalla piattaforma i tt f (messaggi, ( i calendario, l d i contatti, t tti ecc.)) – possibilità di essere eseguite offline – migliori performance – maggiore visibilità e notifiche per gli aggiornamenti grazie alla pubblicazione sull'app store a.a. 2015/16 Tecnologie Web 37 Applicazioni native - II • Svantaggi principali: – sono specifiche per una piattaforma bisogna sviluppare un'applicazione per ogni piattaforma su cui si desidera far funzionare l'app pp – richiedono specifiche competenze e strumenti di sviluppo ad hoc – richiedono, tipicamente, maggiori tempi e costi di sviluppo – la pubblicazione sull'app store è vincolante in termini di tempo e di costo (il gestore dello store percepisce una piccola percentuale su ogni applicazione venduta) – alcuni utenti possono ignorare gli aggiornamenti resi disponibili nell'app store non vi è un'unica applicazione di riferimento che venga utilizzata da tutti a.a. 2015/16 Tecnologie Web 38 19 Applicazioni web-based - I Applicazioni web-based • sono sviluppate con gli strumenti e i linguaggi del Web (es: HTML, CSS, Javascript, jQuery, ecc.) app web-based = insieme di ppagine g web progettate p g pper essere visualizzate su schermi piccoli • sono accessibili attraverso il web browser (non devono essere installate sul dispositivo) • Vantaggi principali: – cross-platform = write once run anywhere: sono immediatamente fruibili su qualunque dispositivo (i di d t (indipendentemente t dal d l sistema it operativo) ti ) – non richiedono specifiche competenze né strumenti ad hoc, diversi da quelli usati per lo sviluppo su Web, ed esistono molti framework e librerie che ne facilitano lo sviluppo a.a. 2015/16 Tecnologie Web 39 Applicazioni web-based - II – possono essere utilizzate anche attraverso i browser desktop e possono essere indicizzate nei motori di ricerca – non sono vincolate a nessun app store e non richiedono installazione – sono automatricamente aggiornate • Svantaggi principali: – browser diversi possono presentare incompatibilità nell'interpretazione dei linguaggi utilizzati (HTML5, CSS3, geolocalizzazione, ecc.) Anche se... il supporto t ad d HTML5 da d parte t degli d li attuali tt li browser b mobili è ormai molto valido gli attuali browser mobili sono in grado di eseguire animazioni e transizioni (CSS3), fornendo una fluidità comparabile alle applicazioni native a.a. 2015/16 Tecnologie Web 40 20 Applicazioni web-based - III – performance peggiori (per es. non è possibile realizzare applicazioni con grafica complessa) – necessitano sempre della connessione di rete attiva (a meno che l'app pp non sfrutti ggli offline ff API di HTML5 che ne consentono la fruizione off-line) – non hanno accesso (diretto) alle risorse hardware del dispositivo (es: accellerometro, fotocamera, GPS, ...) né ai dati dell'utente gestiti dalla piattaforma (messaggi, calendario, contatti, email, foto/video gallery, ecc.) – non rispettano automaticamente al look&feel della piattaforma che deve essere esplicitamente riprodotto piattaforma, – minore visibilità (non sono pubblicate sull'app store) a.a. 2015/16 Tecnologie Web 41 Applicazioni ibride - I Applicazioni ibride • sono delle applicazioni web-based, che utilizzano tipicamente tecnologie web client-side e sono accessibili attraverso il web browser • vengono incapsulate all'interno di un contenitore nativo (es. PhoneGap: phonegap.com), che consente l'accesso alle risorse della piattaforma (es. attraverso API Javascript) • il modello ibrido permette lo sviluppo di applicazioni crossplatform native partendo da un unico codice web-based (che ne facilita la manutenzione e l'aggiornamento) • come le applicazioni native, possono essere pubblicate nell'app store della piattaforma di riferimento e installate sul dispositivo utilizzate anche in modalità offline • le performance sono comparabili alle app web-based a.a. 2015/16 Tecnologie Web 42 21 Responsive design - I A proposito delle app web-based (e ibride) è utile introdurre il concetto di responsive design: una particolare strategia di Web design il cui fine è la realizzazione di siti Web in cui le ppagine g si adattano autonomamente all’area disponibile, in modo da fornire una visualizzazione ottimale indipendentemente dall’ambiente nel quale vengono g visualizzate [E. Marcotte, Responsive Web Design, A List Apart, issue 306, 2010 alistapart.com/article/responsive-web-design] a.a. 2015/16 Tecnologie Web 43 Responsive design - II Tecniche principali per rendere un'app responsive: • Media Query: con HTML5 e/o CSS3 posso "chiedere" al dispositivo info sul device, per es. la risoluzione dello schermo pposso creare diversi layout y per un unico contenuto; x es. p posso creare uno stile CSS per visualizzare il contenuto su un monitor desktop, un altro stile per smartphone, un altro per tablet, ecc. • Layout flessibile ("fluido"): layout che si adatta alla larghezza del viewport (= finestra del browser in cui viene visualizzata l'app); x es. larghezza di un box espressa in percentuale (width: 80%) e non con unità assolute (pixel o punti) • Immagini flessibili: con l'utilizzo della grafica vettoriale è possibile ridimensionare automaticamente le immagini adattandole ai diversi layout a.a. 2015/16 Tecnologie Web 44 22 Strumenti di sviluppo - I Strumenti di sviluppo per applicazioni web-based e ibride: • Tecnologie Web: HTML5, CSS3, Javascript/jQuery, ... • PhoneGap [phonegap.com]: framework open-source di Adobe che permette di creare applicazioni mobili ibride partendo da applicazioni sviluppate con tecnologie web [Fonte: phonegap.com] a.a. 2015/16 Tecnologie Web 45 Strumenti di sviluppo - II PhoneGap non effettua una conversione del codice Javascript in codice nativo (Objective C per iOS e Java per Android), ma agisce da ponte, "incapsulando" ll'applicazione applicazione web (che verrà eseguita e visualizzata dal browser) e garantendo all'app stessa l'accesso alle risorse native del dispositivo (file system, fotocamera, geolocalizzazione, ...) PhoneGap supporta i sistemi operativi più diffusi: iOS, Android, Windows Phone e Blackberry • (opzionalmente, ma nemmeno tanto...) un framework, x es: Sencha Touch o JQuery Mobile (ma ne esistono molti altri!) a.a. 2015/16 Tecnologie Web 46 23 Strumenti di sviluppo - III • • • • • • • • • • • Sencha Touch [www.sencha.com/products/touch] framework per lo sviluppo di applicazioni mobili cross-platform supporta HTML5 garantisce il supporto a PhoneGap le funzionalità f n ionalità messe a disposizione disposi ione dello sviluppatore s il ppatore sono innumerevoli inn mere oli (dalla gestione degli eventi multi-touch alla comunicazione AJAX-based) l'app viene definita all'interno di un'unica pagina HTML (index.html) il DOM della pagina viene modificato dinamicamente attraverso gli API Javascript in risposta ad eventi (azioni dell'utente) la user experience è tra le migliori (anche se non al livello delle app native) Sencha Architect (a pagamento) fornisce tutte le funzionalità tipiche di un ambiente di sviluppo pp integrato g (es. ( strumenti per p realizzare l'interfaccia grafica dell'app tramite drag & drop) [www.sencha.com/products/architect] supporta iOS, Android e Blackberry ed i principali browser (è previsto il supporto Windows Phone 8 ed Explorer 10 Mobile) la documentazione ufficiale è molto dettagliata è distribuito attraverso due tipologie di licenze: GNU GPLv3 e commerciale a.a. 2015/16 Tecnologie Web 47 Strumenti di sviluppo - IV • • • • • • • • • • • • jQuery Mobile [jquerymobile.com] framework per lo sviluppo di applicazioni mobili cross-platform realizza le proprie funzionalità grazie alla libreria JQuery supporta HTML5 ggarantisce il supporto pp a PhoneGapp l'app viene definita all'interno di un'unica pagina HTML (index.html) i widget grafici disponibili sono molto curati ed il look&feel è ottimizzato per le app mobili la user experience è molto buona (solo leggermente inferiore a Sencha Touch) un tool online sviluppato da Codiqa [codiqa.com] consente la realizzazione dell'interfaccia grafica dell'app tramite drag & drop supporta un gran numero di piattaforme e dispositivi anche con hardware obsoleto (Android, (Android iOS, iOS Blackberry Blackberry, Windows Phone, Phone Symbian, Symbian ebookebook reader, Firefox, Opera, ...) lo stretto legame con la libreria JQuery mette a disposizione un gran numero di plugin che consentono di estenderne le funzionalità in maniera semplice a documentazione dettagliata, ben strutturata e facilmente comprensibile è distribuito attraverso licenza open source a.a. 2015/16 Tecnologie Web 48 24 Strumenti di sviluppo - V Strumenti di sviluppo per applicazioni native – Android: • un IDE dedicato Android Studio fornisce un ambiente integrato, comprensivo di tutti gli strumenti necessari allo sviluppo di app Android [developer.android.com/ sdk/installing/studio.html] oppure... • Eclipse (IDE per Java) + plugin Android per Eclipse (Android Development Tools – ADT), che permette di integrare in Eclipse gli strumenti per la compilazione, il debugging, ecc. dell' Android Software Development Kit (SDK) a.a. 2015/16 Tecnologie Web 49 Strumenti di sviluppo - VI • In entrambi i casi, quando si sviluppa un'app mobile, tipicamente si utilizza un emulatore (Android Virtual Device AVD), ) che permette di testare le app senza dover usare uno smartphone vero e proprio • Come dicevamo, le app native devono essere pubblicate sull'app store di riferimento Android A d id Market M k a.a. 2015/16 Tecnologie Web 50 25 Strumenti di sviluppo - VII • Pubblicare un'app nell'Android Market – l'app deve essere testata e configurata secondo le specifiche dell'Android Market ((vedi: www.html.it/pag/19520/pubblichiamo-la-nostra-app/) – Android Studio e il plugin di Android per Eclipse (ADT) mettono a disposizione degli stumenti per la preparazione dell'app per la pubblicazione a.a. 2015/16 Tecnologie Web 51 Strumenti di sviluppo - VIII – Per pubblicare una app nell'Android Market dobbiamo essere registrati come sviluppatori (vedi: https:// play.google.com/apps/publish/signup) – poi si accede all'Android Market, si clicca sul pulsante Upload Application, si compila il form e si clicca sul pulsante Publish l'app comparirà immediatamente nell'Android Market – sarà possibile vedere le statistiche relative alla app (per es quante volte è stata visitata, scaricata ed installata) e i "voti" degli utenti a.a. 2015/16 Tecnologie Web 52 26 Suggerimenti bibliografici - II (oltre ai link segnalati nelle slide...) • A. Spadaccia, Applicazioni multi-piattaforma per dispositivi mobili: sviluppo di un prototipo mediante framework e tecnologie Web, g in Produzione e Organizzazione g della Tesi di Laurea Magistrale Comunicazione e della Conoscenza, Universtà di Torino, a.a. 2013/14 [www.di.unito.it/~goy/materiale/1516/estrattoTesiSpadaccia.pdf] Capitoli suggeriti: – – – – – Cap. III – I dispositivi mobili Sez. 4.1.2 (Responsive Web design) Sez. 5.4 (jQuery Mobile) Sez. 5.7 (Sencha Touch) Sez. 5.8 (PhoneGap) a.a. 2015/16 Tecnologie Web 53 27