Che cos'è Xamarin?

Screenshots of example Xamarin application in iOS and Android

Xamarin è una piattaforma open source per la compilazione di applicazioni moderne e a prestazioni elevate per iOS, Android e Windows con .NET. Xamarin è un livello di astrazione che gestisce la comunicazione del codice condiviso con il codice della piattaforma sottostante. Xamarin viene eseguito in un ambiente gestito che offre diversi vantaggi, ad esempio l'allocazione della memoria e la Garbage Collection.

Xamarin consente agli sviluppatori di condividere una media del 90% delle applicazioni su più piattaforme. Questo modello consente agli sviluppatori di scrivere tutta la logica di business in un unico linguaggio (o di riutilizzare il codice dell'applicazione esistente), replicando in ogni piattaforma le prestazioni e l'aspetto originari.

Le applicazioni Xamarin possono essere scritte su PC o Mac e vengono compilate in pacchetti dell'applicazione nativa, ad esempio un file APK in Android o un file IPA in iOS.

Nota

Per la compilazione e la distribuzione di applicazioni per iOS è attualmente necessario un computer MacOS. Per altre informazioni sui requisiti di sviluppo, vedere Requisiti di sistema.

Destinatari di Xamarin

Xamarin è destinato agli sviluppatori con gli obiettivi seguenti:

  • Condividere il codice, i test e logica di business tra le piattaforme.
  • Scrivere applicazioni multipiattaforma in C# con Visual Studio.

Funzionamento di Xamarin

Diagram of Xamarin architecture

Il diagramma illustra l'architettura generale di un'applicazione Xamarin multipiattaforma. Xamarin consente di creare un'interfaccia utente nativa in ogni piattaforma e di scrivere in C# la logica di business da condividere tra le piattaforme. Nella maggior parte dei casi, l'80% del codice dell'applicazione è condivisibile tramite Xamarin.

Xamarin si basa su .NET, che gestisce automaticamente attività quali allocazione di memoria, Garbage Collection e interoperabilità con le piattaforme sottostanti.

Per altre informazioni sull'architettura specifica di una piattaforma, vedere Xamarin.Android e Xamarin.iOS.

Funzionalità aggiunte

Xamarin combina le capacità delle piattaforme native, aggiungendo funzionalità che includono:

  1. Binding completo per l'SDK sottostante: Xamarin include binding per quasi tutti gli SDK della piattaforma sottostante in iOS e in Android. Inoltre, questi binding sono fortemente tipizzati, il che significa che sono semplici da esplorare e usare e forniscono un solido controllo del tipo in fase di compilazione e durante lo sviluppo. I binding fortemente tipizzati comportano un minor numero di errori di runtime e applicazioni di qualità superiore.
  2. Interoperabilità con Objective-C, Java, C e C++: Xamarin offre funzionalità per richiamare direttamente librerie Objective-C, Java, C e C++, assicurando la possibilità di usare un'ampia gamma di codice di terze parti. Queste funzionalità consentono di usare le librerie iOS e Android esistenti scritte in Objective-C, Java o C/C++. Xamarin offre inoltre progetti di binding che consentono di associare librerie native di Objective-C e Java usando la sintassi dichiarativa.
  3. Costrutti di linguaggio moderni: le applicazioni Xamarin sono scritte in C#, un linguaggio moderno che include miglioramenti significativi rispetto a Objective-C e Java, ad esempio funzionalità del linguaggio dinamiche, costrutti funzionali come espressioni lambda, LINQ, programmazione parallela e altro ancora.
  4. Libreria di classi base solida: le applicazioni Xamarin usano la libreria di classi base .NET, una vasta raccolta di classi con funzionalità complete e ottimizzate quali il supporto avanzato per XML, database, serializzazione, I/O, stringhe, reti e altro ancora. Il codice C# esistente può essere compilato per l'uso nelle app, garantendo l'accesso a migliaia di librerie che offrono altre funzionalità oltre a quelle della libreria di classi base.
  5. IDE (Integrated Development Environment) moderno: Xamarin usa Visual Studio, un IDE moderno che include funzionalità come completamento automatico del codice, sistema avanzato di gestione di progetti e soluzioni, libreria di modelli di progetto completa, controllo del codice sorgente integrato e altro ancora.
  6. Supporto multipiattaforma per dispositivi mobili: Xamarin offre un supporto multipiattaforma sofisticato per le tre principali piattaforme iOS, Android e Windows. Le applicazioni possono essere scritte per condividere fino al 90% del codice e Xamarin.Essentials offre un'API unificata per accedere alle risorse comuni in tutte e tre le piattaforme. Il codice condiviso può ridurre notevolmente i costi di sviluppo e i tempi di immissione sul mercato per gli sviluppatori per dispositivi mobili.

Xamarin.Android

Xamarin.Android architecture diagram

Le applicazioni Xamarin.Android vengono compilate da C# nel linguaggio intermedio (IL), che viene quindi compilato in modalità JIT (Just-In-Time) in un assembly nativo all'avvio dell'applicazione. Le applicazioni Xamarin.Android vengono eseguite all'interno dell'ambiente di esecuzione di Mono, side-by-side con la macchina virtuale Android Runtime (ART). Xamarin fornisce i binding .NET agli spazi dei nomi Android.* e Java.*. L'ambiente di esecuzione di Mono chiama questi spazi dei nomi tramite MCW (Managed Callable Wrapper) e fornisce ACW (Android Callable Wrapper) ad ART, consentendo a entrambi gli ambienti di richiamare il codice reciprocamente.

Per altre informazioni, vedere Architettura di Xamarin.Android.

Xamarin.iOS

Xamarin.iOS architecture diagram

Le applicazioni Xamarin.iOS sono compilate completamente in modalità AOT (Ahead Of Time) da C# nel codice dell'assembly ARM nativo. Xamarin usa selettori per esporre Objective-C a C# gestito e Registrars per esporre il codice C# gestito a Objective-C. I selettori e Registrars collettivamente sono denominati "associazioni" e consentono a Objective-C e C# di comunicare.

Per altre informazioni, vedere Architettura di Xamarin.iOS.

Xamarin.Essentials

Xamarin.Essentials è una libreria che fornisce API multipiattaforma per le funzionalità native dei dispositivi. Come Xamarin stesso, Xamarin.Essentials è un'astrazione che semplifica il processo di accesso alle funzionalità native. Ecco alcuni esempi di funzionalità fornite da Xamarin.Essentials :

  • Informazioni dispositivo
  • File system
  • Accelerometer
  • Dialer telefono
  • Sintesi vocale
  • Blocco dello schermo

Per ulteriori informazioni, vedere Xamarin.Essentials.

Xamarin.Forms

Xamarin.Forms è un framework dell'interfaccia utente open source. Xamarin.Forms consente agli sviluppatori di compilare applicazioni Xamarin.iOS, Xamarin.Android e Windows da una singola codebase condivisa. Xamarin.Forms consente agli sviluppatori di creare interfacce utente in XAML con code-behind in C#. Queste interfacce utente vengono visualizzate come controlli nativi a prestazioni elevate in ogni piattaforma. Ecco alcuni esempi di funzionalità fornite da Xamarin.Forms :

  • Lingua dell'interfaccia utente XAML
  • Data binding
  • Gesti
  • Effetti
  • Applicazione stile in corso

Per ulteriori informazioni, vedere Xamarin.Forms.

Operazioni preliminari

Le guide seguenti consentono di compilare la prima app usando Xamarin:

Altri video di Xamarin sono disponibili su Channel 9 e YouTube.