La continua evoluzione dei dispositivi mobili ha spinto gli sviluppatori di app a studiare i meccanismi dei principali sistemi operativi mobili per poter distribuire le proprie app su ogni market. Sono stati proposti diversi framework, come Apache Cordova e Ionic, per realizzare app ibride cross-platform in HTML5 e Javascript, che sfruttano gli approcci tipici delle app native e delle webapp insieme ai classici strumenti della tecnologia Web.
Nonostante la notevole semplificazione introdotta da questi framework nello sviluppo di app cross-platform, è stata riscontrata da subito l'impossibilità di sfruttare a pieno le caratteristiche tipiche delle diverse piattaforme mobile, evidenziando difetti come una mancata o incompleta integrazione dell'aspetto grafico con la specifica piattaforma e una maggiore lentezza nell'esecuzione e accesso alle risorse locali. Tali framework, inoltre, non permettono (se non in modo limitato) il riutilizzo e l'integrazione di codice preesistente sviluppato in nativo per le singole applicazioni.
Per risolvere (almeno in parte) tali difficoltà, nel Maggio 2011 nasce Xamarin, una società informatica creata da N. Friedman e M. de Icaza, quest'ultimo noto per aver coordinato la realizzazione di Mono (framework open source per l'implementazione del .NET Framework di Microsoft su Linux). L'idea di Xamarin è di offrire agli sviluppatori un modo semplice e veloce per creare app cross-platform basate su un unico linguaggio orientato agli oggetti attraverso ambienti di sviluppo prestanti. Per raggiungere tale obiettivo, è stato creato il framework Xamarin basato su Mono e quindi C#.
Nato come progetto indipendente, nel corso degli anni ha raggiunto l'approvazione non solo degli sviluppatori (oltre 1.2 milioni) ma anche delle aziende (oltre 15 mila). Tra le manifestazione di interesse più significative è da segnalare quella di Microsoft, che nel 2016 ha acquisito Xamarin dando inizio a una nuova era per lo sviluppo di app cross-platform. A partire da Marzo 2016 Xamarin è inoltre ufficialmente Open Source e gratuito per sviluppatori indipendenti e piccoli team, che possono per utilizzarlo nei propri progetti.
Xamarin Framework
Xamarin è un framework per lo sviluppo di app native e cross-platform con C#. Il framework si basa sul progetto open source Mono offrendo pieno supporto non solo alle piattaforme Android e iOS ma anche a Windows Phone.
Come si evince dalla figura precedente, Xamarin si compone di tre componenti principali:
Xamarin.Android | Basato su Mono, permette lo sviluppo di app Android tramite un wrapping delle API native in C# |
---|---|
Xamarin.iOS | Basato sulla libreria proprietaria MonoTouch, offre pieno supporto allo sviluppo di app iOS tramite un wrapping delle API native in C# |
Xamarin.Forms | Si pone al di sopra dei precedenti componenti e permette la piena condivisione del codice |
Grazie a queste componenti è possibile gestire in C# tutte le caratteristiche di Android, iOS e Windows Phone, dall'interfaccia utente alle risorse hardware del dispositivo. Tale suddivisione permette di gestire la UI attraverso:
- elementi tipici delle singole piattaforme (grazie al binding con le SDK native);
- elementi definiti in Xamarin.Forms nel caso di app cross-platform in cui è necessario mostrare agli utenti una UI più familiare.
Uno dei principali benefici di Xamarin, infatti, è la possibilità di sviluppare contemporaneamente un'app per diverse piattaforme grazie a Xamarin.Forms.
Come riportato in figura 2, una soluzione cross-platform basata su Xamarin.Forms offre una architettura a tre strati, partendo dal basso:
Core Library | Offre la logica dell'applicazione e di accesso ai dati definita in C# |
---|---|
Cross-Platform UI Layer | È lo strato contenente tutta la UI realizzata, ad esempio, con Xamarin.Forms definita in C# |
Platform-Specific Inizialization Code | Ha un piccola porzione di codice in C# nei progetti di ogni piattaforma ed è necessario per inizializzare ed eseguire l'app su ogni OS nativo |
Requisiti, IDE e limitazioni
I requisiti di Xamarin sono gli stessi previsti per l'utilizzo delle SDK di Android, iOS e Windows Phone, data la natura del framework che si basa su queste. Un aspetto importante è il sistema operativo su cui sviluppare, in quanto Xamarin limita la scelta solo a Mac OS X e Windows, escludendo almeno per ora gli utenti Linux. Xamarin offre la possibilità di usare due diversi IDE per lo sviluppo di app native, cross-platform e desktop:
IDE | Descrizione |
---|---|
Xamarin Studio | Realizzato da Xamarin, permette la creazione di app iOS, Android e Mac e include l'integrazione con le SDK native, strumenti di debug e diverse funzionalità per la scrittura di codice. |
Visual Studio (VS) | Offre un ambiente intuitivo e facilmente estendibile. Nel 2015, è stata rilasciata una versione gratuita, Visual Studio Community, con l’occorrente per la creazione di app moderne mobile, desktop e web. |
Nonostante la possibilità di sviluppare app cross-platform e native, ci si trova a dover affrontare i limiti imposti dalle piattaforme mobile. Di seguito è riportata una tabella che mostra i limiti delle due IDE per i due sistemi operativi considerati.
Figura 3. Schema riassuntivo delle limitazioni tra IDE, OS e Xamarin (fonte: xamarin.com) (click per ingrandire)
Su Mac OS X è possibile utilizzare Xamarin Studio solo per la creazione di app native e cross-platform, fatta eccezione per Windows. Recentemente (Novembre 2016), Microsoft ha rilasciato Visual Studio for Mac offrendo quindi un IDE alternativo a Xamarin Studio per lo sviluppo di app Xamarin. Su Windows, invece, è possibile utilizzare Xamarin Studio solo per Android, mentre con Visual Studio non è possibile sviluppare app per Mac OS X ed è necessario un Mac (raggiungibile in rete) per compilare e testare le app per iOS.
La scelta dell'IDE e del sistema operativo da utilizzare è quindi legata al modello di business previsto per la nostra app.
Iscrizione a Xamarin
A differenza dagli altri framework cross-platform, fino a poco tempo fa l'utilizzo di Xamarin era vincolato alla sottoscrizione ad uno specifico piano tariffario (Indie, Business, Enterprise). Con l'acquisizione di Microsoft, Xamarin è diventato ufficialmente Open Source e gratuito, offrendo quindi pieno accesso al framework e permettendo di utilizzarlo in tutte le versioni di Visual Studio. Xamarin, infine, offre la possibilità agli studenti di lavorare con tutte le caratteristiche del framework attraverso una sottoscrizione gratuita di un anno, disponibile tramite il programma Dreamspark.
Questa guida ha lo scopo di fornire le basi per lavorare con Xamarin.Forms impiegando Visual Studio 2015 come IDE per lo sviluppo di app mobile cross-platform.