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.
36
Embed
Linguaggi e piattaforme per lo sviluppo di applicazioni mobile michele agostini
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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 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 CrossPlatform/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)
❏ CrossCompiled ❏ 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 ObjectiveC/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 crosscompiled 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 containerapplicazione nativo della singola piattaforma. È installato, avviato e utilizzato come qualsiasi applicazione nativa, è scritto in HTML, JavaScript e CSS.
● nel caso di applicazioni crosscompiled 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 writeonceruneverywhere.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 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:
Concentrandosi sul lato Deviceside è 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.
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’ObjectiveC, 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 crossplatform 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”.
5Source: 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 crossplatform
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 crossplatform
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
CrossCompiled
● 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.
6Source: 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 indirizzohumanreadable e salvi ogni checkin 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 diGoogle 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 Crosscompiled, risultano le seguenti:
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 realtime 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 sviluppiClassic 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 realtime 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 opensource 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 opensource è 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 opensource, 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 opensource 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 realtime sul dispositivo.
*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 applicazioneframework 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.