Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il...

49
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

Transcript of Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il...

Page 1: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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

Page 2: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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;

Page 3: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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]

Page 4: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 5: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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

Page 6: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 7: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 8: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 9: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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/

Page 10: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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

Page 11: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 12: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 13: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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).

Page 14: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 15: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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

Page 16: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 17: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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

Page 18: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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

Page 19: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 20: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 21: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 22: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 23: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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).

Page 24: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 25: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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

Page 26: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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;

Page 27: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 28: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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]

Page 29: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 30: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 31: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 32: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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

Page 33: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

goy
Linea
Page 34: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 35: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 36: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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/

goy
Linea
Page 37: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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/

Page 38: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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/

Page 39: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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

Page 40: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 41: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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

goy
Linea
Page 42: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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/

goy
Linea
Page 43: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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

Page 44: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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/

Page 45: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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

Page 46: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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.

Page 47: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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/

Page 48: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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/

Page 49: Università degli Studi di Torinogoy/materiale/1516/estrattoTesiSpadaccia.pdf · Android con il 40.9%, Apple iOS e Blackberry OS mantengono pressoché invariata la loro quota ed infine,

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à.