linguaggi e piattaforme per lo sviluppo di applicazioni mobile michele agostini

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

Upload: michele-agostini

Post on 12-Apr-2017

226 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

  

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.          

 

Page 2: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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              

Page 3: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 4: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

 Fig.1 ­ IDC Worldwide Quarterly Mobile Phone Tracker, February 24th, 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                   

Page 5: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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” 

Page 6: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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.    

                

Page 7: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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” 

 

Page 8: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 applicazioniibride, 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.  

Page 9: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

 

 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 daVisual 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:  

Page 10: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

 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                     

4Source: Visual Mobile, State of the Developer Nation Q1 2015, February 2015. 

Page 11: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 12: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

 

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

5Source: Visual Mobile, State of the Developer Nation Q1 2015, February 2015. 

11 

Page 13: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 14: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

 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 

Page 15: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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.  

6Source: Visual Mobile, State of the Developer Nation Q1 2015, February 2015. 

14 

Page 16: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 17: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

● 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 indirizzohuman­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 

Page 18: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

 

   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 diGoogle Maps viene tradotta in indirizzo“human readable” e mostrata                       nella mappa. 

 17 

Page 19: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 20: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 21: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

 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 

Page 22: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 23: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 24: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 25: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 26: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 27: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

 

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 sviluppiClassic e                      con la SDK Titanium (o Alloy) si differenziano per per l’utilizzo dell’HTML il                         primo e dell’XML il secondo.  

26 

Page 28: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

 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 

Page 29: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 30: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 31: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 32: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 33: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 34: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

4.4 Tabella comparativa  

  Qt  Xamarin  Appcelerator  Cordova 

Ide ­ OS supportati 

QtCreator ­ Completo 

XamarinStudio ­   NO Linux 

Appcelerator Studio ­Completo 

/ ­ Completo 

Linguaggi di programmazione 

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 

Page 35: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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 

Page 36: Linguaggi e piattaforme per lo sviluppo di applicazioni mobile   michele agostini

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