Sviluppare un'app mobile spesso comporta un dispendio di risorse non indifferente, in quanto è necessario programmapre l'applicazione almeno due volte, una per Android e una per iOS, e volendo una terza per Windows Phone. Questo se si vuole creare un'app nativa, in caso invece ci si "accontenti" di prestazioni non particolarmente brillanti si può optare per un approccio ibrido utilizzando Cordova, che è la strada più spesso utilizzata per lo sviluppo di applicazioni multipiattaforma da almeno 5 anni a questa parte.
Fortunatamente nel tempo più di un'azienda si è posta il problema di creare strumenti per lo sviluppo di app cross platform senza rinunciare a prestazioni native, qui di seguito vi presentiamo 5 di questi strumenti.
React Native
React Native è un tool di sviluppo mobile derivato dall'ormai famosa libreria JavaScript React, sviluppata da Facebook.
Come la sua controparte per Web, React Native si focalizza nello sviluppo di UI tramite componenti scritti in JavaScript, su un approccio funzionale e flusso di dati unidirezionale.
Chi ha già lavorato con React si ritroverà di fronte a dei concetti familiari in quanto i componenti vengono scritti nello stesso identico modo, compresa la possibilità di usare JSX. La differenza è che React Native non manipola il canonico DOM del browser ma una struttura diversa, quindi i componenti non vengono costruiti a partire da elementi HTML, ma bensì a partire da un set di componenti base presenti nella libreria che vanno da bottoni, input testuali, datepicker, liste, etc.
Da notare che il motto di React Native è "Learn once, write anywhere", il che significa che una volta compresa la logica di React questa si può applicare alla scrittura di app per ogni piattaforma. React Native infatti non si pone forzatamente l'obiettivo del "Write once, run everywhere", ma lascia una porta aperta agli elementi nativi della piattaforma. La libreria base infatti presenta già di per sè un certo numero di componenti specifici per le piattaforme iOS e Android, ma oltre a questo permette di integrare facilmente nella sua struttura componenti nativi scritti in Objective-C, Java o Swift.
Al momento con React Native è possibile sviluppare applicazioni per iOS e Android.
Xamarin
Probabilmente una delle prime aziende ad essersi posta il problema dello sviluppo mobile multipiattaforma, Xamarin ha sviluppato un nuovo framework mobile a partire da Mono, l'implementazione OpenSource di .Net e ha reso quindi possibile lo sviluppo di applicazioni mobile in C#.
In tempi recenti Xamarin è stata acquisita da Microsoft che ha deciso di rendere OpenSource e gratuito lo Xamarin Framework che era in precedenza utilizzabile solo a pagamento.
Con Xamarin è possibile creare app mobile cross-platform utilizzando la libreria Xamarin.Forms che racchiude tutta una serie di componenti UI condivisi su tutte le piattaforme compatibili, che sono iOS, Android e Windows Phone. Alternativamente è comunque possibile utilizzare componenti nativi della singola piattaforma per l'interfaccia utente, riutilizzando comunque buona parte della logica.
NativeScript
NativeScript è un framework OpenSource che consente di realizzare app mobile in JavaScript o TypeScript ed è ottimizzato per l'utilizzo di Angular.
In NativeScript la logica e l'interfaccia utente vengono definiti in file separati: la logica in file di codice JavaScript o TypeScript, mentre il layout della UI viene definito in dei file XML.
La libreria base fornisce un set, non immenso a dire il vero, di componenti di base semplici, il cui stile si può modificare tramite CSS.
La cosa però interessante è la possibilità di integrare nei propri progetti tutta una serie di plugin, molti dei quali testati e verificati da Telerik, l'azienda che sviluppa NativeScript, e molti altri community driven che si possono trovare su npm.
Con NativeScript si possono realizzare app mobile per iOS e Android.
Weex
Weex è il progetto meno maturo tra quelli qui proposti, ma comunque promettente. Anche Weex consente di sviluppare applicazioni per dispositivi mobili tramite JavaScript e la sua particolarità è quella di aver integrato il framework Vue.js.
La struttura delle applicazioni è a componenti, che vengono definiti in file .vue e contengono sia la parte di "view" scritta con la semantica HTML, sia la logica scritta in JavaScript. Chi ha già sviluppato web apps con Vue.js si troverà a casa.
Il maggior problema di Weex è al momento la mancanza di una documentazione estesa, ma il progetto ha molte potenzialità e il fatto che si basi su Vue.js, framework molto apprezzato e in rapida crescita, è di sicuro un plus.
Weex permette di creare app per iOS e Android.
Fuse Tools
Fuse Tools è un framework e un set di strumenti per la creazione di app mobile particolare rispetto agli altri qui menzionati.
Gli sviluppatori di Fuse Tools hanno infatti creato uno specifico linguaggio, UX Markup, dichiarativo simil-XML per la definizione della UI che consente di definire i componenti dell'interfaccia, come vengono animati e come rispondono agli eventi.
UX Markup viene compilato nel linguaggio nativo della piattaforma mobile per avere le massime prestazioni e si avvale anche dell'accelerazione OpenGL.
La logica dell'applicazione può essere invece scritta in JavaScript, e viene eseguita in un processo separato rispetto al codice dell'interfaccia utente per mantenere sempre un'esperienza di utilizzo fluida.
Eventualmente è anche possibile estendere la piattaforma tramite un altro linguaggio specifico, chiamato Uno, molto simile a C# che permette di interfacciarsi con codice e librerie native o di scrivere nuovi effetti grafici accelerati tramite OpenGL.
Con Fuse Tools è possibile creare app mobile per iOS e Android.