¿Qué es Xamarin?What is Xamarin?

Compilar aplicaciones móviles puede ser tan sencillo como abrir el IDE, escribir y probar una aplicación y enviarla a una Tienda de aplicaciones, todo en una misma tarde.Building mobile apps can be as easy as opening up the IDE, writing and testing an app, and submitting to an App Store – all done in an afternoon. O puede ser un proceso muy complicado que conlleva el diseño riguroso por adelantado, pruebas de facilidad de uso, pruebas de control de calidad en miles de dispositivos, un ciclo de vida completo de versión beta y la implementación de varias maneras diferentes.Or it can be an extremely involved process that involves rigorous up-front design, usability testing, QA testing on thousands of devices, a full beta lifecycle, and then deployment a number of different ways.

En este documento se presenta la plataforma Xamarin.This document introduces the Xamarin platform. Para más información sobre el proceso de compilación de aplicaciones móviles desde el diseño hasta las pruebas, consulte Introducción al ciclo de vida del desarrollo de software móvil.To learn more about the process of building mobile applications from design through to testing, see Introduction to the Mobile Software Development Lifecycle.

Consulte los requisitos del sistema para confirmar que su sistema es compatible.See system requirements to confirm your system.

Introducción a XamarinIntroduction to Xamarin

Al plantearse cómo compilar aplicaciones para iOS y Android, muchas personas piensan que los lenguajes nativos, Objective-C, Swift, Java y Kotlin son la única opción.When considering how to build Android and iOS applications, many people think that the native languages, Objective-C, Swift, Java, and Kotlin, are the only choice.

Xamarin ofrece la posibilidad de desarrollar en C# con una biblioteca de clases y un runtime que funciona en muchas plataformas, como iOS, Android y Windows. Además, permite compilar aplicaciones nativas (no interpretadas) que tienen un rendimiento suficiente incluso para juegos exigentes.Xamarin allows you develop in C#, with a class library and runtime that works across all many platforms, including iOS, Android, and Windows, while still compiling native (non-interpreted) applications that are performant enough even for demanding games.

