SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
  
Linguaggi e piattaforme per lo
sviluppo di applicazioni mobile.
 
 
 
Università Politecnica delle Marche 
Tesina corso Tecnologie per i Sistemi informativi  
Michele Agostini 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Abstract​: ​Analisi e confronto delle principali metodologie di programmazione e                   
piattaforme per lo sviluppo di applicazioni per dispositivi mobili. 
 
 
 
 
 
 
 
 
 
 
Indice 
 
 
1. Introduzione​ ​e​ ​Stato dell’arte ………………………………… pag.2 
 
2. Obiettivi ………………………………………………….……….. pag.5 
 
3. Analisi delle metodologie di programmazione …….……… pag.6 
 
3.1. Introduzione 
3.2. Definizione 
3.3. Cosa ne pensano gli sviluppatori? 
3.4. Caratteristiche metodologiche 
3.5. Conclusioni 
 
4. Analisi delle piattaforme CPT prescelte …………….…….. pag.15 
 
4.1. Criteri di analisi  
4.2. Elenco delle piattaforme prese in esame 
4.3. Analisi delle piattaforme prescelte 
4.4. Tabella comparativa 
 
5. Conclusioni …………………………………………………….. pag.34 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 
1. Introduzione e Stato dell’arte 
 
In questa tesina ci si addentrerà nel mondo dei dispositivi mobili, una delle                         
maggiori rivoluzioni tecnologiche che la società moderna ha affrontato negli                   
ultimi anni. 
 
Dal primo cellulare venduto nel 1983 sono passati più di 30 anni e di strada                             
ne è stata fatta a livello tecnologico ed a livello di diffusione. Basti pensare                           
che solo nel 2014 sono stati venduti circa 1,3 Miliardi​[ ]
di dispositivi. Le                         
1
tecnologie mobili sono dunque diventate parte della realtà quotidiana e                   
stanno continuando a trasformare la società moderna radicalmente in ogni                   
settore. Ben comprensibile è dunque l’attenzione e gli sforzi che questi                     
sistemi stanno attraendo. 
 
In questa tesina ci si interesserà dal punto di vista tecnologico dello                       
sviluppo di applicazioni per dispositivi mobili, uno dei principali motivi di                     
interesse e diffusione. Si andranno ad analizzare i principali sistemi                   
disponibili sul mercato, con un focus particolare sulle metodologie di                   
sviluppo e su alcune specifiche piattaforme per gli sviluppatori, selezionate                   
in base a specifici criteri, fra le tantissime disponibili ad oggi. 
 
Il mercato dei cosiddetti smartphone risulta sì eterogeneo come opzioni,                   
ma sono facilmente individuabili dei competitors che stanno dominando la                   
scena, fra questi verranno presi in considerazione in questo elaborato i                     
primi tre: Android, IOS e Windows Phone, che insieme detengono circa il                       
99%​[1]​
 del mercato. 
 
1 ​ Fonte:  IDC Worldwide Quarterly Mobile Phone Tracker, February 24, 2015 
2 
 
Fig.1 ­ IDC Worldwide Quarterly Mobile Phone Tracker, February 24​th​
, 2015 
 
 
Risulta quindi importante a questo punto introdurre le tre principali                   
metodologie di programmazione identificate: 
 
1. Metodologie di sviluppo Native 
2. Metodologie di sviluppo Cross­Platform/Hybrid 
3. Metodologie di sviluppo Web 
 
La scelta della metodologia è, ad oggi, una delle prime e più importanti                         
questioni che si pongono dinanzi ad uno sviluppatore, dalla quale                   
dipendono molte successive implicazioni. 
 
Si procederà quindi ad un’analisi delle caratteristiche di queste                 
metodologie, individuandone pregi e difetti in modo da poter effettuare una                     
scelta ponderata. Si passerà poi allo studio approfondito di alcune                   
specifiche piattaforme di sviluppo fra le quali i developers possono                   
3 
scegliere per implementare i loro lavori. Verrà effettuata anche una “prova                     
sul campo” con l’implementazione di una semplice applicazione attraverso                 
le varie piattaforme per “stressarle” e conoscere al meglio il loro                     
comportamento. 
 
Si può anticipare che la scelta della metodologia di sviluppo e della singola                         
piattaforma risulta una delle questioni di principale interesse e dalla                   
risposta più incerta fra gli sviluppatori ad oggi. Non a caso vi si riferisce                           
spesso come uno “​stalemate in the platform wars​” ​[ ]​
: lo stallo nella guerra                         
2
fra piattaforme. 
 
Nonostante ciò, è scopo di questo elaborato studiare le varie opzioni                     
possibili e le loro caratteristiche per dare criteri di analisi e capire quale                         
soluzione possa essere più adatta ad ogni situazione. 
 
 
 
 
 
 
 
 
 
 
 
 
2 ​Source: VisionMobile, “Developer Economics Q1 2015: State of the Developer Nation” 
4 
2. Obiettivi 
 
Analizzare le caratteristiche delle principali opzioni di sviluppo ad oggi                   
presenti sul mercato, individuarne pregi, difetti e definirne i principali ambiti                     
di utilizzo.  
 
Si procederà per prima cosa all’analisi delle caratteristiche delle tre                   
metodologie di sviluppo introdotte: Native, CPT e Web App. Queste                   
verranno approfondite accuratamente in quanto molte delle differenze dei                 
vari approcci allo sviluppo dipendono proprio da questa prima distinzione. 
Successivamente verranno definiti dei criteri di giudizio utili a classificare e                     
distinguere le piattaforme di sviluppo che nell’ultima parte dell’elaborato                 
verranno studiate e testate, attraverso indagini e l’implementazione sul                 
campo di un’applicazione di riferimento. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5 
3. Analisi delle metodologie di 
programmazione 
 
3.1 Introduzione 
Come anticipato nell’introduzione, la scelta della metodologia di sviluppo è                   
la prima scelta che un developer si trova di fronte. Probabilmente anche la                         
più importante in quanto questa opzione porta con se notevoli implicazioni                     
per il resto della fase di progettazione e sviluppo dell’applicazione. 
Ad aggiungere delicatezza alla scelta si aggiunge che ad oggi questa è una                         
delle discussioni che più divide la comunità degli sviluppatori, senza aver                     
ancora trovato opinioni concordi. Non a caso vi si riferisce spesso come                       
“​the​ ​stalemate in the platform wars​” ​[ ]​
: lo stallo nella guerra fra piattaforme. 3
Questo fatto non impedisce, però, di individuare ambiti di utilizzo                   
preferenziali e buone pratiche di programmazione per ogni metodologia                 
attraverso un’approfondita analisi delle loro caratteristiche e delle loro                 
differenze. Scopo di questa prima parte del capitolo corrente è proprio                     
quello di definire e studiare tali metodologie. 
 
3.2 Definizione 
Si procede ora alla classificazione, nella quale è possibile riconoscere tre                     
principali categorie: 
 
● Native 
● Cross Platform Tools (CPT) 
❏ Cross­Compiled 
❏ Hybrid 
● Web App 
 
3 Source: VisionMobile, “Developer Economics Q1 2015: State of the Developer Nation” 
 
6 
Come è possibile notare, la seconda categoria è a sua volta scomponibile                       
in due sotto categorie, le quali hanno qualche sfumatura di                   
differenziazione. 
 
Native 
Metodologia di sviluppo specifica per una determinata piattaforma mobile                 
(iOS, Android...) utilizzando gli strumenti di sviluppo e il linguaggio che                     
delle rispettive piattaforme (Xcode e Objective­C/Swift con iOS,               
Eclipse/AndroidStudio e Java con Android). Danno la migliore esperienza                 
utente e le migliori performance. 
 
