Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il...
-
Upload
duongxuyen -
Category
Documents
-
view
219 -
download
0
Transcript of Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il...
Università degli Studi di Torino
Scuola di Scienze Giuridiche, Politiche ed Economico-Sociali
Corso di Laurea Magistrale in:
Produzione e Organizzazione della Comunicazione e della Conoscenza
Tesi Di Laurea
Applicazioni multi-piattaforma per dispositivi mobili:
sviluppo di un prototipo mediante framework e tecnologie Web
Candidato:
Alessandra Spadaccia
Relatore:
Anna Goy
Anno Accademico 2013/2014
22
Capitolo III
I dispositivi mobili
Il capitolo fornisce un’introduzione alle motivazioni che ovunque stanno
spingendo sempre più aziende a valutare positivamente la realizzazione di
prodotti software per dispositivi mobili. Inizialmente definirò la categoria
degli Smart Mobile Device, analizzandone la loro diffusione, presente e
futura, oltre che le rispettive piattaforme di sviluppo. Quest’ultima analisi è
particolarmente importante ai fini della selezione del framework in quanto,
il supporto alle maggiori piattaforme di mercato è uno dei requisiti
fondamentali. In seguito saranno categorizzate, analizzate e confrontate nel
dettaglio le attuali opportunità per la creazione di applicazioni mobili:
native, Web o ibride.
3.1 – Caratteristiche dei dispositivi mobili
Gli Smart Mobile Device (SMD) sono dispositivi elettronici facilmente
trasportabili (mobili), senza fili, capaci di operare autonomamente, di
connettersi alla rete (via Wi-Fi, Bluetooth, 3G, 4G etc.) e di effettuare una
moltitudine di operazioni che tipicamente vengono svolte da computer
desktop e laptop, fra cui:
Comunicazioni audio e video;
Navigazione internet;
Invio e ricezione di e-mail;
Geolocalizzazione;
23
Comunicazioni sociali (es. Facebook, Twitter, etc.);
Lettura e modifica di svariati tipi di documenti elettronici, tra cui gli
e-book;
Gestione del calendario e degli appuntamenti;
Accesso a informazioni meteorologiche.
Etc.
Attualmente con SMD si intendono tutti quei dispositivi mobili che, dati
dimensione e peso ridotti, possono essere utilizzati in mobilità dall’utente,
tra cui: palmari, smartphone, tablet, lettori audio, navigatori satellitari ed
ebook-reader. Si ritiene che questa variegata tipologia di dispostivi supererà
in breve tempo altre forme di comunicazione e di calcolo. La figura 1 mostra
che questo sorpasso è, in realtà, già avvenuto e che la diffusione dei
dispositivi mobili è destinata a crescere anche nei prossimi anni.
Figura 1 - Previsione di crescita degli Smart Device rispetto ad altri tipi di dispositivi secondo l’IDC
[Bob O’Donnell, 2013]
24
Malgrado il fortissimo tasso di crescita rispetto alla controparte desktop,
bisogna considerare delle differenze notevoli:
Minori capacità di calcolo;
Capacità di memoria limitata;
Dimensioni e risoluzione dello schermo minori. È presente una
grande variabilità nelle risoluzioni disponibili, della quale bisogna
tenere conto per definire il design delle applicazioni;
Mobilità. Le persone portano con sé e utilizzano i dispositivi mobili in
qualsiasi posto: teatri, autovetture, treni, aerei, supermercati, bagni,
sotto il sole o nella completa oscurità;
L’orientamento del dispositivo può cambiare e così anche ciò che
viene visualizzato sullo schermo;
L’interazione con il dispositivo avviene attraverso l’uso del
touchscreen o della voce e le applicazioni rispondono a gesture7
manuali, non a click del mouse.
Dipendenza da una batteria che in genere è molto limitata;
Incerta copertura della rete internet e, trattandosi di dispositivi
mobili, la connessione non risulta affidabile e veloce come per la
controparte fissa che può contare su connessioni cablate.
Questi dispositivi fanno inoltre uso di sistemi operativi ad hoc,
chiamati sistemi operativi mobili, che attualmente comprendono:
Android, Apple iOS, Microsoft Windows Phone, RIM Blackberry OS,
Symbian ecc. Questa diversificazione implica che le applicazioni
mobili, chiamate comunemente “apps”, vengono sviluppate
appositamente per ogni sistema, così da essere ottimizzate malgrado
le scarse risorse hardware disponibili (sempre in paragone con un 7 - In informatica, le gesture sono una combinazione di movimenti e click del dispositivo di puntamento (in questo caso le dita) che vengono riconosciuti dal software come comandi specifici.
25
sistema desktop). Nel prossimo futuro questi dispositivi
diventeranno comunque sempre più simili ai dispositivi fissi in
termini di caratteristiche hardware e di prestazioni, (L’ultimo Iphone
presentato dalla casa produttrice Apple è il primo ad avere
un’architettura a 64bit) pur mantenendo la loro caratteristica
principale, ovvero dimensioni ridotte che consentono l’uso in
mobilità.
3.2 – Smartphone e tablet
Al giorno d’oggi gli Smart Mobile Device più diffusi sono gli smartphone ed i
tablet. Queste tipologie di prodotti nascono in risposta alle esigenze di
maggiore mobilità e soprattutto di flessibilità da parte dei consumatori di
tutto il mondo. La caratteristica più interessante di questi dispositivi è infatti
la possibilità di installarvi ulteriori applicazioni, in base alle esigenze e agli
interessi del singolo utilizzatore, ampliando il parco di funzionalità di base
del prodotto. Un tablet infatti può supplire alle esigenze di un utente che
necessiti sia di un lettore di e-book che di un sistema capace di navigare e
svolgere altre funzioni più complesse consentendogli così di riunire due
prodotti in uno.
Smartphone e tablet, appartenendo alla stessa categoria degli SMD, ne
ereditano le caratteristiche positive e i limiti intriseci. La differenza più
evidente tra i due è la dimensione dello schermo (tipicamente touchscreen),
tuttavia esistono differenze anche in termini di risorse hardware, come
processore, memoria, capacità della batteria, che sono più elevate per i
tablet vista la maggiore dimensione di cui dispongono.
I dispositivi mobili, tra cui appunto smartphone e tablet, presentano
schermi touch con i quali interagire. Ciò consente di svincolarsi da
periferiche quali mouse e tastiera: s’interagisce con il dispositivo
26
semplicemente toccandone lo schermo con una o più dita a seconda delle
gesture che l’applicazione supporta.
La caratteristica principale dell’interazione “a tocco” è quella di rendere
l’interfaccia uomo-macchina più naturale, semplice, veloce ed immediata dal
momento che si devono imparare pochi semplici movimenti: singolo tocco,
doppio tocco, trascinamento, rotazione, pinch-to-zoom, etc. Tuttavia questo
tipo d’interazioni richiedono necessariamente dell’hardware dedicato,
ovvero lo schermo touch. Attualmente le tecnologie touchscreen sono di due
tipologie:
RESISTIVO: è di tipo passivo e risponde alla diversa pressione effettuata
sullo schermo. È stato il primo tipo di schermo touch-screen sviluppato,
ispirandosi al mouse, ed è, infatti, solitamente più preciso nell’emulare un
puntatore, ma come un puntatore, solitamente non permette gesture multi-
touch. Realizzare schermi multi-touch resistivi è possibile, ma difficile e più
costoso rispetto agli schermi capacitivi;
CAPACITATIVO: tendono ad essere meno precisi degli schermi resistivi,
ma molto più reattivi e supportano il multi-touch. L’interazione con questo
tipo di schermo richiede un materiale conduttivo, come il dito, per l’input.
3.3 – Sistemi operativi mobili
Ai fini del progetto è importante determinare quali sono le piattaforme
attualmente più diffuse e sulle quali potersi concentrare in termini di
supporto da fornire. Il supporto per tali piattaforme rappresenta anche una
linea guida utile alla selezione del framework di sviluppo.
27
Figura 2 - Previsione di crescita dei sistemi operativi degli smatphone secondo l’IDC
[Ramon T. Llamas, 2012]
La figura 2 mostra le quote di mercato dei sistemi operativi per smartphone
che risultavano più diffusi nel 2012 ed in previsione nel 2016. Attualmente,
nel 2014, Android possiede il 51% del mercato, Apple iOS il 30.5%, RIM
Blackberry OS il 6% ed infine, Microsoft Windows Phone il 5.2%. I maggiori
player del mercato sono quindi Android e iOS, le cui quote di mercato
globale sono molto elevate e nel complesso coprono da soli più dell’80%.
Mentre la previsione per il 2016 concede la testa del gruppo sempre ad
Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché
invariata la loro quota ed infine, Microsoft Windows Phone crescerà fino al
19.2% del mercato. Quest’ultimo avrà una crescita molto elevata a scapito di
iOS ma soprattutto di Android, che vedrà il suo mercato ridursi del 9% da
adesso a 2 anni.
28
Figura 3 - Previsione di crescita dei sistemi operativi degli secondo l’IDC
[Kathy Nagamine, 2012]
Per quanto riguarda il progetto in esame e la richiesta di orientarsi verso il
mondo dei dispositivi tablet, la figura 3 presenta le quote di mercato
mondiali, attuali e future, suddivise per piattaforma. Apple iOS ed suoi
dispositivi tablet detengono la maggiore quota di mercato, la cui massima
stima è del 60.7% nel 2013 ed in linea di massima rimane stabile nella
previsione. Il sistema operativo Android si assesta ad un 35.3% nel 2012, ma
la previsione del 2016 lo vede in perdita con un 30.5%, principalmente ad
opera del rivale Microsoft Windows che, secondo le previsioni, dal 2013
conquisterà importanti quote di mercato attirando così l’attenzione da parte
degli sviluppatori.
Concludendo, attualmente e nell’immediato futuro le piattaforme Apple iOS
e Android sono le due piattaforme di maggiori interesse per lo sviluppo di
applicazioni mobili, sia per smartphone sia per tablet, che dovranno essere
prese in considerazione da parte degli sviluppatori e, quindi, attentamente
considerate in fase di selezione del framework.
29
3.3.1 – Android
Android è una piattaforma open-source per telefoni cellulari, basata sul
sistema operativo Linux e sviluppata dall'Open Handset Alliance8. La
piattaforma ha a disposizione delle librerie dedicate, come il database
SQLite o SGL e OpenGL dedicate alla grafica, un application framework, la
Dalvik virtual machine (una Java virtual machine modificata) come
ambiente di runtime e una serie di applicazioni preinstallate come un
browser, una rubrica e un calendario.
Il 12 novembre 2007 l'OHA rilasciò il software development kit (SDK) che
includeva: strumenti di sviluppo, librerie, un emulatore del dispositivo, la
documentazione (in inglese), alcuni progetti di esempio, tutorial e FAQ.
Il primo dispositivo mobile dotato della piattaforma Android fu il T-Mobile
G1, prodotto dalla società taiwanese HTC e commercializzato dal carrier
telefonico T-Mobile che venne presentato il 23 Settembre 2008 a New York.
Allo stato dell'arte si è giunti alla versione 4.4 denominata KitKat che, a
detta degli sviluppatori, ha apportato importanti innovazioni come ad
esempio il pieno supporto per la tecnologia Near Field Communication
(NFC), introdotta in Android Gingerbread (2.3), ossia un sistema di
trasmissione wireless a cortissimo raggio (fino a 4cm di distanza) che
permette di effettuare pagamenti in maniera diretta attraverso
un’architettura aperta che supporta qualsiasi gestore di telefonia mobile e
consente alle app di gestire i dati di pagamento nella cloud o direttamente
sul dispositivo.
8 - Un gruppo di 84 compagnie di telefonia e tecnologia che cooperano per lo sviluppo e la crescita della piattaforma Android. http://www.openhandsetalliance.com/
30
3.3.1.1 – Struttura architetturale
Android è un sistema operativo a livelli (Layered Operating System), in cui
ogni livello comunica solo con il sottostante tramite apposite interfacce
come rappresentato in figura 5. Ogni livello ha quindi il compito di servire il
livello a lui superiore sfruttando quello a lui inferiore; genericamente in
questo tipo di sistemi, ed è così che Android è strutturato, si pongono le
applicazioni lato utente al livello più alto e le risorse di sistema al livello più
basso.
Figura 4 – Rappresentazione dei livelli architetturali di Android
3.3.1.1.1 – Linux Kernel
Alla base dello stack Android troviamo un kernel Linux nella versione 2.6.
La scelta di una simile configurazione è nata dalla necessità di disporre di un
vero e proprio sistema operativo che fornisse gli strumenti di basso livello
per la virtualizzazione dell’hardware sottostante attraverso l’utilizzo di
31
diversi driver. A differenza di un kernel Linux standard per Android sono
stati aggiunti ulteriori moduli come:
Binder IPC Driver - un driver dedicato che permette la comunicazione
diretta tra i vari processi attraverso un insieme di API di più alto livello
rispetto a quelle presenti su un kernel linux standard, questo permette un
costo computazionale minore e un minore consumo di batteria.
Low Memory Killer - un sistema che si preoccupa di terminare i processi
liberando così spazio nella memoria centrale. La terminazione dei processi
avviene secondo un sistema di ranking che assegna dei punteggi ad ogni
processo in base al livello di utilizzo; i processi che verranno terminati
saranno quelli con punteggio più alto. Ad esempio, un processo che controlla
la UI (User Interface) di un'applicazione visibile avrà sicuramente un
punteggio più basso di quello relativo ad un'applicazione non visibile sullo
schermo.
Ashmem - sistema di memoria condiviso anonimo (Anonimous Shared
Memory) che consente ai processi di condividere contemporaneamente
alcune zone di memoria. Il vantaggio di Ashmem rispetto ai sistemi Linux
che fanno uso della memoria condivisa, è che viene fornito al kernel uno
strumento per recuperare dei blocchi di memoria non utilizzati.
RAM Console e Log devices - per agevolare il debugging, Android
fornisce la capacità di memorizzare i messaggi di log generati dal kernel in
un buffer RAM. È disponibile inoltre un modulo separato che permette
all’utente di leggere e scrivere messaggi di log.
Android Debug Bridge - strumento che permette di gestire in maniera
versatile un'istanza dell'emulatore o eventualmente di un dispositivo reale.
Power Management - sezione progettata per permettere alla CPU di
adattare il proprio funzionamento al fine di non consumare energia se
nessuna applicazione o servizio ne fa richiesta.
32
3.3.1.1.2 – Librerie di Android
In Android esistono poi delle librerie native, realizzate in C-C++, che si
trovano sopra al livello kernel e che rappresentano il vero e proprio core del
sistema operativo:
Surface Manager - il modulo che gestisce le View, cioè i componenti di
una interfaccia grafica. Funziona praticamente come uno scheduler per la
gestione della visualizzazione delle interfacce grafiche e previene eventuali
problemi di accavallamento sul display. È un componente di vitale
importanza per un terminale che fa delle interfacce grafiche un punto di
forza del suo funzionamento.
Open GL SE - è una libreria grafica, versione light della libreria OpenGL
per terminali mobili, che permette di utilizzare grafica 3D.
SGL (Scalable Graphics Library) - libreria scritta in C++ che permette
di gestire la grafica 2D.
Media Framework - componente in grado di gestire i contenuti
multimediali (Codec per l'acquisizione e riproduzione di contenuti audio e
video).
FreeType - componente che gestisce i font.
SQLite - database relazionale piccolo ed efficiente messo a disposizione
dello sviluppatore per la gestione dei dati persistenti delle varie applicazioni
sviluppate.
WebKit – è un browser engine open source (utilizzato anche per i più
conosciuti browser web Safari e Chrome). Da sottolineare che si tratta di un
engine e non di un browser web completo, quindi dovrà essere integrato
nelle diverse applicazioni.
SSL - si tratta della nota libreria per la gestione del Secure Socket Layer.
33
3.3.1.1.3 – Applications Framework
Per quanto riguarda l'Application Framework, lo sviluppatore ha a
disposizione una serie di API che sfruttano le librerie sottostanti di Android.
Sono presenti i seguenti moduli:
Activity Manager - modulo che gestisce tutto il ciclo di vita delle activity.
Le activity sono entità associate ad una schermata, rappresentano quindi
l'interfaccia utente. Il compito dell'Activity Manager è quello di gestire le
varie activity sul display del terminale e di organizzarle in base all'ordine di
visualizzazione sullo schermo.
Package Manager - modulo che gestisce i processi di installazione e
rimozione delle applicazioni dal sistema.
Telephony Manager - modulo che gestisce l'interazione con le funzioni
tipiche di un cellulare.
Content Provider - modulo che gestisce la condivisione di informazioni
tra i vari processi attivi. Il suo utilizzo è simile a quello di un repository
comune nel quale i vari processi possono leggere e scrivere informazioni;
Resource Manager - modulo deputato alla gestione delle informazioni
relative a una applicazione (file di configurazione, file di definizione dei
layout, immagini utilizzate, etc...).
View System - gestisce l'insieme delle “viste” (view) utilizzate nella
costruzione dell'interfaccia utente (bottoni, griglie, text boxes, etc...).
Location Manager - modulo che mette a disposizione dello sviluppatore
una serie di API che si occupano della localizzazione. Esistono due provider
per la localizzazione: GPS e NETWORK. GPS utilizza i satelliti geostazionari
per il posizionamento geografico, ha bisogno però della vista del cielo e
risente delle cattive condizioni atmosferiche. NETWORK utilizza punti dei
quali si conosce la posizione geografica, come ad esempio celle GSM oppure
reti wireless geolocalizzate (Hot Spot).
34
Notification Manager - mette a disposizione una serie di meccanismi
utilizzabili dalle applicazioni per notificare eventi al dispositivo che
intraprenderà delle particolari azioni in conseguenza della notifica ricevuta.
3.3.1.1.4 – Applications
Sebbene non sia un livello vero e proprio, in questa parte, oltre alle
applicazioni, di cui tratteremo tra poco, risiede il cuore di un sistema
Android: ne fanno infatti parte le librerie Java e la Dalvik Virtual Machine.
La Dalvik Virtual Machine utilizzata nei dispositivi Android ha il compito di
eseguire le applicazioni, ed essendo sviluppata per dispositivi mobili è
ottimizzata per interfacciarsi con una scarsa potenza computazionale e poca
memoria a disposizione. La Dalvik Virtual Machine, infatti, implementa un
Garbage Collector9, liberando pertanto lo sviluppatore dall'onere della
gestione della memoria.
Le applicazioni sono infine il livello più alto dell’architettura Android, ciò
che del sistema operativo viene a contatto con l’utente e con il quale l’utente
sfrutta il dispositivo. La particolarità di Android è che qualsiasi
applicazione, qualora gliene sia dato il permesso, può accedere senza limiti a
qualsiasi tipo di risorsa presente sul dispositivo, dando quindi allo
sviluppatore la massima libertà.
9 - S’intende una modalità automatica di gestione della memoria, mediante la quale si liberano le porzioni di memoria che non dovranno più essere successivamente utilizzate dalle applicazioni.
35
3.3.2 – iOS
iOS rappresenta la versione mobile del sistema desktop Mac OS X
appartenente all’azienda internazionale Apple Inc. È utilizzato in tutti i
dispositivi mobili della medesima marca di fascia alta (iPhone, iPod touch,
iPad) e mette a disposizione le tecnologie necessarie per implementare
applicazioni web e/o native, oltre che dare la possibilità agli utenti di
usufruire di un’innumerevole quantità di applicazioni gratuite o a
pagamento pronte per essere installate tramite l’App Store.
Da subito l’introduzione di iOS nel 2007 rivoluzionò il modo di pensare e
utilizzare tali dispositivi, dando inizio a una vera e propria “corsa allo
smartphone”. Giunto alla versione 7.1 (Marzo 2014), rappresenta tuttora
uno dei sistemi di punta nell’ambiente mobile. Il suo successo è stato
determinato dalla facilità d’uso e dalla semplicità, due dei maggiori punti di
forza, che da sempre hanno reso possibile un utilizzo immediato, rapido,
anche grazie ad una notevole rapidità e chiarezza delle risposte del sistema;
inoltre i modi in cui si è stata ideata l’interfaccia grafica e si sono gestite le
interazioni con i componenti hardware per supportare il touchscreen, hanno
aumentato il grado di intuitività nei gesti eseguiti in un utilizzo giornaliero.
Per contro è opportuno ricordare che tali caratteristiche generali non
consentono un’alta personalizzazione e manipolazione del dispositivo,
limitando la libertà dell’utente finale. Tuttavia, così facendo, tale
piattaforma mobile risulta essere molto sicura e robusta, rispecchiando una
scelta progettuale, nonché una precisa linea di sviluppo dell’azienda
produttrice.
3.3.2.1 – Struttura architetturale
L’architettura di iOS è simile a quella di Mac OS X e come questa è
strutturata in una serie di quattro livelli di astrazione, o layers, (come
36
rappresentato in figura 4) ognuno dei quali implementa funzionalità ben
specifiche, per rendere semplice la scrittura di applicazioni che funzionano
in modo coerente su dispositivi con differenti capacità hardware.
Nel livello più alto, il sistema operativo agisce come intermediario fra
l’hardware sottostante e l’interfaccia grafica, mentre le varie applicazioni
installate comunicano con i livelli sottostanti attraverso un ben determinato
set d’interfacce, aumentando considerevolmente la protezione delle
applicazioni da eventuali modifiche hardware. Il livello più basso del sistema
ospita i servizi e le tecnologie fondamentali da cui tutte le applicazioni
dipendono. La maggior parte delle interfacce di sistema sono rese
disponibili in pacchetti chiamati framework. Un framework consiste in un
albero di cartelle contenente una libreria dinamica di funzioni e risorse
(header files, immagini etc.) a supporto di essa. In aggiunta ai frameworks,
Apple rende disponibili alcune tecnologie nella forma di librerie dinamiche.
Molte di esse appartengono al livello più basso del sistema operativo e
derivano da tecnologie Open Source, come naturale conseguenza del fatto
che iOS, similmente al corrispondente sistema desktop, sia basato sulla
piattaforma Unix.
Figura 5 – Rappresentazione dei livelli architetturali di iOS.
37
3.3.2.1.1 – Core OS
È lo strato che permette di lavorare a diretto contatto con l’hardware
sottostante ed è considerato il vero cuore del sistema operativo; infatti in es-
so sono presenti gli elementi considerati fondamentali, utilizzati poi dalle
tecnologie di livelli sovrastanti.
Accelerate Framework - contiene le interfacce utilizzate per l’esecuzione
di calcoli matematici, DSP (Digital Signal Processor, un processore dedicato
e ottimizzato per eseguire il più efficientemente possibile sequenze di
istruzioni ricorrenti) ed anche per l’elaborazione di numeri molto grandi.
Tale strumento ha il vantaggio di essere ottimizzato per tutte le
configurazioni hardware presenti in dispositivi basati su iOS.
External Accessory Framework - offre supporto per la comunicazione
con la parte hardware di accessori o componenti collegati a dispositivi basati
su iOS.
Security Framework - mette a disposizione interfacce specifiche per
gestire certificati, chiavi private o pubbliche e la generazione di numeri
crittografati pseudo-casuali. Questo permette di garantire un livello di
sicurezza personalizzato per i dati di ognuna delle applicazioni sviluppate.
Livello di Sistema - comprende l’ambiente del kernel, i drivers, e le
interfacce Unix di basso livello. La parte centrale, fulcro stesso di Mac OS X
e iOS, che include il kernel e la base Unix, è noto come Darwin, un sistema
operativo open source pubblicato da Apple. Esso non include, come invece è
nel caso di Mac OS X, un’interfaccia utente caratteristica, ma fornisce
solamente gli strumenti e servizi base relativi all’ambiente dedicato al kernel
e dello spazio utente, tipici dei sistemi Unix.
3.3.2.1.2 – Core Services
Come suggerisce il nome assegnato, questo livello contiene i servizi di
38
sistema fondamentali, utilizzati da tutte le applicazioni, spesso considerate
utility. Le tecnologie chiave presenti si possono riassumere nelle aree che
comprendono la programmazione concorrente, il commercio elettronico, la
gestione e memorizzazione dei dati all’interno di database e
presentazione/manipolazione delle informazione ricevute o trasmesse.
CFNetwork Framework - è costituito da un insieme interfacce in
linguaggio C che utilizzano paradigmi orientati agli oggetti per lavorare con
svariati protocolli di rete; la caratteristica di rilievo è rappresentata dalla
possibilità di ottenere un controllo dettagliato dei vari protocolli.
Core Data Framework - costituisce una tecnologia per la gestione del
modello dei dati in applicazioni caratterizzate dall’utilizzo del pattern
Model-View-Controller (MVC). In linea di principio è destinato ad un
utilizzo nello sviluppo di applicazioni in cui il modello dei dati previsto è
altamente strutturato.
Foundation Framework - insieme ad UIKit è uno dei framework essen-
ziali per la piattaforma mobile iOS, mentre tutti gli altri sono secondari e
non indispensabili; ne sono un esempio le applicazioni a linea di comando,
le quali utilizzano solo questi due framework. Le funzioni svolte e i ruoli
assunti dal framework Foundation si possono riassumere nella definizione
di un livello base di classi che possono essere utilizzate per ogni tipo di
programma Cocoa, (il cui significato verrà chiarito tra poco) punto di
incontro fra i due sistemi operativi Apple (Mac Os X e iOS).
Core Location Framework - permette di accedere alle informazioni di
localizzazione e posizionamento all’interno delle applicazioni; in par-
ticolare fa uso della tecnologia GPS (se è compresa nella dotazione
hardware) o delle onde Wi-Fi, per ottenere la longitudine e latitudine del
dispositivo.
Core Media Framework - include in se gli strumenti per la
comunicazione audio/video di basso livello, utilizzati nel livello
39
architetturale sovrastante.
Quick Look Framework - fornisce un’interfaccia diretta per la
visualizzazione di un’anteprima dei files non supportati direttamente; tale
strumento risulta utile in applicazioni che scaricano contenti dalla rete o che
lavorano con files la cui fonte è sconosciuta.
Store Kit Framework – necessario per la gestione delle compravendite di
contenuti e servizi che avvengono all’interno delle singole applicazioni; in
particolare questo framework si focalizza sull’aspetto finanziario della
transazione, assicurando che sia avvenuta correttamente e secondo gli
standard di sicurezza impostati.
3.3.2.1.3 – Media
Rappresenta lo strato che contiene tutte le funzionalità e le librerie per la
gestione di video e audio. Inoltre, è necessario menzionare anche una
recente tecnologia chiamata AirPlay, la quale permette lo streaming audio
verso l’Apple TV oppure verso altoparlanti AirPlay di terze parti. Il supporto
AirPlay è integrato in AV Foundation e Core Audio Framework; questo
implica che qualunque contenuto audio riprodotto usando uno dei due
framework sopra citati è automaticamente idoneo per la distribuzione
tramite AirPlay.
AV Foundation Framework - utilizzato per la riproduzione e
manipolazione di contenuti audio, con esso è possibile avere un ampio
controllo su vari aspetti dei suoni riprodotti, come la possibilità di registrare
audio e gestire le informazioni sulle sessioni sonore acquisite.
Core Audio - offre supporto nativo per le operazioni sull’audio; in parti-
colare supporta la manipolazione di audio in qualità stereo, la generazione,
registrazione e mix nonché riproduzione dell’audio risultante.
40
Core Graphics, MIDI, Text, Video Frameworks - come tutti i
frameworks presenti in questo livello architetturale, permettono di
controllare le rispettive aree di interesse identificate dal nome.
OpenAL (AudioLibrary) Framework - rappresenta uno standard
interpiattaforma per posizionare fonti audio in modo tridimensionale,
tenendo in considerazione i parametri di disturbo che potrebbero influire.
Viene utilizzato per implementare giochi o altre applicazioni che richiedano
un audio posizionale in output.
OpenGL (Graphical Library) ES Framework - è una libreria grafica
per lo sviluppo di applicazioni nel campo del rendering 2D e 3D, pensata per
interfacciarsi direttamente con l’hardware e fornire al singolo programma
una serie di funzioni per la manipolazione dei pixel, per la proiezione di
poligoni in 3D, per la gestione del movimento degli stessi, per la
rappresentazione di luci etc.
Quartz Core Framework - contiene le interfacce del Core Animation, una
tecnologia avanzata per l’animazione e la composizione al fine di
implementare complesse animazioni ed effetti visivi.
3.3.2.1.4 – Cocoa Touch
Rappresenta lo strato più vicino all’utente e i frameworks di questo livello
supportano direttamente le applicazioni basate su iOS. Si occupa della
gestione del touch e multi-touch, interpretando le differenti gestures
compiute dall’utente finale mediante i gesture recognizers, oggetti collegati
alle view (a loro volta definite come le schermate visibili sul video), utilizzati
per rilevare i tipi più comuni di movimenti, come lo zoom o la rotazione di
elementi.
41
Oltre alla gestione del touch, molti dei frameworks del livello Cocoa Touch
contengono specifiche classi genericamente denominate View Controller,
necessarie per visualizzare interfacce standard di sistema. Tali componenti
rappresentano particolari tipi di controller molto utilizzati per presentare e
gestire un insieme di view; giocano un ruolo importante nella progettazione
ed implementazione di applicazioni iOS perché forniscono un’infrastruttura
per gestire i contenuti correlati alle view e coordinare la comparsa o
scomparsa di queste ultime.
Un’ulteriore caratteristica di questo livello è data dal supporto a due
differenti modalità in cui utilizzare le notifiche, le quali danno la possibilità
di avvisare l’utente di nuove informazioni mediate un segnale sonoro o
visivo. Il primo prende il nome di Apple Push Notification Center e utilizza
un processo server per generare e distribuire la notifica inviatagli dal client;
il secondo, chiamato Notifiche Locali, completa il meccanismo di notifiche
sopra descritto dando la possibilità, in fase di progettazione, di generarle in
locale, senza fare affidamento su un server esterno.
Come in tutti gli altri livelli in cui è strutturato iOS, anche in Cocoa Touch si
utilizzano innumerevoli frameworks per giungere agli obbiettivi appena
descritti, dei quali sono qui riportati i più importanti.
Game Kit Framework - fornisce varie funzionalità separate,
principalmente implementabili nelle applicazioni di tipo ludico. Una di
queste è la possibilità di attivare una connessione con altri dispositivi basati
su iOS di tipo peer–to–peer tramite una connessione diretta (Bluetooth o
wireless), tramite cui scambiarsi qualsiasi tipo di dato. Per garantire la
massima integrazione con le applicazioni ludiche, tale framework mette a
disposizione uno strumento chiamato Game Center, che presenta
innumerevoli funzioni tra cui la possibilità di essere in contatto con una lista
di amici quando si gioca, mantenere online una classifica e risultati
personali aggiornati, il supporto al multiplayer etc.
42
Map Kit Framework - fornisce un’interfaccia per integrare le mappe
direttamente nella finestre e nelle view delle applicazioni, supportando
anche l’inserimento di annotazioni e modifiche personali. Consente la
ricerca tramite un’operazione di reverse–geolocation al fine di determinare
le informazioni per un determinato segnaposto, una volta note le coordinate
geografiche.
iAd Framework - consente all’applicazione di ottenere un introito
mediante la visualizzazione di annunci pubblicitari nella forma di piccoli
banner. Gli annunci sono incorporati all’interno delle view in formato
standard e possono essere visualizzate in ogni momento.
UIKit Framework - come già accennato nel livello Core Services, è uno
dei due framework portanti nella struttura architetturale di iOS; in questo
caso il suo compito principale è mettere a disposizione tutte le classi atte alla
costruzione e gestione dell’interfaccia utente nell’applicazione. Inoltre
incorpora il supporto per caratteristiche specifiche di alcuni dispositivi,
come l’accellerometro, la libreria fotografica dell’utente, informazioni sullo
stato della batteria, sui sensori di prossimità etc.
3.4 – Applicazioni mobili: native, Web o ibride
Le applicazioni mobili rivestono un ruolo fondamentale nell’ecosistema
degli Smart Mobile Device, consentendo di aggiungere nuove funzionalità
delle tipologie più diverse. Vista la diffusione delle piattaforme mobili,
infatti, molte aziende stanno valutando questa nuova opportunità di
business. Le principali tipologie di applicazioni mobili sono tre:
Native;
Web;
Ibride.
43
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 feel10
della piattaforma, la possibilità di non richiedere accesso alla rete per poter
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.).
La figura 6 mostra la stessa applicazione realizzata con tecnologie native e
con tecnologie Web. Per gli utenti finali la differenza sostanziale è a livello
d’interfaccia grafica, tuttavia lo stesso non si può dire per gli sviluppatori,
specialmente in termini di realizzazione dell’applicazione, in quanto ogni
scenario di sviluppo (che sia utilizzando tecnologie ibride, o direttamente i
sistemi di sviluppo nativi) ha i suoi vantaggi e svantaggi che devono essere
opportunamente valutati in modo da incontrare le necessità e le
caratteristiche di ogni azienda.
10 - In informatica, l'espressione inglese look and feel (talvolta abbreviata in L&F) viene usata per descrivere le caratteristiche percepite dall'utente di una interfaccia grafica, sia in termini di apparenza visiva (il look) che di modalità di interazione (il feel).
44
Figura 6 - Confronto tra l’app di Facebook nativa (a sinistra), e Web (a destra) - Gennaio 2014.
Segue ora un confronto tra le diverse tipologie di applicazioni mobili appena
delineate.
3.4.1 - Applicazioni mobili native
Le applicazioni native sono sviluppate ricorrendo a strumenti e linguaggi
definiti dalla specifica piattaforma (il sistema operativo), quali: Java,
Objective C, C#, C++ etc. Inoltre, a differenza delle applicazioni Web,
vengono scaricate dall’app store di riferimento ed installate sul dispositivo.
La tabella 3 mostra solo alcune delle possibili piattaforme ad oggi disponibili
e rispettivamente ne elenca i linguaggi e gli ambienti di sviluppo da queste
supportati nonchè l’app store di riferimento in cui pubblicare l’applicazione.
45
Piattaforma Linguaggi
autorizzati
Ambienti di
sviluppo più
comuni
Metodo di
distribuzione
Android C, C++, Java
Android Studio,
Android development
tool (Plugin per
Eclipse), IntelliJ,
Netbeans, Visual
Studio, Etc…
Android Market
App-shop
(Amazon)
Google Play
Bada C++ (estensione
proprietaria)
Bada IDE, basato su
ECLIPSE Samsung App
Blackberry OS Java QNX Momentics IDE
(Plugin per Eclipse) Blackberry App World
iOS Objective C Xcode per Mac App Store
Open WebOS Html, CSS, JavaScript Enyo Framework App Catalog
Symbian C++ Carbide C++ IDE
Nokia Store
(Nokia)
Samsung App
(Samsung)
Symbian Orizon
(Stock)
Sony PlayNow
Arena (Sony)
AT&T’s Media Mall
(AT&T)
Handango
(Orange)
Windows Mobile C++ Visual Studio Windows Marketplace
Tabella 3 – Confronto tra i diversi sistemi operativi mobili
46
Vantaggi:
Forniscono una migliore esperienza d’uso e fedeltà dell’applicazione al
look and feel della piattaforma;
Hanno accesso alle risorse hardware del dispositivo, quali:
accellerometro, fotocamera, flash, GPS per la geolocalizzazione
dell’utente, risorse grafiche per lo sviluppo di videogiochi etc.;
Possono essere integrate con i dati dell’utente gestiti dalla
piattaforma, come: messaggi, calendario, contatti, email, foto/video
gallery, etc.;
Dal momento in cui vengono installate nel dispositivo la maggior
parte può essere eseguita offline, perciò senza la richiesta di una
connessione internet constante;
Assicurano le migliori performance disponibili. L’approccio è utile
quando l’applicazione fa un uso intenso dell’hardware come nel caso
dei giochi 3D;
Vengono pubblicate sull’app store di riferimento e questo gli consente
di avere la massima visibilità, rendendo semplice ed efficace la
monetizzazione, ricorrendo in alcuni casi all’uso di pubblicità
all’interno dell’app stessa;
L’app store notifica l’aggiornamento dell’applicazione, consentendo
all’utente di avere applicazioni sempre aggiornate con nuove
funzionalità e correzioni.
Svantaggi:
Vengono richiesti specifici know-how e strumenti di sviluppo;
Tempo e costo di sviluppo sono maggiori rispetto alle altre tipologie di
applicazioni;
47
Lo sviluppo su più di una piattaforma necessita di creare
un’applicazione per ognuna di quelle che si vogliono supportare;
La pubblicazione sull’app store è vincolante in termini di tempo e di
costo, visto che il gestore dello store percepisce una piccola
percentuale su ogni applicazione venduta;
Alcuni utenti possono ignorare l’ultimo aggiornamento reso
disponibile nell’app store e, quindi, non vi è un’unica applicazione di
riferimento che venga utilizzata da tutti;
3.4.2 - Applicazioni mobili Web
Le applicazioni mobili Web non sono realizzate attraverso gli strumenti
messi a disposizione dalla piattaforma, come avviene per quelle native, e
sono facilmente accessibili attraverso il browser Web fornito insieme al
dispositivo: questa metodologia d’implementazione è un esempio di quello
che in informatica viene chiamato: “write once run anywhere”11. Come ogni
tradizionale applicazione Web, infatti, anche quelle mobili vengono
realizzate attraverso le stesse tecnologie che si utilizzano per sviluppare
applicazioni Web tradizionali, quali per esempio HTML12, CSS13 e
JavaScript14. Questo permette che un’applicazione realizzata in questo
modo, una volta sviluppata possa essere fruibile su qualunque SMD
indipendentemente dal sistema operativo di cui è fornito.
11 - “write once run anywhere” è uno slogan creato dalla Sun Microsystems per illustrare i benefici della capacità del linguaggio Java di essere multi-piattaforma. Idealmente questo significa che Java può essere utilizzato per sviluppare su ogni dispositivo, dato che può essere compilato con librerie diverse. 12 - l'HyperText Markup Language (HTML) è il linguaggio di markup solitamente usato per la formattazione di documenti ipertestuali disponibili nel World Wide Web. 13 - il CSS (Cascading Style Sheets o Fogli di stile) è un linguaggio usato per definire la formattazione di documenti HTML, XHTML e XML ad esempio in siti web e relative pagine web. Le regole per comporre il CSS sono contenute in un insieme di direttive (Recommendations) emanate a partire dal 1996 dal W3C. 14 - JavaScript è un linguaggio di scripting orientato agli oggetti comunemente usato nella creazione di siti web. Fu originariamente sviluppato da Brendan Eich della Netscape Communications con il nome di Mocha.
48
La particolarità di questo tipo di applicazioni è quella di essere scaricabili e
fruibili attraverso un semplice browser Web, cosa che le rende così
indipendenti dal dispositivo e dalla piattaforma, in altre parole cross-
platform.
Ogni applicazione Web, è costituita da un insieme di pagine progettate
appositamente per essere visualizzate attraverso il piccolo schermo dei
dispositivi mobili. In questo caso il problema è la grande varietà di browser
disponibili, che supportano in maniera diversa caratteristiche innovative e/o
non ancora stabili come HTML5, CSS3, accelerazione hardware,
geolocalizzazione, accesso alla fotocamera attraverso l’HTML Media
Capture, etc. La figura 7 mostra, tuttavia, che il supporto ad HTML5 da
parte degli attuali browser mobili è molto valido e simile alla controparte
desktop.
Figura 7 - Supporto ad HTML5 da parte dei browser mobili e desktop. Punteggio massimo di 500
unità. [Fonte: www.html5test.com]
49
Vantaggi:
Il vantaggio chiave delle applicazioni Web rispetto a quelle native è la
loro portabilità;
Tra i tre approcci per la realizzazione di applicazioni per i dispositivi
mobili rappresenta il più semplice, veloce, meno dispersivo e
soprattutto, il meno costoso;
Per realizzare le applicazioni non è richiesto di acquistare e utilizzare
altri tools di sviluppo oltre a quelli già disponibili per le applicazioni
Web desktop;
Vengono eseguite attraverso un semplice browser, ormai disponibile
con ogni piattaforma mobile;
Vengono sviluppate ricorrendo alle sole tecnologie Web, si riduce così
il costo ed il tempo richiesto dallo sviluppo e dalla manutenzione della
stessa applicazione su più piattaforme;
I browser sono disegnati nativamente per eseguire le animazioni e le
transizioni CSS3, fornendo una fluidità comparabile alle applicazioni
native;
In quanto applicazioni Web, possono essere utilizzate anche
attraverso i browser desktop;
Esistono molti framework e librerie che ne facilitano lo sviluppo;
Possono essere cercate attraverso i classici motori di ricerca;
Gli utenti non devono accedere a un app store ed effettuarne il
download ne eseguire alcuna installazione;
Non è necessario ricorrere agli app store per ridistribuire
l’aggiornamento, minimizzandone la latenza ed effettuandolo
autonomamente senza il minimo intervento dell’utente.
50
Svantaggi:
Browser di diverse piattaforme possono presentare incompatibilità
verso le tecnologie non ancora standard come HTML5;
Le performance ottenibili non sono confrontabili con le applicazioni
native, quindi non è possibile realizzare applicazioni che richiedono
grafica complessa o l’uso intensivo del processore;
Viene sempre richiesta una connessione di rete attiva, a meno che
l’applicazione non sia stata sviluppata sfruttando certe caratteristiche
di HTML5 che ne consentono la fruizione off-line;
Attraverso i browser attuali non è possibile accedere alle
caratteristiche native del dispositivo come ad esempio la fotocamera,
gli accelerometri, il filesystem, i contatti, etc.;
Le applicazioni non presentano automaticamente il look and feel della
piattaforma sulla quale vengono eseguite, anche se questo può essere
emulato grazie al CSS;
Le applicazioni Web sono monetizzabili in maniera meno immediata e
sfruttano principalmente la pubblicità online.
51
3.4.3 - Applicazioni mobili Ibride
Lo sviluppo di applicazioni ibride combina il mondo nativo con quello Web.
Essenzialmente sono delle applicazioni create attraverso l’uso delle classiche
tecnologie Web client-side che vengono incapsulate all’interno di un
contenitore nativo (ad es. PhoneGap15), il quale consente (in questo caso
attraverso un API JavaScript) l’accesso alle risorse della piattaforma.
Delle tre opportunità è quella che, attualmente, sta riscuotendo il maggior
successo in quanto permette, in maniera semplice, veloce e relativamente
poco costosa, lo sviluppo di applicazioni cross-platform native partendo da
un unico codice che facilita nel contempo anche la relativa manutenzione.
Come le applicazioni native, anche queste possono essere pubblicate ed
installate attraverso l’app store della piattaforma di riferimento, oltre che
memorizzate nel dispositivo ed utilizzate anche in modalità offline.
Una doverosa precisazione riguarda il fatto che le performance ottenibili con
le applicazioni ibride sono comparabili solamente a quelle Web visto che, in
entrambi i casi, è il browser che si occupa della loro esecuzione.
I vantaggi e gli svantaggi delle applicazioni ibride derivano direttamente da
quelli visti per le app native e per le applicazioni Web. Nella seguente tabella
è presente un confronto riassuntivo delle tre tipologie di applicazioni mobili
che è possibile implementare.
15- http://phonegap.com.
52
Tabella 4 - Riassunto dei pregi e difetti per lo sviluppo di applicazioni native, Web ed
ibride.
Caratteristiche Native Web Ibride
Grafica Api Native Css, Canvas e SVG Css, Canvas e SVG
Performance Veloce Lento Lento
Look and feel Nativo Emulato Emulato
Installazione Si No Si
Aggiornamenti App Store Automatici App Store
Distribuzione App Store Web App Store
Monetizzazione App Store e pubblicità Pubblicità o alcuni
tipi di limitazioni App Store e pubblicità
Fotocamera Si No Si
Accellerometro Si No Si
Notifiche Si No Si
Contatti Si No Si
Calendario Si No Si
Offline Storage Filesystem Local Storage Filesystem
Geolocalizzazione Si Si Si
Double tap Si Si Si
Swipe gesture Si Si Si
Pinch gesture Si No Si
Linguaggi C++, Java, C... HTML, Css,
Javascript
HTML, Css,
Javascript
Connettività Online e Offline Si Si
56
Engine Optimization (SEO)17 grazie ad una migliore gestione dei
contenuti.
4.1.2 – Responsive Web Design
La metodologia di Responsive Web Design (RWD), è definita come una
particolare strategia di Web design il cui fine è la realizzazione di siti Web
in cui le pagine si adattano autonomamente all’area disponibile, in modo
da fornire una visualizzazione ottimale indipendentemente dall’ambiente
nella quale vengono visualizzate (Marcotte, 2010). Questo, perché
nell’ambito del Web il panorama sta cambiando molto velocemente: i siti
Web dovranno essere progettati non più soltanto per dispositivi dotati di
mouse e tastiera, ma anche per smartphone, console di gioco, tablet e smart
tv. Le tipologie di dispositivi diversi sono aumentate e conseguentemente
anche le modalità di input, di navigazione e le risoluzioni degli schermi di
questi strumenti. Appare quindi evidente che creare una versione del sito
ad-hoc per ciascuna tipologia sia molto difficile da garantire, se non
impossibile. È proprio in questa circostanza che l’approccio RWD viene in
aiuto, consentendo all’utente di ridurre al minimo la necessità di
ridimensionamento e scorrimento.
17 - S’intendono tutte quelle attività finalizzate ad aumentare il volume di traffico (accessi) che un sito Web riceve tramite i motori di ricerca, al fine di ottenere una migliore classificazione nelle pagine dei risultati di ricerca.
57
Figura 8 – Esempio di un sito realizzato con tecniche responsive [Fonte: Ethan Marcotte –
Responsive Web design, 2010]
La figura 8 presenta un sito Web realizzato con questa tecnica: è possibile
notare come questo si adatti automaticamente, a seconda della dimensione
dello schermo, al dispositivo in cui viene visualizzato.
Generalmente sono riconosciute almeno 3 tecniche che sono utilizzabili al
fine di rendere un sito Web effettivamente Responsive.
Media Query – è un modulo CSS3 che permette di “interrogare” il
dispositivo su cui vengono visualizzati i contenuti sulla risoluzione del
suo schermo. Utilizzando le Media Queries i Web designer possono
creare diversi layout derivanti dallo stesso contenuto di base. In
questo modo consentono alla pagina Web di usare diversi stili CSS
sulla base delle caratteristiche del dispositivo, basandosi
principalmente sulla larghezza del Viewport18. Ad esempio, si può
creare uno stile CSS per visualizzare il contenuto in un monitor
desktop ed un altro per una grande varietà di dispositivi mobili;
18 - La finestra del browser nella quale viene visualizzata l’applicazione Web.
58
Layout flessibile - è uno degli elementi più importanti del RWD. Un
layout flessibile si adatta alla larghezza del Viewport, così che la
pagina Web possa sempre essere visualizzata in maniera adeguata. I
due tipi di layout flessibili più conosciuti sono quelli non espressi con
unità assolute come pixel o punti, con due diverse unità relative:
percentuali ed em. Per fare un esempio bisogna specificare che le
dimensioni di un testo definito in em sono calcolate in base alla
dimensione del testo dell’elemento genitore. Per esempio, se il
<body> di un documento HTML avesse come dimensione standard
del font 16px, ogni elemento al suo interno, identificato come figlio,
erediterebbe la stessa dimensione del font a meno che questa non
venga cambiata. Se la dimensione del font del figlio venisse cambiata
in 0.75em allora la nuova dimensione sarebbe 0.75 × 16px = 12px. A
questo punto quindi se il contenuto venisse visualizzato su un browser
che ha come dimensione standard del font del <body> 20px, la nuova
dimensione del font dell’elemento figlio sarebbe 0.75 x 20px = 15px. Il
tutto senza necessità di modificare il css in alcun modo.
Immagini flessibili – si tratta di un altro importante aspetto della
tecnica RWD; con l’utilizzo della grafica vettoriale è possibile
ridimensionare automaticamente le immagini a seconda della
dimensione del Viewport ed essere, così, adattate ai diversi layout.
La necessità di adeguare la visualizzazione alle diverse dimensioni e
risoluzioni degli schermi ha introdotto la possibilità di suddividere in un
numero discreto le tipologie di layout ovvero di organizzazione dei
contenuti, in funzione della larghezza del device. Principalmente abbiamo:
Mobile (∼ 320x480) - per cellulari e smartphone;
Tablet (∼768x1024) - per tablet ed ebook-reader;
Normal (∼992x768) - per desktop e notebook.
59
Per quanto riguarda il progetto in esame la tecnica RWD è stata presa in
considerazione perché risulta particolarmente utile nel caso in cui il
framework selezionato fornisca supporto sia a dispositivi smartphone che
tablet. Inoltre, consente di gestire in maniera efficace il cambio di
orientamento del dispositivo, garantendone il ridimensionamento per
adattarsi all’area del Viewport.
4.2 – Tecnologie Web Client-Side
Le tecnologie client-side sono caratterizzate dal fatto che l’esecuzione e
l’interpretazione delle istruzioni avvengono localmente sul dispositivo
utilizzato dall’utente.
Nel contesto delle tecnologie Web, il Browser è il programma software che
consente di: usufruire dei servizi di rete, navigare sul World Wide Web,
visualizzare i documenti ed, infine, interagire con essi.
Per la realizzazione del progetto sono stati utilizzati i più comuni browser
Web, aggiornati alle ultime versioni stabili disponibili, che garantiscono il
supporto ad HTML5: Mozilla Firefox, Google Chrome, Apple Safari, Opera,
Safari Mobile e Chrome Mobile. Microsoft Internet Explorer 9 e la
controparte mobile inclusa in Windows Phone 7 non supportano HTML5 al
livello richiesto dal progetto, perciò sono stati esclusi.
4.2.1 – HTML5
HTML5 è un linguaggio di markup (HyperText Markup Language) per la
progettazione di pagine e applicazioni Web che si propone come evoluzione
delle tecnologie HTML4 e XHTML. Attualmente alle ultime fasi di
definizione, il rilascio finale, ovvero la Raccomandazione W3C19, è
19 - World Wide Web Consortium. http://www.w3.org/
87
5.4 – JQuery Mobile
JQuery Mobile42 è un framework Web annunciato nell’agosto del 2010 che
consente di realizzare applicazioni cross-platform per dispositivi mobili, sia
tablet che smartphone, e supporta una gran varietà di piattaforme. È uno
strumento efficace che mette a disposizione diversi widget grafici il cui
layout è studiato appositamente per le applicazioni mobili e realizza le
proprie funzionalità sulla base della libreria JQuery, proprio come Kendo UI
Mobile e jQTouch (che qui però non è stato preso in considerazione in
quanto non è un vero e proprio framework ma piuttosto un plugin). A
disposizione degli sviluppatori non viene messa una API JavaScript quindi
dovranno utilizzare le funzionalità messe a disposizione da JQuery. È un
framework che trae il massimo beneficio dalle caratteristiche di HTML,
consentendo, tramite Progressive Enhancement, di realizzare interfacce
grafiche accessibili sia da desktop che da mobile anche in dispositivi
dall’hardware limitato. Lo sviluppo di alcuni semplici test ha sottolineato
una curva di apprendimento molto rapida; infine, basta relativamente poco
codice per realizzare semplici applicazioni.
Look & Feel e personalizzazione:
I widget disponibili risultano molto curati ed il L&F è ottimizzato per le
applicazioni mobili, senza tuttavia senza simulare quello delle piattaforme
native attraverso il CSS. Di conseguenza, il layout ed il L&F della UI vengono
mantenuti uguali nelle diverse piattaforme e nei diversi browser supportati,
con al massimo leggere differenze. Insieme al framework vengono forniti 5
temi di base che lo sviluppatore può utilizzare direttamente. L’uso del tema
nello specifico widget o nell’intera applicazione si attua attraverso l’aggiunta
della proprietà data-theme=“nome-tema” al DOM HTML. Non vengono
forniti temi che simulano il L&F della piattaforma, ma questi possono essere
42 - http://jquerymobile.com/
88
creati ad hoc e ne esistono numerose versioni liberamente scaricabili. Sono
moltissimi i widget, i controlli e le icone incluse con il framework e a
disposizione dello sviluppatore per implementare l’interfaccia grafica. La
qualità dei widget è molto buona, ma leggermente inferiore rispetto ad altri
framework come Sencha Touch o Kendo UI Mobile. Le animazioni
disponibili per il cambio di vista sono diverse tra cui: slide, flip, pop, turn,
flow e fade. Nel complesso risultano molto curate, tuttavia personalizzabili
dallo sviluppatore solo attraverso la modifica diretta del CSS.
La personalizzazione dell’interfaccia grafica può essere fatta attraverso il
tool online ThemeRoller43, il quale consente di modificare facilmente i
diversi aspetti dell’interfaccia e dei widget grafici, tra cui i colori, il tipo e la
dimensione dei font, oltre all’arrotondamento dei bottoni. Una pratica
funzionalità consente di esportare la personalizzazione come file CSS, sarà
però poi compito dello sviluppatore integrarlo nell’applicazione. In ogni
caso, ThemeRoller risulta ben fatto, estremamente semplice da utilizzare e
completo. Inoltre, a disposizione degli sviluppatori è presente anche un tool
online per la realizzazione dell’interfaccia grafica tramite drag-and-drop dei
widget, sviluppato da Codiqa44. Questo strumento è utilizzabile anche sul
sito ufficiale di JQuery Mobile, tuttavia mancano alcune funzionalità
disponibili solo nella versione a pagamento. I risultati sono nel complesso
molto buoni ed è presente la possibilità di personalizzare i widget grafici
attraverso i parametri disponibili.
Prestazioni:
La fluidità dell’interfaccia è nel complesso molto buona, ma è migliorabile
dal momento che alcune transizioni appaiono meno fluide di altre e in certi
casi la risposta all’input degli utenti è troppo lenta; JQM viene infatti
criticato per le sue performance variabili a seconda della piattaforma. Date
43 - http://themeroller.jquerymobile.com/ 44 - https://codiqa.com/
89
le dimensioni particolarmente contenute dei file (CSS e JavaScript) che
compongono la libreria, il caricamento dell’applicazione risulta tra i più
veloci. Questo è un punto particolarmente importante visto che JQuery
Mobile supporta un gran numero di piattaforme e dispositivi anche con
hardware obsoleto e risulta molto comodo nel caso l’utente stia utilizzando
una connessione di rete 3G/4G a pagamento. JQuery Mobile offre un tempo
d’inizializzazione largamente inferiore a tutti gli altri framework date le sue
dimensioni ridotte.
Possibilità di sviluppo cross-platform e supporto dispositivi:
Il supporto alle diverse piattaforme e a browser alternativi, sia desktop che
mobile, è eccellente: Android, Apple iOS, Blackberry, Windows Phone,
webOS, Bada, Brew, Symbian, Meego, Tizen, dispositivi ebook-reader,
Mozilla Firefox e Opera. Si precisa che il livello di fluidità dell’interfaccia
non si mantiene costante in tutte le piattaforme, ma le più utilizzate (iOS,
Android, Blackberry e Windows Phone) hanno una buona ottimizzazione ed
una UX consistente. Inoltre, è garantito un ottimo supporto ai dispositivi
mobili quali tablet e smartphone. Il framework si fa carico di gestire la
disposizione degli elementi e di gestire automaticamente il cambio
orientamento del dispositivo sia in portrait che in landscape.
Funzionalità:
Il framework è stato realizzato sulla base della libreria JQuery e fornisce allo
sviluppatore solamente i widget grafici per realizzare l’interfaccia utente
dell’applicazione. Nel caso in cui si debba ricorrere a funzionalità specifiche
che automatizzano certe operazioni, lo sviluppatore può ricorrere alla stessa
libreria JQuery o utilizzarne altre a proprio piacimento. Dato il suo forte
legame con JQuery, vi sono a disposizione un gran numero di plugin che
consentono di estenderne le funzionalità in maniera semplice tra cui:
internazionalizzazione, SplitView, integrazione delle mappe e Swipe to
90
delete. Nel caso in cui si vogliano utilizzare le funzionalità di HTML5 tra cui
Web Socket, Web Storage e Offline Web Application bisogna ricorrere
all’API messa a disposizione dal browser o a JQuery, dato che JQM non
fornisce alcun supporto. A differenza di altri framework, non viene fornito
un SDK45 di supporto allo sviluppo, perciò è compito dello sviluppatore farsi
carico completo di tutte le operazioni che riguardano la realizzazione
dell’applicazione. Inoltre, non è previsto il supporto al pattern architetturale
MVC, con lo svantaggio di creare applicazioni potenzialmente più difficili da
manutenere. Infine, viene però garantito il supporto a PhoneGap (illustrato
alla sezione 5.8) per la realizzazione di applicazioni ibride che possano
essere installate nel dispositivo e che consentono di accedere alle
caratteristiche native della piattaforma.
Documentazione:
La documentazione disponibile sul sito Web di JQuery Mobile è
particolarmente dettagliata, ben strutturata e facilmente comprensibile.
Ogni widget viene appropriatamente descritto, ne vengono elencate le
opzioni di configurazione, i metodi disponibili e gli eventi asincroni con cui
interagisce. Tra i framework valutati la documentazione fornita
direttamente dal sito ufficiale è fra le migliori. Inoltre, facendo qualche
ricerca sul Web si trovano moltissime risorse quali: tutorial, guide, esempi
d’uso e, infine, vi sono moltissimi libri disponibili su JQuery e JQuery
Mobile.
Comunità:
La comunità di sviluppo è molto valida e sviluppata, anche al fatto che si
basa su JQuery e la sua filosofia open source. È disponibile un forum di
45 - Un software development kit (SDK, traducibile in italiano con "pacchetto di sviluppo per software"), indica genericamente un insieme di strumenti per lo sviluppo di software ed è tendenzialmente composto almeno da: un compilatore (per tradurre il codice sorgente in un eseguibile), librerie standard dotate d’interfaccia, documentazione e licenze.
91
supporto allo sviluppo che risulta essere molto frequentato, curato,
aggiornato e le risposte ai quesiti arrivano molto velocemente. Non è
disponibile una roadmap pubblica, ma la frequenza di aggiornamenti e di
correzione dei bug è molto buona.
Licenza e supporto a pagamento:
Viene distribuito gratuitamente attraverso la licenza open source permissiva
MIT la quale permette di agevolare la realizzazione di progetti commerciali
rispetto a licenze più restrittive. Per gli sviluppatori non viene fornito un
supporto pagato, tuttavia vista la quantità di documentazione disponibile, la
comunità che vi gira attorno e l’ottimo forum ufficiale, l’indisponibilità del
supporto a pagamento non è un elemento così importante.
5.5 – Kendo UI Mobile
Kendo UI Mobile46 è un framework Web che consente di realizzare
applicazioni mobili cross-platform, sia per tablet che per smartphone. Come
JQuery Mobile basa le proprie funzionalità sulla libreria JQuery, la quale
viene estesa fornendo allo sviluppatore una API JavaScript che include
diverse altre funzionalità. Consente infatti di realizzare interfacce grafiche
accessibili sia da desktop che da mobile e, in quest’ultimo caso riesce a
simulare molto bene il L&F della piattaforma. Nel complesso il framework di
sviluppo è suddiviso in 3 parti.
Kendo UI Web: per la realizzazione d’interfacce Web evolute ed
ottimizzate per il mondo dei browser desktop;
Kendo UI Dataviz: collezione di widget per la presentazione dei dati
attraverso differenti diagrammi e grafici;
46 - http://www.telerik.com/kendo-ui
99
Comunità:
La comunità di sviluppo è quasi assente, inoltre i tre soli aggiornamenti
effettuati hanno richiesto diverso tempo prima di essere rilasciati ed hanno
apportato un numero estremamente ridotto di novità. Ad esempio l’ultima
versione, la 2.0 introduce il supporto ad iOS7 e alcune importanti correzioni
ad Espresso, correzioni che hanno atteso più di tre mesi per essere rilasciate.
È presente un forum basato su Google Group, ma è poco frequentato e la
qualità delle informazioni disponibili è veramente molto scarsa. In definitiva
il framework risulta poco supportato e non vi è alcuna garanzia di continuità
nello sviluppo e manutenzione dello stesso.
Licenza e supporto a pagamento:
Il framework viene distribuito gratuitamente sia per applicazioni personali
che per quelle a carattere commerciale ed utilizza la licenza open source
permissiva MIT. Per gli sviluppatori che si appoggiano a questo framework è
presente il supporto a pagamento offerto da Panacoda53, l’azienda che ha
avviato e supporta lo sviluppo del framework.
5.7 – Sencha Touch
Il framework Sencha Touch54 giunto alla versione 2.3.1, è uno tra i primi
Web framework per lo sviluppo di applicazioni mobili cross-platform e
fornisce supporto alle funzionalità di HTML5. A partire dalla seconda
versione è stato interamente riscritto prendendo come base la ben più
evoluta, solida e diffusa Sencha Ext JS55 per lo sviluppo di RIA desktop.
Questa scelta si è rivelata particolarmente buona in termini di funzionalità
disponibili, solidità, facilità di manutenzione e omogeneità per quegli
53 - http://www.panacoda.com/ 54 - http://www.sencha.com/products/touch/ 55 - http://www.sencha.com/products/extjs/
100
sviluppatori che devono ricorrere ad entrambi i framework. Sencha Touch
mette a disposizione una vastissima API JavaScript, sia in termini di widget
grafici che di funzionalità utili alla realizzazione di applicazioni mobili.
L’applicazione viene definita all’interno di un’unica pagina Web
(index.html) dove il DOM della pagina HTML viene modificato
dinamicamente attraverso gli oggetti creati dall’API JavaScript in relazione
ad eventi temporali o generati dall’interazione dell’utente. Il framework è
stato strutturato in stretta aderenza con il pattern architetturale MVC. Ciò
rende il codice più facile da manutenere, oltre ad essere meglio organizzato e
più pulito. Tra i framework analizzati risulta quello più versatile, anche se
con una delle curve di apprendimento più impegnative. Tuttavia, una volta
studiato ed appreso il funzionamento, il framework consente di realizzare
applicazioni mobili di una certa complessità. La realizzazione di alcuni
semplici test dopo una fase di studio ed avvio più lunga rispetto agli altri
concorrenti, ha permesso di valutare molto positivamente le capacità del
framework. Infine, viene garantito il supporto a PhoneGap (illustrato nella
sezione 5.8) per la realizzazione di applicazioni ibride da distribuire
attraverso i canali ufficiali, oltre che consentire l’accesso alle funzionalità
native dei dispositivi mobili.
Look & Feel e personalizzazione:
A disposizione dello sviluppatore sono presenti un gran numero di widget
grafici e icone con i quali creare le UI, ed il loro L&F è stato ottimizzato per
l’uso con dispositivi dotati di touchscreen, come ad esempio bottoni più
grandi che si adattano alla dimensione dello schermo. La user experience
restituita dai widget è tra le migliori tra i framework esaminati, non al livello
delle applicazioni native, ma certamente di buona qualità. Inoltre, è uno dei
pochi framework che si comporta consistentemente nel caso di widget fissi,
come ad esempio la toolbar mentre viene fatto lo scroll di una lista. Il tema
predefinito viene utilizzato indipendentemente dalla piattaforma in cui
101
viene eseguita l’applicazione, quindi non si adatta, come nel caso di Kendo
UI Mobile, con la funzionalità Adaptive Rendering. Le animazioni
disponibili sono molteplici, molto curate, ed è possibile personalizzarne il
comportamento attraverso l’API JavaScript. L’unico modo di personalizzare
il tema dell’applicazione invece è ricorrere alla modifica diretta dei file CSS.
In questo caso, l’integrazione con Sass56 semplifica le modifiche, ma non ha
stessa efficacia di uno strumento dedicato. Inoltre, restano comunque poche
le opzioni messe a disposizione dal framework, attraverso Sass, per la
personalizzazione dell’applicazione. Tutt’altro discorso è quello relativo allo
strumento Sencha Architect57, disponibile a pagamento, che offre la
possibilità di realizzare l’interfaccia grafica dell’applicazione tramite drag &
drop, selezione di elementi etc., sia desktop che mobile, e fornisce tutte le
funzionalità tipiche di un ambiente di sviluppo integrato. Il codice creato per
l’interfaccia grafica risulta chiaro e ottimizzato, anche se ci sono delle
limitazioni, come l’utilizzo del drag & drop che non permette di posizionare
in certi contesti alcuni widget (ad es. dei bottoni in una lista); queste
limitazioni possono comunque essere aggirate attraverso la modifica diretta
del codice.
Prestazioni:
Le interfacce e gli effetti grafici, come ad esempio le animazioni per simulare
il cambio vista nell’applicazione, risultano particolarmente fluide. Il lavoro
di ottimizzazione e l’uso dell’accelerazione hardware rendono l’interazione
con l’applicazione estremamente positiva. L’unica nota negativa riguarda le
dimensioni molto elevate della libreria (CSS e JavaScript), cosa che aumenta
il tempo di download e di avvio dell’applicazione. L’uso della funzionalità
offline di HTML5 consente di memorizzare tutti i file dell’applicazione Web,
tuttavia richiede di effettuare il download della libreria al primo utilizzo.
56 - http://sass-lang.com/ 57 - http://www.sencha.com/products/architect/
102
Possibilità di sviluppo cross-platform e supporto dispositivi:
Le piattaforme mobili supportate dal framework sono Apple iOS, Android e
RIM Blackberry, perciò anche in questo caso l’ottimizzazione è focalizzata
sui browser basati su WebKit. Nel futuro è previsto il supporto a Microsoft
Windows Phone 8 e ad Internet Explorer 10 Mobile. Una delle proprietà più
utili del framework è l’indipendenza dalla risoluzione, perciò è possibile
realizzare applicazioni che funzionano e si adattano a seconda della
dimensione dello schermo del dispositivo. Sarà compito del framework
armonizzare il layout e la visualizzazione dei widget presenti. Lo
sviluppatore può modificare il comportamento di default realizzando nella
stessa applicazione interfacce grafiche specifiche che dipendono dal
dispositivo in cui verranno visualizzate. Sarà compito del framework
determinare il dispositivo mobile in cui viene eseguita l’applicazione,
selezionare e visualizzare l’interfaccia che lo sviluppatore ha definito per
quella tipologia di dispositivo.
Funzionalità:
Le funzionalità messe a disposizione dello sviluppatore sono innumerevoli:
la gestione degli eventi multi-touch (single tap, double tap, rotate, pinch,
swipe e scroll), accesso e manipolazione del DOM, supporto facilitato ad
HTML5, comunicazione asincrona attraverso AJAX, widget grafici, gestione
dei dati attraverso il data binding, più di 300 icone disponibili e, inoltre,
dalla versione 2.1 la possibilità di realizzare diagrammi di diverse tipologie e
con i quali l’utente può interagire. Le funzionalità del framework sono ben
strutturate attraverso l’uso dei namespace, cosa che consente di raccogliere
ed organizzare insieme funzionalità correlate. Sencha Touch risulta difficile
da integrare con altre tecnologie e librerie, anche se sono molto rare le
situazioni in cui è necessario ricorrere a strumenti esterni dato l’ampio
numero di funzionalità messe a disposizione. Una nota negativa riguarda
l’assenza di supporto all’internazionalizzazione, per la quale lo sviluppatore
103
deve attuare dei workaround client-side. Con la versione 2.0 viene messo a
disposizione dell’utente un pratico SDK che consente di automatizzare certe
operazioni tra cui: la creazione di una nuova applicazione, l’aggiunta di
componenti in relazione al pattern architetturale MVC, la manutenzione
delle applicazioni, la minimizzazione e compressione del codice generato e la
generazione di applicazioni ibride. L’ultimo punto in particolare consente la
creazione di applicazioni da distribuire attraverso gli app store delle relative
piattaforme: alla versione 2.1 sono supportate Apple iOS e Android. Da
notare che Sencha Touch fornisce l’accesso alle caratteristiche native del
dispositivo, ma questa funzionalità soffre di alcuni problemi come quelli per
l’uso della fotocamera in dispositivi tablet, perciò per creare applicazioni
ibride si consiglia di utilizzare PhoneGap (illustrato alla sezione 5.8).
Documentazione:
La documentazione ufficiale disponibile sul sito Web è molto dettagliata,
ben strutturata e facilmente comprensibile. In particolare la
documentazione sulle API è estremamente dettagliata: ogni funzionalità e
widget presente viene descritto attentamente in termini di proprietà,
metodi, variabili Sass per la personalizzazione, eventi a cui il widget
risponde e configurazione iniziale. Molto utile risulta la possibilità di
visualizzare direttamente il widget nella documentazione, oltre a poterlo
modificare valutandone immediatamente le modifiche apportate. Inoltre,
sempre sul sito Web ufficiale si trovano moltissime altre risorse quali:
tutorial, guide, esempi d’uso. Inoltre, vi sono moltissimi libri disponibili su
Sencha Ext JS e Sencha Touch. Perciò, in termini quantitativi la
documentazione sul framework risulta molto ampia, seconda solamente a
JQuery Mobile, facilitando lo studio e l’approfondimento da parte degli
sviluppatori.
104
Comunità:
La comunità di sviluppo non raggiunge la dimensione di quella di JQuery
Mobile, ma certamente è valida e molto ampia. È disponibile un forum di
supporto allo sviluppo, che risulta essere molto frequentato, curato,
aggiornato e le risposte, senza supporto a pagamento, arrivano in media
entro 2-3 giorni lavorativi. Molto interessante risulta il blog ufficiale che
consente di avere utili informazioni sugli aggiornamenti del framework, dato
che non è disponibile una roadmap pubblica. La correzione dei bug è molto
rapida.
Licenza e supporto a pagamento:
Sencha Touch viene distribuito gratuitamente attraverso due tipologie di
licenze: GNU GPLv3 e commerciale. Per gli sviluppatori che si appoggiano al
framework attraverso la versione commerciale è presente anche il supporto
a pagamento che risulta molto veloce e di una certa qualità.
5.8 – PhoneGap: collegare le applicazioni web-based
e i dispositivi mobili
PhoneGap58, chiamato anche Apache Cordova, è a sua volta un framework,
open-source rilasciato con licenza Apache License v2.0, che permette di
creare applicazioni mobili ibride partendo da applicazioni sviluppate con
tecnologie Web quali JavaScript, HTML5 e CSS3. Viene menzionato in
questa sede poiché è una risorsa estremamente importante per consentire
alle applicazioni Web-based, realizzate attraverso i framework trattati in
precedenza di accedere pienamente a tutte le potenzialità di uno SMD. La
possibilità di sfruttare PhoneGap sarà quindi un valore aggiunto da
considerare nella valutazione del framework da utilizzare. 58 - http://phonegap.com/
105
La figura 13 mostra il processo di creazione di un’applicazione ibrida con
PhoneGap, attraverso il servizio PhoneGap Build59 di Adobe, partendo da
un’unica base di codice (single code base), come quelle realizzate attraverso
framework appositi.
Figura 13 - Processo di creazione di un'applicazione ibrida con PhoneGap [Fonte: www.phonegap.com]
PhoneGap supporta molto bene i sistemi operativi attualmente più diffusi:
Apple iOS, Android, Microsoft Windows Phone e RIM Blackberry, oltre a
webOS, Bada, Symbian e Tizen. Il framework non effettua una conversione
del codice JavaScript in codice nativo (Objective-C per iOS e Java per
Android), ma incapsula l’applicazione Web legandola al browser disponibile
nella piattaforma che si occuperà di visualizzarla ed eseguirla l’applicazione,
con il vantaggio di poter accedere alle risorse native del dispositivo quali: file
system, fotocamera, accelerometro, geolocalizzazione, notifiche push,
vibrazione, magnetometro, contatti e network. In breve, attraverso la 59 - https://build.phonegap.com/
106
Webview del browser e la libreria PhoneGap che agisce da ponte (Web -
Native), gli sviluppatori possono accedere alle risorse native della
piattaforma con il solo linguaggio JavaScript. La figura 14 mostra le
funzionalità native di ogni piattaforma accessibili attraverso PhoneGap.
Figura 14 - Funzionalità native delle piattaforme accessibili attraverso PhoneGap [Fonte: www.phonegap.com]
Come si può vedere, i sistemi operativi completamente supportati sono
anche i più diffusi (iOS, Android e Windows Phone). L’accesso alle risorse
della piattaforma mobile è semplice e si basa su chiamate asincrone
(effettuate dal framework) con funzioni di callback definite dallo
sviluppatore e registrate presso il framework. Inoltre, PhoneGap ha il
grande vantaggio di essere facilmente estensibile attraverso la creazione di
Plugin per rendere disponibili nuove funzionalità.