Xamarin combina las capacidades de las plataformas nativas y agrega una serie de características propias muy eficaces, entre las que se incluyen las siguientes:Xamarin combines all of the abilities of the native platforms and adds a number of powerful features of its own, including:

  1. Enlaces completos para los SDK subyacentes: Xamarin contiene enlaces para casi todos los SDK de plataforma subyacentes en iOS y Android.Complete Binding for the underlying SDKs – Xamarin contains bindings for nearly the entire underlying platform SDKs in both iOS and Android. Además, estos enlaces están fuertemente tipados, lo que significa que la navegación y el uso son fáciles y que proporcionan una sólida comprobación de tipos en tiempo de compilación y durante el desarrollo.Additionally, these bindings are strongly-typed, which means that they’re easy to navigate and use, and provide robust compile-time type checking and during development. Como resultado, se producen menos errores en tiempo de ejecución y aplicaciones de mayor calidad.This leads to fewer runtime errors and higher-quality apps.
  2. Interoperabilidad con Objective-C, Java, C y C++ : Xamarin ofrece funciones para invocar directamente las bibliotecas de Objective-C, Java, C y C++, lo que le permite usar diversos tipos de código de terceros ya creado.Objective-C, Java, C, and C++ Interop – Xamarin provides facilities for directly invoking Objective-C, Java, C, and C++ libraries, giving you the power to use a wide array of 3rd party code that has already been created. Esto le permite aprovechar las ventajas de las bibliotecas existentes de iOS y Android escritas en Objective-C, Java, C o C++.This lets you take advantage of existing iOS and Android libraries written in Objective-C, Java, or C/C++. Además, Xamarin ofrece proyectos de enlace que le permiten enlazar fácilmente bibliotecas nativas de Objective-C y Java mediante una sintaxis declarativa.Additionally, Xamarin offers binding projects that allow you to easily bind native Objective-C and Java libraries using a declarative syntax.
  3. Construcciones de lenguaje moderno: las aplicaciones de Xamarin se escriben en C#, un lenguaje moderno que incluye mejoras considerables en Objective-C y Java, como *características de lenguaje dinámico, construcciones funcionales, como *lambdas, *LINQ, características de programación en paralelo, *genéricos sofisticados, etc.Modern Language Constructs – Xamarin applications are written in C#, a modern language that includes significant improvements over Objective-C and Java such as *Dynamic Language Features, Functional Constructs such as *Lambdas, *LINQ, Parallel Programming features, sophisticated *Generics, and more.
  4. Increíble biblioteca de clases base (BCL) : las aplicaciones de Xamarin usan la BCL de .NET, una gran colección de clases con características completas y optimizadas, como una eficaz compatibilidad con XML, bases de datos, serialización, E/S, cadenas y redes, etc.Amazing Base Class Library (BCL) – Xamarin applications use the .NET BCL, a large collection of classes that have comprehensive and streamlined features such as powerful XML, Database, Serialization, IO, String, and Networking support, and more. El código C# existente se puede compilar para su uso en una aplicación, lo que proporciona acceso a miles de bibliotecas que le permitirán hacer cosas que no contempla la BCL.Existing C# code can be compiled for use in an app, which provides access to thousands of libraries that allow you do things that aren’t covered in the BCL.
  5. Moderno entorno de desarrollo integrado (IDE) : Xamarin usa Visual Studio para Mac en macOS y Visual Studio en Windows.Modern Integrated Development Environment (IDE) – Xamarin uses Visual Studio for Mac on macOS and Visual Studio on Windows. Estos IDE modernos incluyen características como la finalización automática de código, un sofisticado sistema de administración de proyectos y soluciones, una biblioteca exhaustiva de plantillas de proyecto, control de código fuente integrado, etc.These are both modern IDEs that include features such as code auto completion, a sophisticated Project and Solution management system, a comprehensive project template library, integrated source control, and many others.
  6. Compatibilidad multiplataforma móvil: Xamarin ofrece una compatibilidad multiplataforma sofisticada con las tres principales plataformas móviles: iOS, Android y Windows.Mobile Cross Platform Support – Xamarin offers sophisticated cross-platform support for the three major mobile platforms of iOS, Android, and Windows. Es posible escribir aplicaciones de modo que compartan hasta el 90 % del código, y la biblioteca de Xamarin.Mobile ofrece una API unificada para tener acceso a recursos comunes de las tres plataformas.Applications can be written to share up to 90% of their code, and our Xamarin.Mobile library offers a unified API to access common resources across all three platforms. Esto puede reducir considerablemente los costos de desarrollo y el tiempo de salida al mercado en el caso de los desarrolladores móviles que se centran en las tres plataformas móviles más populares.This can significantly reduce both development costs and time to market for mobile developers that target the three most popular mobile platforms.

Gracias al conjunto de características eficaces y completas de Xamarin, se llena un vacío para los desarrolladores de aplicaciones que quieren usar un lenguaje y una plataforma modernos para desarrollar aplicaciones móviles multiplataforma.Because of Xamarin’s powerful and comprehensive feature set, it fills a void for application developers that want to use a modern language and platform to develop cross-platform mobile applications.

Nota

Esta serie de introducción se centra en los primeros pasos para compilar aplicaciones iOS y Android.This Get Started series focuses on getting started building iOS and Android applications. Microsoft ofrece información sobre el desarrollo de la Plataforma universal de Windows (UWP) para tabletas y equipos de escritorio.Microsoft offers information about Universal Windows Platform (UWP) development for tablets and desktops. Para más información sobre el desarrollo multiplataforma con Xamarin (incluidas las aplicaciones UWP para Windows), lea la guía Building Cross-Platform Applications (Creación de aplicaciones multiplataforma).To learn more about cross-platform development with Xamarin (including UWP apps for Windows), read the Building Cross-Platform Applications guide.

¿Cómo funciona Xamarin?How does Xamarin work?