Cross Platform Tools 
I CPT possono essere utilizzati per sviluppare, applicazioni cross­compiled                 
e web. Sono disponibili in varie sfumature tecnologiche, riferite soprattutto                   
alle famiglie di linguaggi utilizzati:   
● nel caso di applicazioni ​ibride​, l'applicazione è in effetti una web app,                       
ma ​wrappata all'interno di un container­applicazione nativo della               
singola piattaforma. È installato, avviato e utilizzato come qualsiasi                 
applicazione nativa, è scritto in HTML, JavaScript e CSS.  
● nel caso di applicazioni ​cross­compiled ci si allontana dal mondo                   
Web, si tratta di una app scritta con un linguaggio dipendente dal                       
framework prescelto (C++ o C# ad esempio). Successivamente sarà                 
compito del framework occuparsi della compilazione per le varie                 
piattaforme di deployment. 
 
Web App 
Metodologia di sviluppo basata sul mondo delle tecnologie tipiche del web:                     
generalmente viene fruito attraverso un browser web, ciò permette un                   
approccio ​write­once­run­everywhere. ​Tecnicamente si tratta della fruizione             
di un sito web ottimizzato attraverso il browser mobile, è comunque                     
possibile avere una icona dell’applicazione che tecnicamente corrisponde               
ad un bookmark stabile del browser. 
 
7 
 
 
Fig.2 ­ Schema visuale delle metodologie di sviluppo 
 
 
 
3.3 Cosa ne pensano gli sviluppatori? 
 
Prima di procedere con un confronto fra le varie metodologie si ritiene utile                         
portare all’attenzione del lettore alcuni dati sullo stato attuale dello sviluppo                     
di applicazioni nel mondo. I dati presentati provengono dal report ​“State of                       
the Developer Nation Q1 2015” redatto da ​Visual Mobile su un campione di                         
oltre diecimila developers fra 143 paesi nel mondo. 
 
Si analizzano per prima cosa i ​linguaggi maggiormente utilizzati, vengono                   
presi in considerazione sia i linguaggi “primari” che quelli utilizzati                   
secondariamente, lato device e lato server:  
8 
 
Fig.3 ­ Linguaggi Device­side maggiormente utilizzati​[ ]
 4
 
 
Fig.4 ­ Linguaggi Server­side maggiormente utilizzati​[​4​]
 
 
Concentrandosi sul lato Device­side è possibile notare come Java                 
(sinonimo di Android) la faccia da padrone sia come linguaggio primario                     
che secondario. Tale indicazione è da ricercare nella grande diffusione del                     
4
Source: Visual Mobile, State of the Developer Nation Q1 2015, February 2015. 
9 
sistema Android e nel grande numero di sviluppatori con un background di                       
conoscenze in ambito di sviluppo desktop. 
 
Altri dati significativi provengono dal dato sulla diffusione dell’HTML5,                 
seppure come linguaggio secondario. Ciò conferma il crescente interesse                 
degli sviluppatori nelle applicazioni Web e Hybrid, considerando anche il                   
fatto che molti sviluppatori sono interessati a poter riutilizzare le loro                     
precedenti esperienze in ambito Web. Seppure non sembrano ancora del                   
tutto convinti ad utilizzarlo come linguaggio primario per il mobile. 
 
Di interesse anche il dato di Swift che nonostante la sua recente                       
introduzione ha attratto su di se molte ambizioni, fra cui molte non                       
direttamente provenienti da sviluppatori precedentemente legati           
all’Objective­C, linguaggio notoriamente legato allo sviluppo in ambito IOS. 
 
Utile anche uno sguardo ai principali ​tools utilizzati dagli sviluppatori,                   
proveniente sempre dal report ​“State of the Developer Nation Q1 2015”. 
Nel grafico proposto di seguito è possibile notare come i tools                     
maggiormente utilizzati siano gli “user analytics”, strumento considerato               
sempre più fondamentale nella comprensione dei comportamenti utente e                 
nel miglioramento delle proprie applicazioni. Seguono i tools di Advertising,                   
in effetti i differenti sistemi di monetizzazione sono sempre di più al centro                         
degli studi di settore. 
Al terzo posto troviamo i ​Cross Platform Tools​, quelli di maggiore                     
interesse per lo scopo di questo elaborato, con una percentuale del 30%                       
degli sviluppatori che utilizzano tali tools. Importante notare che tale                   
percentuale è passata dal 23% al 30% solamente nell’arco degli ultimi 6                       
mesi (considerando il precedente rilevamento da parte di Visual Mobile),                   
confermando il forte trend positivo che suscitano queste tecnologie. A                   
riguardo, un altro dato risulta interessante: circa un terzo degli sviluppatori                     
che utilizzano tools cross­platform stanno sviluppando in realtà applicazioni                 
per un’unica piattaforma, dato che fà riflettere sulla piena comprensione                   
delle caratteristiche di questi tools. 
10 
 
 
Fig.5 ­ Tools di sviluppo maggiormente utilizzati​[ ]
 5
 
 
 
3.4 Caratteristiche metodologie 
 
Si procede con un confronto di “alto livello” fra le varie metodologie di                         
sviluppo, cercando di metterne in luce le principali caratteristiche attraverso                   
delle tabelle “pro e contro”. 
 
 
 
5
Source: Visual Mobile, State of the Developer Nation Q1 2015, February 2015. 
11 
Native 
Pro  Contro 
● Pieno accesso e totale 
controllo del dispositivo 
 
● Pieno accesso alla 
piattaforma di sviluppo ed alle 
APIs del sistema 
 
● Migliori prestazioni 
 
● User experience ottimizzata e 
congruente all’OS mobile 
 
● Diffusione tramite App Stores 
 
● Differenti skills necessarie per 
lo sviluppo in ogni piattaforma 
 
● Codice difficilmente 
riutilizzabile fra le varie 
piattaforme 
 
● Sviluppo cross­platform 
dispendioso per costi e tempi  
 
● Vincoli App Stores 
 
 
Web App 
Pro  Contro 
● Codice riutilizzabile, 
multipiattaforma 
 
● Aggiornamento istantaneo 
 
● Tempi/Costi di sviluppo 
 
● Possibilità di riutilizzo di siti 
web adeguatamente 
progettati 
 
● Conoscenze tecnologie Web 
molto diffuse 
 
● Accesso al dispositivo ed alle 
APIs limitato 
 
● Diffusione tramite App Stores 
assente 
 
● User experience differente dal 
OS del dispositivo 
 
● Difficoltà utilizzo app offline 
 
12 
 
CPT ­ Cross Platform Tools 
Pro  Contro 
● Codice riutilizzabile fra le 
piattaforme, multipiattaforma 
 
● Diffusione tramite App Store 
 
● User experience differente dal 
OS del dispositivo  
 
● Vincoli App Stores 
 
● Debugging cross­platform 
Hybrid 
● Vista dal dispositivo come 
app nativa e utilizzo di 
tecnologie web 
 
● Accesso al dispositivo 
estendibile tramite plugins 
● Diversa implementazione 
delle WebView fra i vari 
sistemi 
Cross­Compiled 
● Vista dal dispositivo come 
app nativa e utilizzo di 
linguaggi molto conosciuti 
 
● Ampio accesso al dispositivo  
● Possono non essere 
supportate tutte le piattaforme 
necessarie 
 
 
3.5 Conclusioni 
 
Come si è visto ogni metodologia porta con se pregi e difetti, considerando                         
anche l’elevato tasso di dinamicità di cui è caratterizzato il mondo dello                       
sviluppo mobile è facile intuire come non vi sia una strada maestra                       
unanime a cui fare riferimento. 
 
13 
Una buona conoscenza delle caratteristiche e delle differenze delle varie                   
metodologie possono però aiutare lo sviluppatore nella scelta. I criteri da                     
tenere presenti sono molteplici ed ogni situazione potrebbe avere una                   
storia a sè, ma sicuramente ce ne sono alcuni sempre validi, che vengono                         
quì riassunti. 
 
Il primo fra tutti risulta sicuramente la ​tipologia dell’applicazione. ​In                   
generale l'utilizzo degli strumenti di sviluppo nativi permette da sempre di                     
ottenere dei risultati migliori, la maggiore libertà espressiva, garanzia del                   
risultato in termini di performance e user experience, totale e libero                     
sfruttamento delle potenzialità del device. Di conseguenza queste               
caratteristiche lo rendono adatto per le applicazioni più complesse in cui                     
non è interesse scendere a compromessi nei costi e tempi di sviluppo. 
Se invece la necessità è quella di realizzare un’applicazione con elementi e                       
funzionalità standard, gli approcci Web o CPT potrebbero risultare un                   
compromesso vincente. 
È quindi essenziale conoscere bene sia le caratteristiche dell’applicazione                 
che si andrà a sviluppare sia le peculiarità di ogni metodologia. 
In questo scenario un altro criterio particolarmente importante è il                   
background conoscenze personali dello sviluppatore: la possibilità di               
riutilizzare sistemi e linguaggi di sviluppo già conosciuti, a parità di risultati,                       
può essere un fattore di non secondaria importanza. 
Tutto ciò, sempre tenendo conto naturalmente di eventuali ​vincoli                 
presentati dagli stakeholders in riferimento a tempi e costi di sviluppo o                       
funzionalità specifiche. 
 
Anche il ​target ​a cui fà riferimento l’applicazione è di notevole importanza:                       
risulta infatti inefficiente un utilizzo di strumenti CPT nel caso in cui si stia                           
sviluppando un’applicazione il cui deployment è previsto per una sola                   
piattaforma mobile. Studi​[ ] ​
dimostrano che questo aspetto non è ancora del     
               6
tutto chiaro a molti sviluppatori. 
 
6
Source: Visual Mobile, State of the Developer Nation Q1 2015, February 2015. 
14 
4. Analisi delle piattaforme prescelte 
 
4.1 Criteri di analisi 
 
Nel proseguire con lo studio ed il test delle varie piattaforme di sviluppo si è                             
ritenuto necessario fissare alcuni criteri di analisi principali tramite i quali                     
valutare e poter quindi meglio comprendere le varie opzioni. 
 
4.1.1 Criteri individuati 
● Ide, licenza e sistemi operativi supportati 
● Linguaggi di programmazione principali 
● Accesso al dispositivo ­ sensoristica 
● Deployment targets 
● Strumenti di sviluppo 
● Funzionalità specifiche 
● Gestione distribuzione 
 
È importante sottolineare come questi criteri siano siano indici qualitativi                   
utilizzati in modo indicativo e come lo studio delle piattaforme avverrà in                       
maniera approfondita caso per caso avvalendosi soprattutto della prova sul                   
campo. 
 
4.1.2 Applicazione di riferimento 
Risulta utile definire inoltre la struttura di una applicazione standard che                     
verrà realizzata attraverso le varie piattaforme. 
Una struttura ritenuta sufficientemente esplicativa, utile a capire le                 
potenzialità della piattaforma ed al tempo stesso non troppo onerosa in                     
termini implementativi e stata pensata con le seguenti caratteristiche: 
 
● semplice interfaccia grafica 
● semplici interazioni con l’utente 
15 
● utilizzo di un sensore del dispositivo 
● utilizzo di una libreria interna del dispositivo 
● interfacciamento con una API di terze parti 
 
Per rispondere a queste caratteristiche si è pensato ad un’applicazione che                     
proponga all’utente una semplice interfaccia grafica, con la possibilità di                   
relazionarcisi attraverso un pulsante che attivi una funzione per prelevare                   
la posizione dal sensore di posizione, aprire una mappa (Google Maps                     
API) in cui si riporta la rilevazione tradotta in un indirizzo ​human­readable e                         
salvi ogni check­in in un database interno all’applicazione (es. SQLite) 
 
A seguire due screenshots per dare un’idea più percisa al lettore di ciò che                           
è stato sviluppato. 
 
 
Fig.6 ­ Schermata “Home” dell’applicazione 
16 
 
   
Fig.7 ­ Schermata “Map” dell’applicazione 
 
Come si può notare si tratta di una applicazione dall’interfaccia utente                     
molto semplice: i comndi principali si accedono attraverso due bottoni                   
sempre visibili nella parte superiore della finestra. 
Nella sezione ​“Home” è presente il bottone di ​“CheckIn” tramite il quale si                         
attiva una funzione che preleva la posizione dal sensore di posizionamento                     
del dispositivo ed effettua un inserimento nel database ​SQLite​. 
Passando alla sezione ​“Map” ​viene effettuata una lettura sul database per                     
recuperare l’ultima posizione inserita, la quale attraverso una chiamata alle                   
API di ​Google Maps viene tradotta in indirizzo ​“human readable” e mostrata                       
nella mappa. 
 
17 
4.2 Elenco delle piattaforme prese in esame 
 
In riferimento alle caratteristiche presentate nel capitolo 3.2 di questo                   
elaborato risulta chiaro al lettore come gli approcci Native e Web risultino di                         
più immediata comprensione nelle conseguenze della loro scelta,               
delineando degli approcci ben definiti nelle modalità e negli strumenti. 
Al contrario la galassia delle piattaforme Cross Platform Tools merita di                     
essere approfondita ulteriormente, data la vastità delle opzioni offerte e le                     
caratteristiche peculiari che ognuna di queste scelte può offrire. 
 
Di conseguenza nel prosieguo di questo elaborato, cioè nella prova sul                     
campo delle varie piattaforme, ci si concentrerà esclusivamente sulla                 
metodologia CPT. 
 
Per fini di approfondimento risulta comunque utile riportare alcune                 
informazioni principali per le tre piattaforme di sviluppo Native principali: 
 
 
● Android 
❏ Linguaggio di programmazione: Java 
❏ Piattaforma di sviluppo: Adroid Studio o plugin Eclipse 
● IOS 
❏ Linguiaggio di programmazione: Objective C e Swift 
❏ Piattaforma di sviluppo: Xcode 
● Windows Phone 
❏ Linguaggio di programmazione: .NET 
❏ Piattaforma di sviluppo: Visual Studio 
 
 
 
 
 
18 
4.2.1 Piattaforme CPT prese in esame 
 
Il mondo CPT risulta sicuramente quello più esteso ed al suo interno più                         
diversificato, prendere in esame tutte le piattaforme disponibili risulta                 
impossibile, oltre 900 quelle censite da ​Visual Mobile​. 
È di conseguenza necessario procedere ad una scelta attraverso criteri di                     
diffusione, potenzialità tecnologiche e peculiarità specifiche. 
 
In base a questi criteri le piattaforme scelte, appartenenti sia alla categoria                       
Hybrid che Cross­compiled, risultano le seguenti: 
 
● Qt 
● Xamarin 
● Appcelerator Titanium 
● Cordova­PhoneGap 
❏ JQueryMobile 
❏ Telerik  
❏ Sencha Touch 
 
Il prossimo capitolo è dedicato all’analisi ed alla messa in opera di ciascuna                         
di queste piattaforme, non si procede pertanto in questo momento a fornire                       
ulteriori dettagli. 
 
 
 
 
 
 
 
 
 
19 
 
4.3 Analisi delle piattaforme prescelte 
 
4.3.1 Qt 
 
Introduzione Qt (da leggere “​cute​”) è un framework               
inizialmente sviluppato da ​Nokia​, acquisito negli ultimi             
anni da ​Digia Plc​. Dopo alcuni anni di “difficoltà” con il                     
distaccamento da Nokia, la scelta della strada             
CrossPlatform ed il grande sviluppo del mercato mobile, è                 
ora una delle scelte principali a cui si possono affidare i                     
developers per dispositivi mobili. 
 
Ide, licenza di utilizzo e sistemi operativi supportati 
QtCreator è l’ide di riferimento per questo framework: completo, leggero ed                     
intuitivo. È disponibile per Linux, Mac OS e Windows. 
Sono disponibili vari livelli di licenze, 3 per la precisione, che comprendono                       
una versione base ​free ​fino ad arrivare ad una versione premium che                       
prevede servizi ulteriori. Tramite la versione free ​sono comunque                   
accessibili le funzionalità offerte dalle librerie Qt. 
 
Linguaggi di programmazione principali 
I linguaggi di programmazione principali sono due: QML e C++. 
Il QML è un linguaggio dichiarativo basato su JavaScript per la definizione                       
delle interfacce. Tramite il QML si definiscono quindi i componenti                   
dell’interfaccia, le loro relazioni e anche alcune funzionalità. 
Nonostante non sia sempre necessario, non lo è stato in questo caso ad                         
esempio, è comunque possibile utilizzare componenti aggiuntivi sviluppati               
in C++ tramite la JNI (Java Native Interface). Questo permette di accedere                       
ad una enorme mole di codice già sviluppato in rete, comprendendo                     
comunque un piccolo incremento della complessita del progetto. 
20 
Accesso al dispositivo ­ sensoristica 
L’ambiente Qt è in continuo sviluppo, soprattutto nel campo mobile. Le                     
librerie sono attualmente alla versione 5.4, fino alla precedente versione                   
5.3 erano presenti alcune lacune serie per il supporto mobile. Con l’ultima                       
versione disponibile non sono emerse particolari limitazioni nello sviluppo                 
dell’applicazione di riferimento. Si ha quindi un accesso ai servizi principali                     
con i relativi moduli, ma non si ha possibilità di un accesso totale                         
(es.notifiche, battery level ecc.) a meno di un utilizzo di JNI (Java Native                         
Inferface) e la realizzazione/sfruttamento di moduli appositi. 
 
Deployment targets 
La grande varietà dei deployment targets è uno dei punti di forza di questo                           
framework. Oltre a supportare tutti i sistemi operativi mobile presi in                     
considerazione c’è anche la possibilità di sviluppare applicazioni per                 
l’ambiente desktop ed embedded. 
 
Strumenti di sviluppo 
Nella versione ​free ​l’unico strumento di sviluppo da segnalare è “Design”, il                       
quale permette la realizzazione dell’interfaccia utente tramite strumenti               
visuali tradotti successivamente in QML in maniera automatica. Non risulta                   
però particolarmente intuitivo e versatile, è quindi risultato preferibile uno                   
sviluppo di QML diretto. 
 
Funzionalità specifiche 
Nella versione ​free ​testata non sono emerse funzionalità specifiche degne                   
di nota. 
 
Gestione distribuzione 
Non sono presenti strumenti per gestire la distribuzione dell’applicazione                 
sviluppata nella versione ​free​, esiste invece la possibilità di hosting nei                     
server dei produttori con la versione ​premium​. 
 
 
21 
Tabella riassuntiva ­ Qt 
 
Qt 
Ide ­ OS supportati  QtCreator ­ Completo 
Linguaggi di programmazione  QML, C++ 
Accesso al dispositivo  Servizi Principali 
Deployment Targets  *Completo 
Strumenti di sviluppo  “Design” 
Funzionalità specifiche   / 
Gestione Distribuzione  Hosting servers (premium) 
 
*Utilizzando Qt l’accesso completo al dispositivo è possibile unicamente con l’utilizzo                     
della JNI e di moduli C++. 
 
Considerazioni dello sviluppatore 
Lo sviluppo dell’applicazione tramite questo framework è stato nel                 
complesso agevole, grazie soprattutto ad un ide semplice ed il linguaggio                     
QML intuitivo nonostante ci si trovi alla prima esperienza. Da segnalare                     
anche la presenza di una documentazione molto ampia e completa ed una                       
comunità di sviluppatori molto attiva. 
 
Nel caso di applicazioni relativamente semplici è quindi sicuramente                 
un’opzione da tenere bene in considerazione. Nel momento in cui si ha                       
necessità di utilizzare servizi non ancora supportati la situazione potrebbe                   
compromettersi. 
Necessita di attenzione la fase di installazione e setup del framework. 
 
 
 
22 
4.3.2 Xamarin 
 
Introduzione 
Xamarin è sviluppato sulle basi del framework open               
source Monodevelop, al quale sono stati aggiunti             
numerosissimi servizi e moduli per lo sviluppo mobile. 
 
 
 
Ide, licenza di utilizzo e sistemi operativi supportati 
Xamarin ha un suo ide di riferimento che è XamarinStudio, può altresì                       
essere facilmente utilizzato tramite altri ide, specialmente VisualStudio di                 
Microsoft per gli sviluppatori già familiari con questo strumento.  
Xamarin propone 3 livelli di licenze, ma sfortunatamente nessuna di queste                     
prevede una opzione ​free​, escluso il periodo di prova di 30 giorni. Inoltre                         
non è previsto il supporto per gli ambienti di sviluppo Linux, aspetto che                         
potrebbe disincentivare clienti appartenenti a questa categoria.  
 
Linguaggi di programmazione principali 
Xamarin si basa sull’utilizzo del linguaggio C# per definire la logica delle                       
applicazioni, appoggiandosi al linguaggio AXML (Active XML) per               
descrivere le interfacce. 
 
Accesso al dispositivo ­ sensoristica 
L’accesso a tutti gli elementi del dispositivo risulta davvero efficace con                     
questo framework, in quanto vengono sfruttate le interfacce native dei vari                     
OS. Questo permette di accedere praticamente ad ogni servizio, di ogni                     
livello, offerto dal dispositivo. Questo è un grande vantaggio di questa                     
piattaforma, anche se ciò implica che in un deploy crossplatform ci sia una                         
(piccola) parte di codice che è necessario riscrivere o aggiuntive. Oltre alle                       
interfacce native sono a disposizione dello sviluppatore anche molti moduli                   
sviluppati da Xamarin. 
 
23 
Deployment targets 
Xamarin offre il supporto per un deployment sia in ambito mobile che                       
desktop. Nel caso specifico da segnalare la possibilità di sviluppare anche                     
per dispositivi ​wearable​ come gli smartwatch. 
 
Strumenti di sviluppo 
Numerosi sono gli strumenti di sviluppo disponibili per il developer, questo                     
è un grande vantaggio di questa piattaforma.  
Oltre ad una efficiente interfaccia visuale per costruire la UI                   
dell’applicazione, dinamicamente tradotta in AXML, sono molti i moduli                 
aggiuntivi messi a disposizione dal framework o disponibili nel Market                   
Place. Alcuni di questi moduli ulteriori sono a pagamento, ma potrebbero                     
risultare davvero molto utili nello sviluppo di applicazioni in ambito                   
enterprise. Fra questi moduli se ne possono citare alcuni come PayPal,                     
Facebook o Amazon, senza considerarne tantissimi altri non specifici, ma                   
utili nello sviluppo di qualsiasi applicazione. 
 
Funzionalità specifiche 
Da segnalare due funzionalità notevoli di questa piattaforma: Xamarin                 
TestCloud e Xamarin Insights.  
TestCloud permette di ampliare le proprie possibilità nella fase di testing                     
tramite il caricamento dell’applicazione in un server ed il deploy virtuale in                       
oltre 1000 dispositivi dalle più svariate caratteristiche hardware e software.                   
Cosa che chiaramente non sarebbe possibile effettuare con la stessa                   
efficacia se la fase di testing fosse fatta dallo sviluppatore con i dispositivi                         
hardware a disposizione. Con la possibilità di ricevere reports, screenshots                   
e analisi delle performance. 
Insights è un sistema di monitoring real­time delle attività degli utenti,                     
tramite reports sull’utilizzo dell’applicazione, eventuali crash o warnings. 
Risulta di immediata comprensione la grande utilità di questa funzionalità, è                     
da segnalare però che tali funzioni sono disponibili tramite la stipulazione di                       
abbonamenti aggiuntivi oltre alla licenza d’uso del framework stesso. 
 
24 
Gestione distribuzione 
Non sono presenti strumenti per gestire la distribuzione dell’applicazione                 
sviluppata. 
 
Tabella riassuntiva ­ Xamarin 
Xamarin 
Ide ­ OS supportati  XamarinStudio ­ NO Linux 
Linguaggi di programmazione  C#, AXML 
Accesso al dispositivo  Completo 
Deployment Targets  Mobile, Desktop 
Strumenti di sviluppo  Numerosi Moduli aggiuntivi 
Funzionalità specifiche   TestCloud, Insights 
Gestione Distribuzione  / 
 
 
Considerazioni dello sviluppatore 
Tramite Xamarin si è riusciti agevolmente a raggiungere le specifiche                   
dell’applicazione di riferimento. L’interfaccia nativa con i componenti del                 
dispositivo ed i numerosi moduli aggiuntivi a disposizione rendono molto                   
efficiente lo sviluppo. È probabilmente la piattaforma più completa di quelle                     
testate in questo elaborato. 
Da tenere bene in considerazione però il fatto che si tratta di un framework                           
utilizzabile nella pratica unicamente tramite pagamento ed anche le                 
funzionalità specifiche e molti moduli prevedono un pagamento ulteriore.                 
Nota negativa anche il mancato supporto per gli ambienti di sviluppo Linux,                       
per un servizio così efficiente e completo equivale a perdersi in un bicchier                         
d’acqua. 
 
 
25 
 
4.3.3 Appcelerator 
 
Introduzione 
Appcelerator è un framework molto ampio che             
offre molte strade per lo sviluppo delle applicazioni               
mobile. Opzioni che si adattano a diverse strade di                 
progettazione, ma fra le quali non è sempre facile                 
orientarsi. 
 
Nota: 
Le due strade principali che Appcelerator prevede attualmente per lo sviluppo sono                       
quella Classic o tramite l’SDK Titanium. Inizialmente è sembrata più congeniale a                       
questo progetto la scelta Classic, basata sulle tecnologie Web, ma tale scelta si è poi                             
rivelata fallimentare. Di conseguenza ulteriori prove, senza produrre un’applicazione                 
completa, ma verificando unicamente la possibilità di implementare le specifiche, sono                     
state fatte tramite l’SDK Titanium. Titanium è caratterizzato a sua volta dall’utilizzo di                         
Alloy, un framework MVC basato su Javascript. 
Caratteristiche delle due possibilità ed ulteriori spiegazioni seguono nell’analisi della                   
piattaforma. 
 
Ide, licenza di utilizzo e sistemi operativi supportati 
Appcelerator ha un suo ide di riferimento che è AppceleratorStudio, può                     
altresì essere facilmente utilizzato tramite altri ide come Eclipse. 
Appcelerator prevede vari livelli di licenza, ma nessuno ​free​, escluso il                     
periodo di prova di 90 giorni. È disponibile per tutti gli ambienti di sviluppo:                           
Linux, Mac e Windows. 
 
Linguaggi di programmazione principali 
Il linguaggio principale di Appcelerator è sicuramente il JavaScript con cui                     
si definisce gran parte dell’applicazione, dopodiche i due sviluppi ​Classic e                      
con la SDK ​Titanium (o ​Alloy​) ​si differenziano per per l’utilizzo dell’HTML il                         
primo e dell’XML il secondo. 
 
26 
 
Accesso al dispositivo ­ sensoristica 
Nella fase di accesso al dispositivo si sono evidenziate tutte le difficoltà e                         
mancanze dello sviluppo tramite il metodo ​Classic. ​Complice anche una                   
documentazione vetusta e una community scarsamente attiva, trovare i                 
relativi moduli, risolvere le ambiguità fra le varie versioni dei moduli                     
disponibili è stato un ostacolo serio. Si è deciso di conseguenza di                       
abbandonare questa strada, come fra l’altro gran parte degli sviluppatori di                     
Appcelerator sembra aver scelto da tempo. 
Discorso diverso invece con l’utilizzo dell’SDK ​Titanium ed il framework                   
Alloy​: la documentazione ampia ed aggiornata, una community vivace e la                     
grande disponibilità di moduli ha permesso di verificare agevolmente la                   
soddisfazione delle specifiche tramite diversi singoli esempi. L’applicazione               
completa non è stata completamente sviluppata di nuovo per soddisfare la                     
struttura MVC di ​Alloy​. 
 
Deployment targets 
Appcelerator offre il supporto per un deployment sia in ambito mobile che                       
desktop.  
 
Strumenti di sviluppo 
Con riferimento all’utilizzo di ​Titanium​, da segnalare un MarketPlace con                   
numerosissimi moduli, gratis o a pagamento. 
 
Funzionalità specifiche 
Si hanno inoltre servizi aggiuntivi a pagamento come il test su una larga                         
serie di dispositivi virtuali, un efficiente sistema di insights con reporting                     
real­time e un cloud con cui gestire le varie versioni della propria                       
applicazione ed anche le sue notifiche all’utente. 
Funzionalità simili a quelle offerte dalla piattaforma Xamarin. 
 
 
 
27 
Gestione distribuzione 
Sono presenti strumenti di Hosting e versioning dell’applicazione sui server                   
di Appcelerator, ma non c’è la possibilità di gestione diretta della                     
distribuzione dell’applicazione. 
 
Tabella riassuntiva ­ Appcelerator 
Appcelerator 
Ide ­ OS supportati  AppceleratorStudio ­Completo 
Linguaggi di programmazione  JavaScritp, HTML (o XML) 
Accesso al dispositivo  Completo ­ ​Titanium 
  Scarso ­ ​Classic 
Deployment Targets  Mobile, Desktop 
Strumenti di sviluppo  Numerosi Moduli aggiuntivi 
Funzionalità specifiche   Test nel Cloud, Insights, notifiche. 
Gestione Distribuzione  Hosting e Versioning. 
 
 
Considerazioni dello sviluppatore 
Considerato lo scarso supporto e lo scarso aggiornamento per lo sviluppo                     
con il metodo ​Classic potrebbe essere forse il caso di eliminare                     
direttamente questa opzione dalla piattaforma. Dato che per applicazione                 
che vanno al di là di una semplice interfaccia in stile web tale approccio                           
risulterebbe probabilmente fallimentare. 
Con lo sviluppo in ​Titanium invece si ha uno strumento molto potente e                         
completo. A patto di essere familiari e/o disponibili ad uno sviluppo con la                         
struttura MVC. 
 
Anche per questa piattaforma, come per Xamarin, nella pratica è                   
utilizzabileunicamente dietro pagamento del servizio. 
28 
4.3.4 Cordova 
 
Introduzione 
Cordova è un progetto open­source della fondazione             
Apache, nato dal progetto Phonegap di cui ora è                 
proprietaria Adobe. I due progetti vengono spesso             
usati come sinonimi, allo stato attuale Phonegap può               
essere considerato come una distribuzione di           
Cordova con dei servizi aggiuntivi. Essendo           
comunque Cordova il progetto alla base e per la sua                   
natura open­source è stato scelto come candidato per questo progetto. 
 
Ide, licenza di utilizzo e sistemi operativi supportati 
Cordova non ha un suo ide di riferimento, per la sua gestione si fa                           
riferimento alla CLI (Command Line Interface) con la quale è possibile                     
installare Cordova e gestire i suoi plugins. È facilmente integrabile con                     
molti ide, di conseguenza lo sviluppatore può scegliere quello a lui più                       
consono. Come anticipato si tratta di un progetto open­source, disponibile                   
con licenza Apache 2.0 ed è disponibile per tutti i sistemi operativi, anche                         
per quelli attualmente meno in voga.  
 
Linguaggi di programmazione principali 
Cordova rispetta in pieno quelle che sono le classiche pratiche del mondo                       
Web, il progetto risiede addirittura nella cartella ​www ​della rispettiva                   
piattaforma rispettando anche la struttura interna delle cartelle. Da ciò                   
deriva che i linguaggi di programmazione sono in tutto e per tutto quelli                         
usati per lo sviluppo Web: Html, Css, Javascript ecc . 
 
Accesso al dispositivo ­ sensoristica 
Nello sviluppo dell’applicazione tramite Cordova non sono emerse               
particolari limitazioni nell’accesso al dispositivo. I plugins a disposizione                 
sono numerosissimi, alcuni ufficiali, molti sviluppati anche dalla community                 
29 
e la loro installazione tramite la CLI risulta agevole con un minimo di                         
familiarità con l’ambiente a riga di comando. 
 
Deployment targets 
Cordova offre ampio supporto per il deployment sia in ambito mobile che                       
desktop. 
 
Strumenti di sviluppo 
Oltre ai plugins, già citati, Cordova non fornisce altri strumenti di sviluppo,                       
considerando anche il fatto che non ha un suo ide di riferimento. Da                         
segnalare però che l’attinenza dei progetti Cordova con la struttura classica                     
di un progetto Web permette l’utilizzo di una grandissima mole di altri                       
strumenti per lo sviluppo della propria applicazione. Di particolare                 
attenzione sono gli UI Frameworks che si abbinano benissimo ad un                     
utilizzo con Cordova, permettendo uno sviluppo di interfacce utente molto                   
efficaci. Nel caso specifico di questo progetto la semplicità dell’interfaccia                   
da realizzare non ha reso conveniente l’utilizzo di questi strumenti, ma ne                       
sono stati comunque analizzati alcuni che verranno riportati in seguito in un                       
apposita sezione del documento. 
 
Funzionalità specifiche 
Non ci sono funzionalità specifiche da segnalare, se non voler rimarcare la                       
facilità di integrazione con strumenti del mondo Web che apre alla                     
possibilità di incrementare esponenzialmente le opzioni di sviluppo. 
 
Gestione distribuzione 
Non sono presenti strumenti per la gestione della distribuzione                 
dell’applicazione. 
 
 
 
 
 
30 
Tabella riassuntiva ­ Cordova 
Cordova 
Ide ­ OS supportati  / ­ Completo 
Linguaggi di programmazione  Tecnologie Web 
Accesso al dispositivo  Completo  
Deployment Targets  Mobile, Desktop 
Strumenti di sviluppo  Plugins ­ UI Frameworks 
Funzionalità specifiche   / 
Gestione Distribuzione   / 
 
Considerazioni dello sviluppatore 
Cordova può spiazzare inizialmente lo sviluppatore che si potrebbe                 
aspettare di trovarsi a disposizione un ide, mentre deve destreggiarsi con                     
la linea di comando. Una volta entrati nell’ottica giusta però risulta di una                         
agilità di utilizzo disarmante. Merito di ciò va riservato anche alla familiarità                       
che molti sviluppatori possono avere con lo sviluppo tramite Tecnologie                   
Web, alla possibilità di riutilizzare ide a loro familiari ed alla grande quantità                         
di ulteriori strumenti facilmente integrabili grazie alla struttura dei progetti. 
Altro aspetto sottolineare la natura open­source del progetto. 
 
4.3.4.1 UI Frameworks 
L’utilizzo di UI Framework è direttamente consigliato da Cordova stessa                   
nella propria homepage. Come accennato questi strumenti permettono,               
attraverso l’utilizzo di opzioni diverse da candidato a candidato, una                   
realizzazione efficiente delle interfacce utente. 
Nel caso specifico non è sembrato utile adottare alcuno di questi strumenti,                       
data la semplicità dell’esempio in questione, ma la facilità di integrazione e                       
la potenza di questi framework rendono altamente consigliabile il loro                   
utilizzo in contingenze diverse. 
31 
Facendo una semplice ricerca si possono trovate numerosissimi               
frameworks adatti a questo scopo, la scelta fra le varie opzioni meriterebbe                       
una trattazione ben più ampia, quasi una “tesina dentro la tesina”. Per                       
questo motivo ci si limiterà in questa sede ad elencarne alcuni (fra quelli                         
consigliati da Cordova stessa ed altri particolarmente famosi) e relative                   
caratteristiche principali. 
 
JQueryMobile 
JQueryMobile è un UI Framework della famiglia JQuery basato su HTML5.                     
Il suo utilizzo risulta particolarmente immediato in quanto consiste nel                   
download di alcune librerie, l’importazione nel progetto e nel documento                   
index.html​: da quel momento in avanti i suoi metodi e le sue funzioni                         
saranno richiamabili facilmente nell’interfaccia. Fornisce, fra gli altri,               
numerosi templates, animazioni, transazioni e la gestione della navigazione                 
fra le pagine. Leggero, completo e potente è forse la prima opzione da                         
analizzare da parte dello sviluppatore. 
Sencha Touch 
Sencha Touch è un framework MVC basato sull’utilizzo del Javascript. Non                     
è solo un UI Framework, ma una piattaforma di sviluppo mobile vera e                         
propria che ufficialmente si appoggia a Cordova per l’accesso al                   
dispositivo. Fornisce numerosi widgets, layouts e animazioni. 
Telerik 
Anche Telerik, come Sencha Touch, si presenta come una piattaforma di                     
sviluppo a se stante, la quale ancora una volta utilizza Cordova come                       
strumento per accedere al dispositivo. Oltre a fornire numerosi componenti                   
come le altre opzioni, merita una menzione speciale in quanto rappresenta                     
un ide fruibile completamente dal browser. Questo aspetto può lasciare                   
quantomeno perplessi in un primo momento gli sviluppatori, ma andandolo                   
a testare sorprende per strumenti a disposizione e performance. Tramite il                     
download della applicazione AppBuilder (disponibile nei maggiori store di                 
applicazioni mobile) è anche possibile effettuare il deploy diretto da                   
browser a dispositivo fisico, offrendo anche la possibilità di modificare il                     
codice e vederne apportate le modifiche in real­time sul dispositivo. 
32 
4.4 Tabella comparativa 
 
  Qt  Xamarin  Appcelerator  Cordova 
Ide ­ OS 
supportati 
QtCreator ­ 
Completo 
XamarinStudio ­   
NO Linux 
Appcelerator 
Studio 
­Completo 
/ ­ Completo 
Linguaggi di 
programmazi
one 
QML, C++  C#, AXML  JavaScritp, 
HTML (o XML) 
Tecnologie Web 
Accesso al 
dispositivo 
Completo*  Completo  Completo ­  
Titanium 
Scarso ­   
Classic 
Completo  
Deployment 
Targets 
Mobile, 
Desktop, 
Embedded 
Mobile, Desktop  Mobile, 
Desktop 
Mobile, Desktop 
Strumenti di 
sviluppo 
“Design”  Numerosi 
Moduli 
aggiuntivi 
Numerosi 
Moduli 
aggiuntivi 
Plugins, 
UI Frameworks 
Funzionalità 
specifiche 
 /  TestCloud, 
Insights 
Test nel Cloud,     
Insights, 
notifiche 
 / 
Gestione 
Distribuzione 
Hosting 
servers 
(premium) 
/  Hosting e   
Versioning 
 / 
 
*Utilizzando Qt l’accesso completo al dispositivo è possibile unicamente con l’utilizzo                     
della JNI e di moduli C++. 
 
 
 
33 
5. ​Conclusioni 
 
La prima conclusione doverosa da osservare è che tutte e 4 le piattaforme                         
si sono comportate complessivamente bene ed hanno permesso di                 
raggiungere l’obiettivo di rispettare le specifiche dell’applicazione di               
riferimento presentata. Quindi rimane la domanda, come scegliere? 
 
Probabilmente non esiste una risposta univoca a tale domanda. Soprattutto                   
tramite la ricerca effettuata viene alla luce come per ogni situazione                     
potrebbe essere più adatta una scelta diversa di volta in volta. 
 
Questa coscienza ci può però aiutare a definire un primo ragionamento da                       
considerare nella scelta: trovare il miglior ​“​matching” fra la tipologia                   
della nostra applicazione e le caratteristiche della piattaforma​. 
Per esempio in presenza di applicazioni orientate al mondo Web,                   
risulterebbe sensato ipotizzare Cordova come scelta. Mentre per               
applicazioni da una struttura particolarmente complessa il pattern MVC di                   
Appcelerator potrebbe risultare molto utile. 
 
Questo criterio non è però sufficiente, perchè anche il ​background delle                     
conoscenze di uno sviluppatore può fare una differenza enorme nel                   
processo di sviluppo di un’applicazione. Indipendentemente           
dall’accoppiamento applicazione­framework infatti, per uno sviluppatore           
che conosce bene un ide o un linguaggio di programmazione continuare                     
con i propri strumenti potrebbe comunque risultare comunque ben più                   
efficiente.  
 
Rileggendo l’elaborato si noterà come, fra l’altro, questi due criteri sono                     
emersi anche nell’analisi della scelta fra le varie metodologie di sviluppo:                     
Native, CPT, Web. 
 
34 
Ancora una volta inoltre c’è da aggiungere che la grande dinamicità del                       
mondo dello sviluppo mobile non consente di fossilizzarsi troppo su di una                       
scelta. Scelte diverse possono risultare vincenti in contingeze differente. 
 
Si è invece fortemente spinti a rimanere aggiornati su ciò che offre lo                         
scenario per saper cogliere tutte le nuove ozpioni disponibili. 
Sapersi adattare per utilizzare i migliori strumenti per i propri scopi è la                         
condizione fondamentele per non venir tagliati fuori dall’evoluzione.  
 
Il modello Darwin ha forse trovato dopo circa 150 anni un nuovo, ulteriore,                         
campo di applicazione. 
 
 
 
 
35 

Más contenido relacionado

Similar a Linguaggi e piattaforme per lo sviluppo di applicazioni mobile michele agostini

M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno?
M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno? M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno?
M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno? Istituto nazionale di statistica
 
Focus Group Open Source 10.3.2010 Marco Gentili
Focus Group Open Source 10.3.2010 Marco GentiliFocus Group Open Source 10.3.2010 Marco Gentili
Focus Group Open Source 10.3.2010 Marco GentiliRoberto Galoppini
 
Studio e implementazione di uno strumento di configurazione e visualizzazione...
Studio e implementazione di uno strumento di configurazione e visualizzazione...Studio e implementazione di uno strumento di configurazione e visualizzazione...
Studio e implementazione di uno strumento di configurazione e visualizzazione...Matteo Miotto
 
B Human Progetti di Stage 2009
B Human Progetti di Stage 2009B Human Progetti di Stage 2009
B Human Progetti di Stage 2009B Human Srl
 
Android programming (ita)
Android programming (ita)Android programming (ita)
Android programming (ita)Vinu Iaconissi
 
Model view controller: un pattern per l’interaction design
Model view controller: un pattern per l’interaction designModel view controller: un pattern per l’interaction design
Model view controller: un pattern per l’interaction designStefano Bussolon
 
I questionari di valutazione di siti Web. Implicazioni, prospettive teoriche ...
I questionari di valutazione di siti Web. Implicazioni, prospettive teoriche ...I questionari di valutazione di siti Web. Implicazioni, prospettive teoriche ...
I questionari di valutazione di siti Web. Implicazioni, prospettive teoriche ...Valentina Iannaco
 
Dml Web Analytics Buyer Guide
Dml Web Analytics Buyer GuideDml Web Analytics Buyer Guide
Dml Web Analytics Buyer GuideDML Srl
 
Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...
Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...
Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...Raffaele Bernardi
 
Come rilasciare App di Qualità
Come rilasciare App di QualitàCome rilasciare App di Qualità
Come rilasciare App di QualitàLuca Manara
 
Massimiliano Zani - Applicazioni Mobile: tecnologie e Problematiche
Massimiliano Zani - Applicazioni Mobile: tecnologie e ProblematicheMassimiliano Zani - Applicazioni Mobile: tecnologie e Problematiche
Massimiliano Zani - Applicazioni Mobile: tecnologie e ProblematicheBetter Software
 
Realizzazione di un ChatBot sulla piattaforma Messenger di Facebook per l'inf...
Realizzazione di un ChatBot sulla piattaforma Messenger di Facebook per l'inf...Realizzazione di un ChatBot sulla piattaforma Messenger di Facebook per l'inf...
Realizzazione di un ChatBot sulla piattaforma Messenger di Facebook per l'inf...Xhoi Kerbizi
 
Premio forumpa2017 chatbot_sogei_doc
Premio forumpa2017 chatbot_sogei_docPremio forumpa2017 chatbot_sogei_doc
Premio forumpa2017 chatbot_sogei_docMonica Gabrielli
 
Extended Summary of What Apps Did You Use? :Understanding the Long-term Evolu...
Extended Summary of What Apps Did You Use? :Understanding the Long-term Evolu...Extended Summary of What Apps Did You Use? :Understanding the Long-term Evolu...
Extended Summary of What Apps Did You Use? :Understanding the Long-term Evolu...EnricoMariuzzo
 
v2 Presentazione Lelli
v2 Presentazione Lelliv2 Presentazione Lelli
v2 Presentazione LelliMatteo Lelli
 
Laboratorio internet: 3. Requisiti
Laboratorio internet: 3. RequisitiLaboratorio internet: 3. Requisiti
Laboratorio internet: 3. RequisitiRoberto Polillo
 
Miniaturizzazione dell'interfaccia utente da applicazioni Java ad Android.pptx
Miniaturizzazione dell'interfaccia utente da applicazioni Java ad Android.pptxMiniaturizzazione dell'interfaccia utente da applicazioni Java ad Android.pptx
Miniaturizzazione dell'interfaccia utente da applicazioni Java ad Android.pptxPasquale Matrone
 
Prof. Diego Macrì - Open source nella pubblica amministrazione: un nuovo mode...
Prof. Diego Macrì - Open source nella pubblica amministrazione: un nuovo mode...Prof. Diego Macrì - Open source nella pubblica amministrazione: un nuovo mode...
Prof. Diego Macrì - Open source nella pubblica amministrazione: un nuovo mode...EPOCA
 
Un modello per la valutazione dei siti web 2024.pdf
Un modello per la valutazione dei siti web 2024.pdfUn modello per la valutazione dei siti web 2024.pdf
Un modello per la valutazione dei siti web 2024.pdfMarco Accossato
 

Similar a Linguaggi e piattaforme per lo sviluppo di applicazioni mobile michele agostini (20)

M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno?
M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno? M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno?
M. Scarnò: Di quali innovazioni nel software per la statistica abbiamo bisogno?
 
Focus Group Open Source 10.3.2010 Marco Gentili
Focus Group Open Source 10.3.2010 Marco GentiliFocus Group Open Source 10.3.2010 Marco Gentili
Focus Group Open Source 10.3.2010 Marco Gentili
 
Studio e implementazione di uno strumento di configurazione e visualizzazione...
Studio e implementazione di uno strumento di configurazione e visualizzazione...Studio e implementazione di uno strumento di configurazione e visualizzazione...
Studio e implementazione di uno strumento di configurazione e visualizzazione...
 
B Human Progetti di Stage 2009
B Human Progetti di Stage 2009B Human Progetti di Stage 2009
B Human Progetti di Stage 2009
 
Android programming (ita)
Android programming (ita)Android programming (ita)
Android programming (ita)
 
Model view controller: un pattern per l’interaction design
Model view controller: un pattern per l’interaction designModel view controller: un pattern per l’interaction design
Model view controller: un pattern per l’interaction design
 
I questionari di valutazione di siti Web. Implicazioni, prospettive teoriche ...
I questionari di valutazione di siti Web. Implicazioni, prospettive teoriche ...I questionari di valutazione di siti Web. Implicazioni, prospettive teoriche ...
I questionari di valutazione di siti Web. Implicazioni, prospettive teoriche ...
 
Dml Web Analytics Buyer Guide
Dml Web Analytics Buyer GuideDml Web Analytics Buyer Guide
Dml Web Analytics Buyer Guide
 
Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...
Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...
Sviluppo e realizzazione di un sistema per la manipolazione di superfici trid...
 
Come rilasciare App di Qualità
Come rilasciare App di QualitàCome rilasciare App di Qualità
Come rilasciare App di Qualità
 
Massimiliano Zani - Applicazioni Mobile: tecnologie e Problematiche
Massimiliano Zani - Applicazioni Mobile: tecnologie e ProblematicheMassimiliano Zani - Applicazioni Mobile: tecnologie e Problematiche
Massimiliano Zani - Applicazioni Mobile: tecnologie e Problematiche
 
Realizzazione di un ChatBot sulla piattaforma Messenger di Facebook per l'inf...
Realizzazione di un ChatBot sulla piattaforma Messenger di Facebook per l'inf...Realizzazione di un ChatBot sulla piattaforma Messenger di Facebook per l'inf...
Realizzazione di un ChatBot sulla piattaforma Messenger di Facebook per l'inf...
 
Premio forumpa2017 chatbot_sogei_doc
Premio forumpa2017 chatbot_sogei_docPremio forumpa2017 chatbot_sogei_doc
Premio forumpa2017 chatbot_sogei_doc
 
Extended Summary of What Apps Did You Use? :Understanding the Long-term Evolu...
Extended Summary of What Apps Did You Use? :Understanding the Long-term Evolu...Extended Summary of What Apps Did You Use? :Understanding the Long-term Evolu...
Extended Summary of What Apps Did You Use? :Understanding the Long-term Evolu...
 
v2 Presentazione Lelli
v2 Presentazione Lelliv2 Presentazione Lelli
v2 Presentazione Lelli
 
Na.atm validazione
Na.atm validazioneNa.atm validazione
Na.atm validazione
 
Laboratorio internet: 3. Requisiti
Laboratorio internet: 3. RequisitiLaboratorio internet: 3. Requisiti
Laboratorio internet: 3. Requisiti
 
Miniaturizzazione dell'interfaccia utente da applicazioni Java ad Android.pptx
Miniaturizzazione dell'interfaccia utente da applicazioni Java ad Android.pptxMiniaturizzazione dell'interfaccia utente da applicazioni Java ad Android.pptx
Miniaturizzazione dell'interfaccia utente da applicazioni Java ad Android.pptx
 
Prof. Diego Macrì - Open source nella pubblica amministrazione: un nuovo mode...
Prof. Diego Macrì - Open source nella pubblica amministrazione: un nuovo mode...Prof. Diego Macrì - Open source nella pubblica amministrazione: un nuovo mode...
Prof. Diego Macrì - Open source nella pubblica amministrazione: un nuovo mode...
 
Un modello per la valutazione dei siti web 2024.pdf
Un modello per la valutazione dei siti web 2024.pdfUn modello per la valutazione dei siti web 2024.pdf
Un modello per la valutazione dei siti web 2024.pdf
 

Último

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioServizi a rete
 

Último (7)

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
 

Linguaggi e piattaforme per lo sviluppo di applicazioni mobile michele agostini

  • 1.    Linguaggi e piattaforme per lo sviluppo di applicazioni mobile.       Università Politecnica delle Marche  Tesina corso Tecnologie per i Sistemi informativi   Michele Agostini                              Abstract​: ​Analisi e confronto delle principali metodologie di programmazione e                    piattaforme per lo sviluppo di applicazioni per dispositivi mobili.                     
  • 2. Indice      1. Introduzione​ ​e​ ​Stato dell’arte ………………………………… pag.2    2. Obiettivi ………………………………………………….……….. pag.5    3. Analisi delle metodologie di programmazione …….……… pag.6    3.1. Introduzione  3.2. Definizione  3.3. Cosa ne pensano gli sviluppatori?  3.4. Caratteristiche metodologiche  3.5. Conclusioni    4. Analisi delle piattaforme CPT prescelte …………….…….. pag.15    4.1. Criteri di analisi   4.2. Elenco delle piattaforme prese in esame  4.3. Analisi delle piattaforme prescelte  4.4. Tabella comparativa    5. Conclusioni …………………………………………………….. pag.34                            1 
  • 3. 1. Introduzione e Stato dell’arte    In questa tesina ci si addentrerà nel mondo dei dispositivi mobili, una delle                          maggiori rivoluzioni tecnologiche che la società moderna ha affrontato negli                    ultimi anni.    Dal primo cellulare venduto nel 1983 sono passati più di 30 anni e di strada                              ne è stata fatta a livello tecnologico ed a livello di diffusione. Basti pensare                            che solo nel 2014 sono stati venduti circa 1,3 Miliardi​[ ] di dispositivi. Le                          1 tecnologie mobili sono dunque diventate parte della realtà quotidiana e                    stanno continuando a trasformare la società moderna radicalmente in ogni                    settore. Ben comprensibile è dunque l’attenzione e gli sforzi che questi                      sistemi stanno attraendo.    In questa tesina ci si interesserà dal punto di vista tecnologico dello                        sviluppo di applicazioni per dispositivi mobili, uno dei principali motivi di                      interesse e diffusione. Si andranno ad analizzare i principali sistemi                    disponibili sul mercato, con un focus particolare sulle metodologie di                    sviluppo e su alcune specifiche piattaforme per gli sviluppatori, selezionate                    in base a specifici criteri, fra le tantissime disponibili ad oggi.    Il mercato dei cosiddetti smartphone risulta sì eterogeneo come opzioni,                    ma sono facilmente individuabili dei competitors che stanno dominando la                    scena, fra questi verranno presi in considerazione in questo elaborato i                      primi tre: Android, IOS e Windows Phone, che insieme detengono circa il                        99%​[1]​  del mercato.    1 ​ Fonte:  IDC Worldwide Quarterly Mobile Phone Tracker, February 24, 2015  2 
  • 4.   Fig.1 ­ IDC Worldwide Quarterly Mobile Phone Tracker, February 24​th​ , 2015      Risulta quindi importante a questo punto introdurre le tre principali                    metodologie di programmazione identificate:    1. Metodologie di sviluppo Native  2. Metodologie di sviluppo Cross­Platform/Hybrid  3. Metodologie di sviluppo Web    La scelta della metodologia è, ad oggi, una delle prime e più importanti                          questioni che si pongono dinanzi ad uno sviluppatore, dalla quale                    dipendono molte successive implicazioni.    Si procederà quindi ad un’analisi delle caratteristiche di queste                  metodologie, individuandone pregi e difetti in modo da poter effettuare una                      scelta ponderata. Si passerà poi allo studio approfondito di alcune                    specifiche piattaforme di sviluppo fra le quali i developers possono                    3 
  • 5. scegliere per implementare i loro lavori. Verrà effettuata anche una “prova                      sul campo” con l’implementazione di una semplice applicazione attraverso                  le varie piattaforme per “stressarle” e conoscere al meglio il loro                      comportamento.    Si può anticipare che la scelta della metodologia di sviluppo e della singola                          piattaforma risulta una delle questioni di principale interesse e dalla                    risposta più incerta fra gli sviluppatori ad oggi. Non a caso vi si riferisce                            spesso come uno “​stalemate in the platform wars​” ​[ ]​ : lo stallo nella guerra                          2 fra piattaforme.    Nonostante ciò, è scopo di questo elaborato studiare le varie opzioni                      possibili e le loro caratteristiche per dare criteri di analisi e capire quale                          soluzione possa essere più adatta ad ogni situazione.                          2 ​Source: VisionMobile, “Developer Economics Q1 2015: State of the Developer Nation”  4 
  • 6. 2. Obiettivi    Analizzare le caratteristiche delle principali opzioni di sviluppo ad oggi                    presenti sul mercato, individuarne pregi, difetti e definirne i principali ambiti                      di utilizzo.     Si procederà per prima cosa all’analisi delle caratteristiche delle tre                    metodologie di sviluppo introdotte: Native, CPT e Web App. Queste                    verranno approfondite accuratamente in quanto molte delle differenze dei                  vari approcci allo sviluppo dipendono proprio da questa prima distinzione.  Successivamente verranno definiti dei criteri di giudizio utili a classificare e                      distinguere le piattaforme di sviluppo che nell’ultima parte dell’elaborato                  verranno studiate e testate, attraverso indagini e l’implementazione sul                  campo di un’applicazione di riferimento.                                        5 
  • 7. 3. Analisi delle metodologie di  programmazione    3.1 Introduzione  Come anticipato nell’introduzione, la scelta della metodologia di sviluppo è                    la prima scelta che un developer si trova di fronte. Probabilmente anche la                          più importante in quanto questa opzione porta con se notevoli implicazioni                      per il resto della fase di progettazione e sviluppo dell’applicazione.  Ad aggiungere delicatezza alla scelta si aggiunge che ad oggi questa è una                          delle discussioni che più divide la comunità degli sviluppatori, senza aver                      ancora trovato opinioni concordi. Non a caso vi si riferisce spesso come                        “​the​ ​stalemate in the platform wars​” ​[ ]​ : lo stallo nella guerra fra piattaforme. 3 Questo fatto non impedisce, però, di individuare ambiti di utilizzo                    preferenziali e buone pratiche di programmazione per ogni metodologia                  attraverso un’approfondita analisi delle loro caratteristiche e delle loro                  differenze. Scopo di questa prima parte del capitolo corrente è proprio                      quello di definire e studiare tali metodologie.    3.2 Definizione  Si procede ora alla classificazione, nella quale è possibile riconoscere tre                      principali categorie:    ● Native  ● Cross Platform Tools (CPT)  ❏ Cross­Compiled  ❏ Hybrid  ● Web App    3 Source: VisionMobile, “Developer Economics Q1 2015: State of the Developer Nation”    6 
  • 8. Come è possibile notare, la seconda categoria è a sua volta scomponibile                        in due sotto categorie, le quali hanno qualche sfumatura di                    differenziazione.    Native  Metodologia di sviluppo specifica per una determinata piattaforma mobile                  (iOS, Android...) utilizzando gli strumenti di sviluppo e il linguaggio che                      delle rispettive piattaforme (Xcode e Objective­C/Swift con iOS,                Eclipse/AndroidStudio e Java con Android). Danno la migliore esperienza                  utente e le migliori performance.    Cross Platform Tools  I CPT possono essere utilizzati per sviluppare, applicazioni cross­compiled                  e web. Sono disponibili in varie sfumature tecnologiche, riferite soprattutto                    alle famiglie di linguaggi utilizzati:    ● nel caso di applicazioni ​ibride​, l'applicazione è in effetti una web app,                        ma ​wrappata all'interno di un container­applicazione nativo della                singola piattaforma. È installato, avviato e utilizzato come qualsiasi                  applicazione nativa, è scritto in HTML, JavaScript e CSS.   ● nel caso di applicazioni ​cross­compiled ci si allontana dal mondo                    Web, si tratta di una app scritta con un linguaggio dipendente dal                        framework prescelto (C++ o C# ad esempio). Successivamente sarà                  compito del framework occuparsi della compilazione per le varie                  piattaforme di deployment.    Web App  Metodologia di sviluppo basata sul mondo delle tecnologie tipiche del web:                      generalmente viene fruito attraverso un browser web, ciò permette un                    approccio ​write­once­run­everywhere. ​Tecnicamente si tratta della fruizione              di un sito web ottimizzato attraverso il browser mobile, è comunque                      possibile avere una icona dell’applicazione che tecnicamente corrisponde                ad un bookmark stabile del browser.    7 
  • 9.     Fig.2 ­ Schema visuale delle metodologie di sviluppo        3.3 Cosa ne pensano gli sviluppatori?    Prima di procedere con un confronto fra le varie metodologie si ritiene utile                          portare all’attenzione del lettore alcuni dati sullo stato attuale dello sviluppo                      di applicazioni nel mondo. I dati presentati provengono dal report ​“State of                        the Developer Nation Q1 2015” redatto da ​Visual Mobile su un campione di                          oltre diecimila developers fra 143 paesi nel mondo.    Si analizzano per prima cosa i ​linguaggi maggiormente utilizzati, vengono                    presi in considerazione sia i linguaggi “primari” che quelli utilizzati                    secondariamente, lato device e lato server:   8 
  • 10.   Fig.3 ­ Linguaggi Device­side maggiormente utilizzati​[ ]  4     Fig.4 ­ Linguaggi Server­side maggiormente utilizzati​[​4​]     Concentrandosi sul lato Device­side è possibile notare come Java                  (sinonimo di Android) la faccia da padrone sia come linguaggio primario                      che secondario. Tale indicazione è da ricercare nella grande diffusione del                      4 Source: Visual Mobile, State of the Developer Nation Q1 2015, February 2015.  9 
  • 11. sistema Android e nel grande numero di sviluppatori con un background di                        conoscenze in ambito di sviluppo desktop.    Altri dati significativi provengono dal dato sulla diffusione dell’HTML5,                  seppure come linguaggio secondario. Ciò conferma il crescente interesse                  degli sviluppatori nelle applicazioni Web e Hybrid, considerando anche il                    fatto che molti sviluppatori sono interessati a poter riutilizzare le loro                      precedenti esperienze in ambito Web. Seppure non sembrano ancora del                    tutto convinti ad utilizzarlo come linguaggio primario per il mobile.    Di interesse anche il dato di Swift che nonostante la sua recente                        introduzione ha attratto su di se molte ambizioni, fra cui molte non                        direttamente provenienti da sviluppatori precedentemente legati            all’Objective­C, linguaggio notoriamente legato allo sviluppo in ambito IOS.    Utile anche uno sguardo ai principali ​tools utilizzati dagli sviluppatori,                    proveniente sempre dal report ​“State of the Developer Nation Q1 2015”.  Nel grafico proposto di seguito è possibile notare come i tools                      maggiormente utilizzati siano gli “user analytics”, strumento considerato                sempre più fondamentale nella comprensione dei comportamenti utente e                  nel miglioramento delle proprie applicazioni. Seguono i tools di Advertising,                    in effetti i differenti sistemi di monetizzazione sono sempre di più al centro                          degli studi di settore.  Al terzo posto troviamo i ​Cross Platform Tools​, quelli di maggiore                      interesse per lo scopo di questo elaborato, con una percentuale del 30%                        degli sviluppatori che utilizzano tali tools. Importante notare che tale                    percentuale è passata dal 23% al 30% solamente nell’arco degli ultimi 6                        mesi (considerando il precedente rilevamento da parte di Visual Mobile),                    confermando il forte trend positivo che suscitano queste tecnologie. A                    riguardo, un altro dato risulta interessante: circa un terzo degli sviluppatori                      che utilizzano tools cross­platform stanno sviluppando in realtà applicazioni                  per un’unica piattaforma, dato che fà riflettere sulla piena comprensione                    delle caratteristiche di questi tools.  10 
  • 12.     Fig.5 ­ Tools di sviluppo maggiormente utilizzati​[ ]  5       3.4 Caratteristiche metodologie    Si procede con un confronto di “alto livello” fra le varie metodologie di                          sviluppo, cercando di metterne in luce le principali caratteristiche attraverso                    delle tabelle “pro e contro”.        5 Source: Visual Mobile, State of the Developer Nation Q1 2015, February 2015.  11 
  • 13. Native  Pro  Contro  ● Pieno accesso e totale  controllo del dispositivo    ● Pieno accesso alla  piattaforma di sviluppo ed alle  APIs del sistema    ● Migliori prestazioni    ● User experience ottimizzata e  congruente all’OS mobile    ● Diffusione tramite App Stores    ● Differenti skills necessarie per  lo sviluppo in ogni piattaforma    ● Codice difficilmente  riutilizzabile fra le varie  piattaforme    ● Sviluppo cross­platform  dispendioso per costi e tempi     ● Vincoli App Stores      Web App  Pro  Contro  ● Codice riutilizzabile,  multipiattaforma    ● Aggiornamento istantaneo    ● Tempi/Costi di sviluppo    ● Possibilità di riutilizzo di siti  web adeguatamente  progettati    ● Conoscenze tecnologie Web  molto diffuse    ● Accesso al dispositivo ed alle  APIs limitato    ● Diffusione tramite App Stores  assente    ● User experience differente dal  OS del dispositivo    ● Difficoltà utilizzo app offline    12 
  • 14.   CPT ­ Cross Platform Tools  Pro  Contro  ● Codice riutilizzabile fra le  piattaforme, multipiattaforma    ● Diffusione tramite App Store    ● User experience differente dal  OS del dispositivo     ● Vincoli App Stores    ● Debugging cross­platform  Hybrid  ● Vista dal dispositivo come  app nativa e utilizzo di  tecnologie web    ● Accesso al dispositivo  estendibile tramite plugins  ● Diversa implementazione  delle WebView fra i vari  sistemi  Cross­Compiled  ● Vista dal dispositivo come  app nativa e utilizzo di  linguaggi molto conosciuti    ● Ampio accesso al dispositivo   ● Possono non essere  supportate tutte le piattaforme  necessarie      3.5 Conclusioni    Come si è visto ogni metodologia porta con se pregi e difetti, considerando                          anche l’elevato tasso di dinamicità di cui è caratterizzato il mondo dello                        sviluppo mobile è facile intuire come non vi sia una strada maestra                        unanime a cui fare riferimento.    13 
  • 15. Una buona conoscenza delle caratteristiche e delle differenze delle varie                    metodologie possono però aiutare lo sviluppatore nella scelta. I criteri da                      tenere presenti sono molteplici ed ogni situazione potrebbe avere una                    storia a sè, ma sicuramente ce ne sono alcuni sempre validi, che vengono                          quì riassunti.    Il primo fra tutti risulta sicuramente la ​tipologia dell’applicazione. ​In                    generale l'utilizzo degli strumenti di sviluppo nativi permette da sempre di                      ottenere dei risultati migliori, la maggiore libertà espressiva, garanzia del                    risultato in termini di performance e user experience, totale e libero                      sfruttamento delle potenzialità del device. Di conseguenza queste                caratteristiche lo rendono adatto per le applicazioni più complesse in cui                      non è interesse scendere a compromessi nei costi e tempi di sviluppo.  Se invece la necessità è quella di realizzare un’applicazione con elementi e                        funzionalità standard, gli approcci Web o CPT potrebbero risultare un                    compromesso vincente.  È quindi essenziale conoscere bene sia le caratteristiche dell’applicazione                  che si andrà a sviluppare sia le peculiarità di ogni metodologia.  In questo scenario un altro criterio particolarmente importante è il                    background conoscenze personali dello sviluppatore: la possibilità di                riutilizzare sistemi e linguaggi di sviluppo già conosciuti, a parità di risultati,                        può essere un fattore di non secondaria importanza.  Tutto ciò, sempre tenendo conto naturalmente di eventuali ​vincoli                  presentati dagli stakeholders in riferimento a tempi e costi di sviluppo o                        funzionalità specifiche.    Anche il ​target ​a cui fà riferimento l’applicazione è di notevole importanza:                        risulta infatti inefficiente un utilizzo di strumenti CPT nel caso in cui si stia                            sviluppando un’applicazione il cui deployment è previsto per una sola                    piattaforma mobile. Studi​[ ] ​ dimostrano che questo aspetto non è ancora del                     6 tutto chiaro a molti sviluppatori.    6 Source: Visual Mobile, State of the Developer Nation Q1 2015, February 2015.  14 
  • 16. 4. Analisi delle piattaforme prescelte    4.1 Criteri di analisi    Nel proseguire con lo studio ed il test delle varie piattaforme di sviluppo si è                              ritenuto necessario fissare alcuni criteri di analisi principali tramite i quali                      valutare e poter quindi meglio comprendere le varie opzioni.    4.1.1 Criteri individuati  ● Ide, licenza e sistemi operativi supportati  ● Linguaggi di programmazione principali  ● Accesso al dispositivo ­ sensoristica  ● Deployment targets  ● Strumenti di sviluppo  ● Funzionalità specifiche  ● Gestione distribuzione    È importante sottolineare come questi criteri siano siano indici qualitativi                    utilizzati in modo indicativo e come lo studio delle piattaforme avverrà in                        maniera approfondita caso per caso avvalendosi soprattutto della prova sul                    campo.    4.1.2 Applicazione di riferimento  Risulta utile definire inoltre la struttura di una applicazione standard che                      verrà realizzata attraverso le varie piattaforme.  Una struttura ritenuta sufficientemente esplicativa, utile a capire le                  potenzialità della piattaforma ed al tempo stesso non troppo onerosa in                      termini implementativi e stata pensata con le seguenti caratteristiche:    ● semplice interfaccia grafica  ● semplici interazioni con l’utente  15 
  • 17. ● utilizzo di un sensore del dispositivo  ● utilizzo di una libreria interna del dispositivo  ● interfacciamento con una API di terze parti    Per rispondere a queste caratteristiche si è pensato ad un’applicazione che                      proponga all’utente una semplice interfaccia grafica, con la possibilità di                    relazionarcisi attraverso un pulsante che attivi una funzione per prelevare                    la posizione dal sensore di posizione, aprire una mappa (Google Maps                      API) in cui si riporta la rilevazione tradotta in un indirizzo ​human­readable e                          salvi ogni check­in in un database interno all’applicazione (es. SQLite)    A seguire due screenshots per dare un’idea più percisa al lettore di ciò che                            è stato sviluppato.      Fig.6 ­ Schermata “Home” dell’applicazione  16 
  • 18.       Fig.7 ­ Schermata “Map” dell’applicazione    Come si può notare si tratta di una applicazione dall’interfaccia utente                      molto semplice: i comndi principali si accedono attraverso due bottoni                    sempre visibili nella parte superiore della finestra.  Nella sezione ​“Home” è presente il bottone di ​“CheckIn” tramite il quale si                          attiva una funzione che preleva la posizione dal sensore di posizionamento                      del dispositivo ed effettua un inserimento nel database ​SQLite​.  Passando alla sezione ​“Map” ​viene effettuata una lettura sul database per                      recuperare l’ultima posizione inserita, la quale attraverso una chiamata alle                    API di ​Google Maps viene tradotta in indirizzo ​“human readable” e mostrata                        nella mappa.    17 
  • 19. 4.2 Elenco delle piattaforme prese in esame    In riferimento alle caratteristiche presentate nel capitolo 3.2 di questo                    elaborato risulta chiaro al lettore come gli approcci Native e Web risultino di                          più immediata comprensione nelle conseguenze della loro scelta,                delineando degli approcci ben definiti nelle modalità e negli strumenti.  Al contrario la galassia delle piattaforme Cross Platform Tools merita di                      essere approfondita ulteriormente, data la vastità delle opzioni offerte e le                      caratteristiche peculiari che ognuna di queste scelte può offrire.    Di conseguenza nel prosieguo di questo elaborato, cioè nella prova sul                      campo delle varie piattaforme, ci si concentrerà esclusivamente sulla                  metodologia CPT.    Per fini di approfondimento risulta comunque utile riportare alcune                  informazioni principali per le tre piattaforme di sviluppo Native principali:      ● Android  ❏ Linguaggio di programmazione: Java  ❏ Piattaforma di sviluppo: Adroid Studio o plugin Eclipse  ● IOS  ❏ Linguiaggio di programmazione: Objective C e Swift  ❏ Piattaforma di sviluppo: Xcode  ● Windows Phone  ❏ Linguaggio di programmazione: .NET  ❏ Piattaforma di sviluppo: Visual Studio            18 
  • 20. 4.2.1 Piattaforme CPT prese in esame    Il mondo CPT risulta sicuramente quello più esteso ed al suo interno più                          diversificato, prendere in esame tutte le piattaforme disponibili risulta                  impossibile, oltre 900 quelle censite da ​Visual Mobile​.  È di conseguenza necessario procedere ad una scelta attraverso criteri di                      diffusione, potenzialità tecnologiche e peculiarità specifiche.    In base a questi criteri le piattaforme scelte, appartenenti sia alla categoria                        Hybrid che Cross­compiled, risultano le seguenti:    ● Qt  ● Xamarin  ● Appcelerator Titanium  ● Cordova­PhoneGap  ❏ JQueryMobile  ❏ Telerik   ❏ Sencha Touch    Il prossimo capitolo è dedicato all’analisi ed alla messa in opera di ciascuna                          di queste piattaforme, non si procede pertanto in questo momento a fornire                        ulteriori dettagli.                    19 
  • 21.   4.3 Analisi delle piattaforme prescelte    4.3.1 Qt    Introduzione Qt (da leggere “​cute​”) è un framework                inizialmente sviluppato da ​Nokia​, acquisito negli ultimi              anni da ​Digia Plc​. Dopo alcuni anni di “difficoltà” con il                      distaccamento da Nokia, la scelta della strada              CrossPlatform ed il grande sviluppo del mercato mobile, è                  ora una delle scelte principali a cui si possono affidare i                      developers per dispositivi mobili.    Ide, licenza di utilizzo e sistemi operativi supportati  QtCreator è l’ide di riferimento per questo framework: completo, leggero ed                      intuitivo. È disponibile per Linux, Mac OS e Windows.  Sono disponibili vari livelli di licenze, 3 per la precisione, che comprendono                        una versione base ​free ​fino ad arrivare ad una versione premium che                        prevede servizi ulteriori. Tramite la versione free ​sono comunque                    accessibili le funzionalità offerte dalle librerie Qt.    Linguaggi di programmazione principali  I linguaggi di programmazione principali sono due: QML e C++.  Il QML è un linguaggio dichiarativo basato su JavaScript per la definizione                        delle interfacce. Tramite il QML si definiscono quindi i componenti                    dell’interfaccia, le loro relazioni e anche alcune funzionalità.  Nonostante non sia sempre necessario, non lo è stato in questo caso ad                          esempio, è comunque possibile utilizzare componenti aggiuntivi sviluppati                in C++ tramite la JNI (Java Native Interface). Questo permette di accedere                        ad una enorme mole di codice già sviluppato in rete, comprendendo                      comunque un piccolo incremento della complessita del progetto.  20 
  • 22. Accesso al dispositivo ­ sensoristica  L’ambiente Qt è in continuo sviluppo, soprattutto nel campo mobile. Le                      librerie sono attualmente alla versione 5.4, fino alla precedente versione                    5.3 erano presenti alcune lacune serie per il supporto mobile. Con l’ultima                        versione disponibile non sono emerse particolari limitazioni nello sviluppo                  dell’applicazione di riferimento. Si ha quindi un accesso ai servizi principali                      con i relativi moduli, ma non si ha possibilità di un accesso totale                          (es.notifiche, battery level ecc.) a meno di un utilizzo di JNI (Java Native                          Inferface) e la realizzazione/sfruttamento di moduli appositi.    Deployment targets  La grande varietà dei deployment targets è uno dei punti di forza di questo                            framework. Oltre a supportare tutti i sistemi operativi mobile presi in                      considerazione c’è anche la possibilità di sviluppare applicazioni per                  l’ambiente desktop ed embedded.    Strumenti di sviluppo  Nella versione ​free ​l’unico strumento di sviluppo da segnalare è “Design”, il                        quale permette la realizzazione dell’interfaccia utente tramite strumenti                visuali tradotti successivamente in QML in maniera automatica. Non risulta                    però particolarmente intuitivo e versatile, è quindi risultato preferibile uno                    sviluppo di QML diretto.    Funzionalità specifiche  Nella versione ​free ​testata non sono emerse funzionalità specifiche degne                    di nota.    Gestione distribuzione  Non sono presenti strumenti per gestire la distribuzione dell’applicazione                  sviluppata nella versione ​free​, esiste invece la possibilità di hosting nei                      server dei produttori con la versione ​premium​.      21 
  • 23. Tabella riassuntiva ­ Qt    Qt  Ide ­ OS supportati  QtCreator ­ Completo  Linguaggi di programmazione  QML, C++  Accesso al dispositivo  Servizi Principali  Deployment Targets  *Completo  Strumenti di sviluppo  “Design”  Funzionalità specifiche   /  Gestione Distribuzione  Hosting servers (premium)    *Utilizzando Qt l’accesso completo al dispositivo è possibile unicamente con l’utilizzo                      della JNI e di moduli C++.    Considerazioni dello sviluppatore  Lo sviluppo dell’applicazione tramite questo framework è stato nel                  complesso agevole, grazie soprattutto ad un ide semplice ed il linguaggio                      QML intuitivo nonostante ci si trovi alla prima esperienza. Da segnalare                      anche la presenza di una documentazione molto ampia e completa ed una                        comunità di sviluppatori molto attiva.    Nel caso di applicazioni relativamente semplici è quindi sicuramente                  un’opzione da tenere bene in considerazione. Nel momento in cui si ha                        necessità di utilizzare servizi non ancora supportati la situazione potrebbe                    compromettersi.  Necessita di attenzione la fase di installazione e setup del framework.        22 
  • 24. 4.3.2 Xamarin    Introduzione  Xamarin è sviluppato sulle basi del framework open                source Monodevelop, al quale sono stati aggiunti              numerosissimi servizi e moduli per lo sviluppo mobile.        Ide, licenza di utilizzo e sistemi operativi supportati  Xamarin ha un suo ide di riferimento che è XamarinStudio, può altresì                        essere facilmente utilizzato tramite altri ide, specialmente VisualStudio di                  Microsoft per gli sviluppatori già familiari con questo strumento.   Xamarin propone 3 livelli di licenze, ma sfortunatamente nessuna di queste                      prevede una opzione ​free​, escluso il periodo di prova di 30 giorni. Inoltre                          non è previsto il supporto per gli ambienti di sviluppo Linux, aspetto che                          potrebbe disincentivare clienti appartenenti a questa categoria.     Linguaggi di programmazione principali  Xamarin si basa sull’utilizzo del linguaggio C# per definire la logica delle                        applicazioni, appoggiandosi al linguaggio AXML (Active XML) per                descrivere le interfacce.    Accesso al dispositivo ­ sensoristica  L’accesso a tutti gli elementi del dispositivo risulta davvero efficace con                      questo framework, in quanto vengono sfruttate le interfacce native dei vari                      OS. Questo permette di accedere praticamente ad ogni servizio, di ogni                      livello, offerto dal dispositivo. Questo è un grande vantaggio di questa                      piattaforma, anche se ciò implica che in un deploy crossplatform ci sia una                          (piccola) parte di codice che è necessario riscrivere o aggiuntive. Oltre alle                        interfacce native sono a disposizione dello sviluppatore anche molti moduli                    sviluppati da Xamarin.    23 
  • 25. Deployment targets  Xamarin offre il supporto per un deployment sia in ambito mobile che                        desktop. Nel caso specifico da segnalare la possibilità di sviluppare anche                      per dispositivi ​wearable​ come gli smartwatch.    Strumenti di sviluppo  Numerosi sono gli strumenti di sviluppo disponibili per il developer, questo                      è un grande vantaggio di questa piattaforma.   Oltre ad una efficiente interfaccia visuale per costruire la UI                    dell’applicazione, dinamicamente tradotta in AXML, sono molti i moduli                  aggiuntivi messi a disposizione dal framework o disponibili nel Market                    Place. Alcuni di questi moduli ulteriori sono a pagamento, ma potrebbero                      risultare davvero molto utili nello sviluppo di applicazioni in ambito                    enterprise. Fra questi moduli se ne possono citare alcuni come PayPal,                      Facebook o Amazon, senza considerarne tantissimi altri non specifici, ma                    utili nello sviluppo di qualsiasi applicazione.    Funzionalità specifiche  Da segnalare due funzionalità notevoli di questa piattaforma: Xamarin                  TestCloud e Xamarin Insights.   TestCloud permette di ampliare le proprie possibilità nella fase di testing                      tramite il caricamento dell’applicazione in un server ed il deploy virtuale in                        oltre 1000 dispositivi dalle più svariate caratteristiche hardware e software.                    Cosa che chiaramente non sarebbe possibile effettuare con la stessa                    efficacia se la fase di testing fosse fatta dallo sviluppatore con i dispositivi                          hardware a disposizione. Con la possibilità di ricevere reports, screenshots                    e analisi delle performance.  Insights è un sistema di monitoring real­time delle attività degli utenti,                      tramite reports sull’utilizzo dell’applicazione, eventuali crash o warnings.  Risulta di immediata comprensione la grande utilità di questa funzionalità, è                      da segnalare però che tali funzioni sono disponibili tramite la stipulazione di                        abbonamenti aggiuntivi oltre alla licenza d’uso del framework stesso.    24 
  • 26. Gestione distribuzione  Non sono presenti strumenti per gestire la distribuzione dell’applicazione                  sviluppata.    Tabella riassuntiva ­ Xamarin  Xamarin  Ide ­ OS supportati  XamarinStudio ­ NO Linux  Linguaggi di programmazione  C#, AXML  Accesso al dispositivo  Completo  Deployment Targets  Mobile, Desktop  Strumenti di sviluppo  Numerosi Moduli aggiuntivi  Funzionalità specifiche   TestCloud, Insights  Gestione Distribuzione  /      Considerazioni dello sviluppatore  Tramite Xamarin si è riusciti agevolmente a raggiungere le specifiche                    dell’applicazione di riferimento. L’interfaccia nativa con i componenti del                  dispositivo ed i numerosi moduli aggiuntivi a disposizione rendono molto                    efficiente lo sviluppo. È probabilmente la piattaforma più completa di quelle                      testate in questo elaborato.  Da tenere bene in considerazione però il fatto che si tratta di un framework                            utilizzabile nella pratica unicamente tramite pagamento ed anche le                  funzionalità specifiche e molti moduli prevedono un pagamento ulteriore.                  Nota negativa anche il mancato supporto per gli ambienti di sviluppo Linux,                        per un servizio così efficiente e completo equivale a perdersi in un bicchier                          d’acqua.      25 
  • 27.   4.3.3 Appcelerator    Introduzione  Appcelerator è un framework molto ampio che              offre molte strade per lo sviluppo delle applicazioni                mobile. Opzioni che si adattano a diverse strade di                  progettazione, ma fra le quali non è sempre facile                  orientarsi.    Nota:  Le due strade principali che Appcelerator prevede attualmente per lo sviluppo sono                        quella Classic o tramite l’SDK Titanium. Inizialmente è sembrata più congeniale a                        questo progetto la scelta Classic, basata sulle tecnologie Web, ma tale scelta si è poi                              rivelata fallimentare. Di conseguenza ulteriori prove, senza produrre un’applicazione                  completa, ma verificando unicamente la possibilità di implementare le specifiche, sono                      state fatte tramite l’SDK Titanium. Titanium è caratterizzato a sua volta dall’utilizzo di                          Alloy, un framework MVC basato su Javascript.  Caratteristiche delle due possibilità ed ulteriori spiegazioni seguono nell’analisi della                    piattaforma.    Ide, licenza di utilizzo e sistemi operativi supportati  Appcelerator ha un suo ide di riferimento che è AppceleratorStudio, può                      altresì essere facilmente utilizzato tramite altri ide come Eclipse.  Appcelerator prevede vari livelli di licenza, ma nessuno ​free​, escluso il                      periodo di prova di 90 giorni. È disponibile per tutti gli ambienti di sviluppo:                            Linux, Mac e Windows.    Linguaggi di programmazione principali  Il linguaggio principale di Appcelerator è sicuramente il JavaScript con cui                      si definisce gran parte dell’applicazione, dopodiche i due sviluppi ​Classic e                       con la SDK ​Titanium (o ​Alloy​) ​si differenziano per per l’utilizzo dell’HTML il                          primo e dell’XML il secondo.    26 
  • 28.   Accesso al dispositivo ­ sensoristica  Nella fase di accesso al dispositivo si sono evidenziate tutte le difficoltà e                          mancanze dello sviluppo tramite il metodo ​Classic. ​Complice anche una                    documentazione vetusta e una community scarsamente attiva, trovare i                  relativi moduli, risolvere le ambiguità fra le varie versioni dei moduli                      disponibili è stato un ostacolo serio. Si è deciso di conseguenza di                        abbandonare questa strada, come fra l’altro gran parte degli sviluppatori di                      Appcelerator sembra aver scelto da tempo.  Discorso diverso invece con l’utilizzo dell’SDK ​Titanium ed il framework                    Alloy​: la documentazione ampia ed aggiornata, una community vivace e la                      grande disponibilità di moduli ha permesso di verificare agevolmente la                    soddisfazione delle specifiche tramite diversi singoli esempi. L’applicazione                completa non è stata completamente sviluppata di nuovo per soddisfare la                      struttura MVC di ​Alloy​.    Deployment targets  Appcelerator offre il supporto per un deployment sia in ambito mobile che                        desktop.     Strumenti di sviluppo  Con riferimento all’utilizzo di ​Titanium​, da segnalare un MarketPlace con                    numerosissimi moduli, gratis o a pagamento.    Funzionalità specifiche  Si hanno inoltre servizi aggiuntivi a pagamento come il test su una larga                          serie di dispositivi virtuali, un efficiente sistema di insights con reporting                      real­time e un cloud con cui gestire le varie versioni della propria                        applicazione ed anche le sue notifiche all’utente.  Funzionalità simili a quelle offerte dalla piattaforma Xamarin.        27 
  • 29. Gestione distribuzione  Sono presenti strumenti di Hosting e versioning dell’applicazione sui server                    di Appcelerator, ma non c’è la possibilità di gestione diretta della                      distribuzione dell’applicazione.    Tabella riassuntiva ­ Appcelerator  Appcelerator  Ide ­ OS supportati  AppceleratorStudio ­Completo  Linguaggi di programmazione  JavaScritp, HTML (o XML)  Accesso al dispositivo  Completo ­ ​Titanium    Scarso ­ ​Classic  Deployment Targets  Mobile, Desktop  Strumenti di sviluppo  Numerosi Moduli aggiuntivi  Funzionalità specifiche   Test nel Cloud, Insights, notifiche.  Gestione Distribuzione  Hosting e Versioning.      Considerazioni dello sviluppatore  Considerato lo scarso supporto e lo scarso aggiornamento per lo sviluppo                      con il metodo ​Classic potrebbe essere forse il caso di eliminare                      direttamente questa opzione dalla piattaforma. Dato che per applicazione                  che vanno al di là di una semplice interfaccia in stile web tale approccio                            risulterebbe probabilmente fallimentare.  Con lo sviluppo in ​Titanium invece si ha uno strumento molto potente e                          completo. A patto di essere familiari e/o disponibili ad uno sviluppo con la                          struttura MVC.    Anche per questa piattaforma, come per Xamarin, nella pratica è                    utilizzabileunicamente dietro pagamento del servizio.  28 
  • 30. 4.3.4 Cordova    Introduzione  Cordova è un progetto open­source della fondazione              Apache, nato dal progetto Phonegap di cui ora è                  proprietaria Adobe. I due progetti vengono spesso              usati come sinonimi, allo stato attuale Phonegap può                essere considerato come una distribuzione di            Cordova con dei servizi aggiuntivi. Essendo            comunque Cordova il progetto alla base e per la sua                    natura open­source è stato scelto come candidato per questo progetto.    Ide, licenza di utilizzo e sistemi operativi supportati  Cordova non ha un suo ide di riferimento, per la sua gestione si fa                            riferimento alla CLI (Command Line Interface) con la quale è possibile                      installare Cordova e gestire i suoi plugins. È facilmente integrabile con                      molti ide, di conseguenza lo sviluppatore può scegliere quello a lui più                        consono. Come anticipato si tratta di un progetto open­source, disponibile                    con licenza Apache 2.0 ed è disponibile per tutti i sistemi operativi, anche                          per quelli attualmente meno in voga.     Linguaggi di programmazione principali  Cordova rispetta in pieno quelle che sono le classiche pratiche del mondo                        Web, il progetto risiede addirittura nella cartella ​www ​della rispettiva                    piattaforma rispettando anche la struttura interna delle cartelle. Da ciò                    deriva che i linguaggi di programmazione sono in tutto e per tutto quelli                          usati per lo sviluppo Web: Html, Css, Javascript ecc .    Accesso al dispositivo ­ sensoristica  Nello sviluppo dell’applicazione tramite Cordova non sono emerse                particolari limitazioni nell’accesso al dispositivo. I plugins a disposizione                  sono numerosissimi, alcuni ufficiali, molti sviluppati anche dalla community                  29 
  • 31. e la loro installazione tramite la CLI risulta agevole con un minimo di                          familiarità con l’ambiente a riga di comando.    Deployment targets  Cordova offre ampio supporto per il deployment sia in ambito mobile che                        desktop.    Strumenti di sviluppo  Oltre ai plugins, già citati, Cordova non fornisce altri strumenti di sviluppo,                        considerando anche il fatto che non ha un suo ide di riferimento. Da                          segnalare però che l’attinenza dei progetti Cordova con la struttura classica                      di un progetto Web permette l’utilizzo di una grandissima mole di altri                        strumenti per lo sviluppo della propria applicazione. Di particolare                  attenzione sono gli UI Frameworks che si abbinano benissimo ad un                      utilizzo con Cordova, permettendo uno sviluppo di interfacce utente molto                    efficaci. Nel caso specifico di questo progetto la semplicità dell’interfaccia                    da realizzare non ha reso conveniente l’utilizzo di questi strumenti, ma ne                        sono stati comunque analizzati alcuni che verranno riportati in seguito in un                        apposita sezione del documento.    Funzionalità specifiche  Non ci sono funzionalità specifiche da segnalare, se non voler rimarcare la                        facilità di integrazione con strumenti del mondo Web che apre alla                      possibilità di incrementare esponenzialmente le opzioni di sviluppo.    Gestione distribuzione  Non sono presenti strumenti per la gestione della distribuzione                  dell’applicazione.            30 
  • 32. Tabella riassuntiva ­ Cordova  Cordova  Ide ­ OS supportati  / ­ Completo  Linguaggi di programmazione  Tecnologie Web  Accesso al dispositivo  Completo   Deployment Targets  Mobile, Desktop  Strumenti di sviluppo  Plugins ­ UI Frameworks  Funzionalità specifiche   /  Gestione Distribuzione   /    Considerazioni dello sviluppatore  Cordova può spiazzare inizialmente lo sviluppatore che si potrebbe                  aspettare di trovarsi a disposizione un ide, mentre deve destreggiarsi con                      la linea di comando. Una volta entrati nell’ottica giusta però risulta di una                          agilità di utilizzo disarmante. Merito di ciò va riservato anche alla familiarità                        che molti sviluppatori possono avere con lo sviluppo tramite Tecnologie                    Web, alla possibilità di riutilizzare ide a loro familiari ed alla grande quantità                          di ulteriori strumenti facilmente integrabili grazie alla struttura dei progetti.  Altro aspetto sottolineare la natura open­source del progetto.    4.3.4.1 UI Frameworks  L’utilizzo di UI Framework è direttamente consigliato da Cordova stessa                    nella propria homepage. Come accennato questi strumenti permettono,                attraverso l’utilizzo di opzioni diverse da candidato a candidato, una                    realizzazione efficiente delle interfacce utente.  Nel caso specifico non è sembrato utile adottare alcuno di questi strumenti,                        data la semplicità dell’esempio in questione, ma la facilità di integrazione e                        la potenza di questi framework rendono altamente consigliabile il loro                    utilizzo in contingenze diverse.  31 
  • 33. Facendo una semplice ricerca si possono trovate numerosissimi                frameworks adatti a questo scopo, la scelta fra le varie opzioni meriterebbe                        una trattazione ben più ampia, quasi una “tesina dentro la tesina”. Per                        questo motivo ci si limiterà in questa sede ad elencarne alcuni (fra quelli                          consigliati da Cordova stessa ed altri particolarmente famosi) e relative                    caratteristiche principali.    JQueryMobile  JQueryMobile è un UI Framework della famiglia JQuery basato su HTML5.                      Il suo utilizzo risulta particolarmente immediato in quanto consiste nel                    download di alcune librerie, l’importazione nel progetto e nel documento                    index.html​: da quel momento in avanti i suoi metodi e le sue funzioni                          saranno richiamabili facilmente nell’interfaccia. Fornisce, fra gli altri,                numerosi templates, animazioni, transazioni e la gestione della navigazione                  fra le pagine. Leggero, completo e potente è forse la prima opzione da                          analizzare da parte dello sviluppatore.  Sencha Touch  Sencha Touch è un framework MVC basato sull’utilizzo del Javascript. Non                      è solo un UI Framework, ma una piattaforma di sviluppo mobile vera e                          propria che ufficialmente si appoggia a Cordova per l’accesso al                    dispositivo. Fornisce numerosi widgets, layouts e animazioni.  Telerik  Anche Telerik, come Sencha Touch, si presenta come una piattaforma di                      sviluppo a se stante, la quale ancora una volta utilizza Cordova come                        strumento per accedere al dispositivo. Oltre a fornire numerosi componenti                    come le altre opzioni, merita una menzione speciale in quanto rappresenta                      un ide fruibile completamente dal browser. Questo aspetto può lasciare                    quantomeno perplessi in un primo momento gli sviluppatori, ma andandolo                    a testare sorprende per strumenti a disposizione e performance. Tramite il                      download della applicazione AppBuilder (disponibile nei maggiori store di                  applicazioni mobile) è anche possibile effettuare il deploy diretto da                    browser a dispositivo fisico, offrendo anche la possibilità di modificare il                      codice e vederne apportate le modifiche in real­time sul dispositivo.  32 
  • 34. 4.4 Tabella comparativa      Qt  Xamarin  Appcelerator  Cordova  Ide ­ OS  supportati  QtCreator ­  Completo  XamarinStudio ­    NO Linux  Appcelerator  Studio  ­Completo  / ­ Completo  Linguaggi di  programmazi one  QML, C++  C#, AXML  JavaScritp,  HTML (o XML)  Tecnologie Web  Accesso al  dispositivo  Completo*  Completo  Completo ­   Titanium  Scarso ­    Classic  Completo   Deployment  Targets  Mobile,  Desktop,  Embedded  Mobile, Desktop  Mobile,  Desktop  Mobile, Desktop  Strumenti di  sviluppo  “Design”  Numerosi  Moduli  aggiuntivi  Numerosi  Moduli  aggiuntivi  Plugins,  UI Frameworks  Funzionalità  specifiche   /  TestCloud,  Insights  Test nel Cloud,      Insights,  notifiche   /  Gestione  Distribuzione  Hosting  servers  (premium)  /  Hosting e    Versioning   /    *Utilizzando Qt l’accesso completo al dispositivo è possibile unicamente con l’utilizzo                      della JNI e di moduli C++.        33 
  • 35. 5. ​Conclusioni    La prima conclusione doverosa da osservare è che tutte e 4 le piattaforme                          si sono comportate complessivamente bene ed hanno permesso di                  raggiungere l’obiettivo di rispettare le specifiche dell’applicazione di                riferimento presentata. Quindi rimane la domanda, come scegliere?    Probabilmente non esiste una risposta univoca a tale domanda. Soprattutto                    tramite la ricerca effettuata viene alla luce come per ogni situazione                      potrebbe essere più adatta una scelta diversa di volta in volta.    Questa coscienza ci può però aiutare a definire un primo ragionamento da                        considerare nella scelta: trovare il miglior ​“​matching” fra la tipologia                    della nostra applicazione e le caratteristiche della piattaforma​.  Per esempio in presenza di applicazioni orientate al mondo Web,                    risulterebbe sensato ipotizzare Cordova come scelta. Mentre per                applicazioni da una struttura particolarmente complessa il pattern MVC di                    Appcelerator potrebbe risultare molto utile.    Questo criterio non è però sufficiente, perchè anche il ​background delle                      conoscenze di uno sviluppatore può fare una differenza enorme nel                    processo di sviluppo di un’applicazione. Indipendentemente            dall’accoppiamento applicazione­framework infatti, per uno sviluppatore            che conosce bene un ide o un linguaggio di programmazione continuare                      con i propri strumenti potrebbe comunque risultare comunque ben più                    efficiente.     Rileggendo l’elaborato si noterà come, fra l’altro, questi due criteri sono                      emersi anche nell’analisi della scelta fra le varie metodologie di sviluppo:                      Native, CPT, Web.    34 
  • 36. Ancora una volta inoltre c’è da aggiungere che la grande dinamicità del                        mondo dello sviluppo mobile non consente di fossilizzarsi troppo su di una                        scelta. Scelte diverse possono risultare vincenti in contingeze differente.    Si è invece fortemente spinti a rimanere aggiornati su ciò che offre lo                          scenario per saper cogliere tutte le nuove ozpioni disponibili.  Sapersi adattare per utilizzare i migliori strumenti per i propri scopi è la                          condizione fondamentele per non venir tagliati fuori dall’evoluzione.     Il modello Darwin ha forse trovato dopo circa 150 anni un nuovo, ulteriore,                          campo di applicazione.          35