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