- Learn
- Guida Titanium
- Introduzione ad Appcelerator Titanium
Introduzione ad Appcelerator Titanium
Lo sviluppo di applicazioni mobile sta diventando sempre più importante nel panorama software consumer e soprattutto enterprise. In un mercato in crisi e difficile come quello odierno, le imprese hanno sempre più la necessità di produrre soluzioni fruibili da tablet o smartphone.
Sviluppare app native o ibride?
Lo sviluppo di una applicazione mobile pone sempre alcuni interrogativi legati alla piattaforma da adottare. Meglio iOS o Android? Meglio una soluzione nativa oppure ibrida o totalmente Web? Meglio sviluppare in outsourcing oppure sfruttare competenze già acquisite in azienda dal personale IT?
Le principali piattaforme mobile sul mercato si appoggiano a tecnologie non compatibili tra loro, per cui lo sviluppo nativo cross platform implica il dover produrre ciascuna app per iOS e Android utilizzando due progetti distinti: uno per piattaforma. Ciò implica la necessità di preparare asset grafici che rispettino le linee guida dei produttori, avere a disposizione team di sviluppo che sappiano programmare in Objective-C e Java, e quindi dover gestire due basi di codice separate, che vanno altresì documentate e sottoposte a debug e testing.
Spesso non si hanno a disposizione sviluppatori con le competenze necessarie e non è nemmeno semplice riconvertire un team a sviluppare per mobile. Lo sviluppo di un’app cross-platform potrebbe tradursi in un aumento dei costi e dei tempi di consegna difficilmente sostenibile.
App HTML5?
Per risolvere questa situazione potenzialmente complessa alcuni adottano lo sviluppo di applicazioni web o ibride da far girare sui loro dispositivi. Questo tipo di soluzioni hanno il vantaggio di essere scritte utilizzando HTML5, CSS e JavaScript e che possono girare teoricamente su qualsiasi device. Purtroppo, anche in questo caso, non sempre è possibile adottare questa strategia; le ragioni sono molteplici:
- Minimo comune denominatore
Le WebApp, pur avendo la capacità di interagire con l’hardware di un dispositivo mobile, rischiano di rappresentare il minimo comune denominatore tra le caratteristiche di ciascuna piattaforma. Ciò implica che difficilmente potranno usufruire delle funzionalità avanzate di ogni singolo dispositivo, nè dei servizi di alto livello offerti dall’ultima release di un sistema operativo mobile. - Performance
Esiste un problema legato alle prestazioni: trattandosi di applicazioni che girano in una WebView, non si possono ottenere performance pari a quelle di una equivalente applicazione nativa. - Conformità alle linee guida
Una WebApp non sfrutta le linee guida della user experience del dispositivo. Questo è spesso un requisito importante, di cui occorre tenere conto nello sviluppo dell’applicazione, e che richiederebbe l’adozione di uno stile e di una UX costruita ad hoc per essere simile a quella nativa di ciascuna piattaforma.
App cross-platform in JavaScript (ma non HTML5)
Titanium è un sistema di sviluppo che permette di scrivere applicazioni cross-platform utilizzando un solo linguaggio di programmazione: JavaScript. Questo consente ai programmatori provenienti dallo sviluppo su web di riutilizzare le proprie competenze anche in ambito mobile, producendo applicazioni native (cioè che non girano dentro una WebView) e multipiattaforma.
Ad oggi, Titanium (l’ultima versione è la 3.2.3 GA) supporta lo sviluppo su iOS, Android, MobileWeb (HTML5), Blackberry e Tizen.
Architettura
Titanium è un framework di tipo write once adapt everywhere, cioè un framework in cui gran parte della logica di business, delle funzioni di base, della gestione degli eventi può essere considerata al 100% cross platform, ma dove è possibile specializzare il codice per sfruttare alcune caratteristiche tipiche di una piattaforma e non disponibili sulle altre. Un caso tipico è l’interfaccia utente.
Per fare un esempio, le UI di Android e iOS hanno entrambe a disposizione widget come le etichette (Label) e i pulsanti (Button) ma iOS ha widget che non sono presenti in Android (le Coverflow per citarne una) e viceversa (le ActionBar per esempio).
Titanium permette di scrivere app in grado di sfruttare le peculiarità di ciascuna piattaforma su cui è previsto il rilascio: sarà possibile, ad esempio, utilizzare l’ActionBar se l’app gira su Android oppure farne a meno nel caso di altri sistemi operativi.
Come funziona Titanium?
Titanium fa da ponte tra il codice sorgente dell’applicazione e il sistema operativo nativo. Le applicazioni, scritte in JavaScript non usano il DOM ma effettuano chiamate all’API esposta dall’SDK di Titanium.
Quando si scrive un’applicazione che, per esempio, fa chiamate al sistema operativo per disegnare un pulsante o per interrogare il GPS, si deve chiamare in realtà una funzione dell’SDK che, attraverso l’uso di oggetti Proxy, permette di mappare le richieste fatte attraverso JavaScript nelle equivalenti chiamate in codice nativo.
Lo stesso meccanismo funziona nella direzione opposta: quando il sistema operativo deve notificare un evento all’applicazione (per esempio un pulsante premuto o un altro evento dell’interfaccia utente), l’evento viene trasportato in alto (bubbling) fino a poter essere gestito dentro il codice JavaScript.
Il sistema dei proxy permette alle applicazioni Titanium di avere il look and feel delle applicazioni native (perchè la UI è disegnata attraverso chiamate ai metodi nativi del sistema operativo) con il vantaggio per lo sviluppatore di dover gestire un solo progetto e una sola base di codice per più piattaforme, per di più utilizzando un linguaggio semplice e potente come JavaScript.
Le applicazioni risultanti saranno leggermente più lente delle equivalenti native, ma il tempo di sviluppo, soprattutto se multipiattaforma, è ridotto al minimo.
Titanium è gratuito (esiste una versione enterprise a pagamento), è disponibile per OSX, Windows e Linux. Può essere usato sia con la IDE proprietaria (Titanium Studio) che con una CLI (Command Line Interface) basata su Node.js e personalizzabile. Per chi usa editor come Sublime Text, sono presenti molti plugin (uno su tutti: sublime-ti-build) per scrivere e compilare senza utilizzare l’IDE.
Titanium Studio è dotato comunque di un debugger integrato che permette il debug dell’applicazione sia sul simulatore che sul dispositivo fisico, quest’ultimo indispensabile nel caso di sviluppo su Android (dato che l’emulatore di Google non è molto performante).
Per chi vuole iniziare a sviluppare app con Titanium è
sicuramente necessario conoscere JavaScript. Chi ha nozioni di HTML,
XML e CSS troverà facile e intuitivo lavorare con i
progetti Alloy, il framework MVC di Titanium. Non
sono necessarie le competenze per lo sviluppo in codice nativo (Java e/o
Objective-C), a meno che non si vogliano creare moduli esterni. Chi
ha già programmato in ambiente Node.js potrà utilizzare la
versione Titanium, Node.ACS, che permette di associare a ciascuna
app un backend Node.js online che gira sul cloud di Appcelerator.
Nella prossima lezione vedremo come installare Titanium e quali strumenti ci mette a disposizione per lo sviluppo delle nostre applicazioni native.
Se vuoi aggiornamenti su JavaScript, mobile inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Backend per applicazioni mobile con Azure e JavaScript
Eva Gjeci mostra come sfruttare gli Azure Mobile Services come backend per applicazioni iOS, Android e Windows Phone.