Xamarin ofrece dos productos comerciales: Xamarin.iOS y Xamarin.Android.Xamarin offers two commercial products: Xamarin.iOS and Xamarin.Android. Ambos se basan en Mono, una versión de código abierto de .NET Framework que tiene en cuenta las normas ECMA de .NET publicadas.They’re both built on top of Mono, an open-source version of the .NET Framework based on the published .NET ECMA standards. Mono existe desde hace casi tanto tiempo como el propio .NET Framework y puede ejecutarse en prácticamente todas las plataformas imaginables, incluido Linux, Unix, FreeBSD y macOS.Mono has been around almost as long as the .NET framework itself, and runs on nearly every imaginable platform including Linux, Unix, FreeBSD, and macOS.

En iOS, el compilador Ahead of time (AOT) de Xamarin compila aplicaciones de Xamarin.iOS directamente en código de ensamblado nativo de ARM.On iOS, Xamarin’s Ahead-of-Time ( AOT) Compiler compiles Xamarin.iOS applications directly to native ARM assembly code. En Android, el compilador de Xamarin compila en lenguaje intermedio (IL), que es Just-In-Time (JIT) compilado en ensamblado nativo cuando se inicia la aplicación.On Android, Xamarin’s compiler compiles down to Intermediate Language ( IL), which is then Just-in-Time ( JIT) compiled to native assembly when the application launches.

En ambos casos, las aplicaciones de Xamarin usan un tiempo de ejecución que lo controla todo automáticamente, como la asignación de memoria, la recolección de elementos no utilizados, la interoperabilidad de plataforma subyacente, etc.In both cases, Xamarin applications utilize a runtime that automatically handles things such as memory allocation, garbage collection, underlying platform interop, etc.

Xamarin.iOS.dll y Mono.Android.dllXamarin.iOS.dll and Mono.Android.dll

Las aplicaciones de Xamarin se compilan en un subconjunto de la BCL de .NET conocido como el perfil móvil de Xamarin.Xamarin applications are built against a subset of the .NET BCL known as the Xamarin Mobile Profile. Este perfil se ha creado específicamente para aplicaciones móviles y se ha empaquetado en Xamarin.iOS.dll y Mono.Android.dll (para iOS y Android respectivamente).This profile has been created specifically for mobile applications and packaged in the Xamarin.iOS.dll and Mono.Android.dll (for iOS and Android respectively). Se parece mucho a la manera en que las aplicaciones de Silverlight (y Moonlight) se compilan en el perfil de .NET de Silverlight/Moonlight.This is much like the way Silverlight (and Moonlight) applications are built against the Silverlight/Moonlight .NET Profile. De hecho, el perfil móvil de Xamarin es equivalente al perfil de Silverlight 4.0 con un conjunto de clases de BCL agregadas de nuevo.In fact, the Xamarin Mobile profile is equivalent to the Silverlight 4.0 profile with a bunch of BCL classes added back in.

Para obtener una lista completa de las clases y los ensamblados disponibles, consulte Xamarin.iOS Assembly List (Lista de ensamblados de Xamarin.iOS) y Xamarin.Android Assembly List (Lista de ensamblados de Xamarin.Android).For a full list of available assemblies and classes, see the Xamarin.iOS Assembly List and the Xamarin.Android Assembly List

Además de la BCL, estos archivos .dll incluyen contenedores para casi todo el SDK de iOS y Android, lo que permite invocar las API del SDK subyacente directamente desde C#.In addition to the BCL, these .dlls include wrappers for nearly the entire iOS SDK and Android SDK that allows the underlying SDK APIs to be invoked directly from C#.

Resultado de la aplicaciónApplication output

Cuando se compilan aplicaciones de Xamarin, el resultado es un paquete de aplicación, ya sea un archivo .app en iOS o un archivo .apk en Android.When Xamarin applications are compiled, the result is an Application Package, either an .app file in iOS, or .apk file in Android. Estos archivos no se distinguen de los paquetes de aplicación compilados con los IDE predeterminados de la plataforma y se implementan de la misma manera.These files are indistinguishable from application packages built with the platform's default IDEs and are deployable in the exact same way.

Pasos siguientesNext steps

Ahora que ha aprendido lo básico sobre el funcionamiento de Xamarin, el paso siguiente consiste en empezar a compilar una aplicación con una de estas guías:Now you've learned a little about how Xamarin works, the next step is to start building an app using one of these guides: