¿Qué es Xamarin?What is Xamarin?

Capturas de pantallas de la aplicación Xamarin de ejemplo en iOS y AndroidScreenshots of example Xamarin application in iOS and Android

Xamarin es una plataforma de código abierto para compilar aplicaciones modernas y con mejor rendimiento para iOS, Android y Windows con .NET.Xamarin is an open-source platform for building modern and performant applications for iOS, Android, and Windows with .NET. Xamarin es una capa de abstracción que administra la comunicación de código compartido con el código de plataforma subyacente.Xamarin is an abstraction layer that manages communication of shared code with underlying platform code. Xamarin se ejecuta en un entorno administrado que proporciona ventajas como la asignación de memoria y la recolección de elementos no utilizados.Xamarin runs in a managed environment that provides conveniences such as memory allocation and garbage collection.

Xamarin permite a los desarrolladores compartir un promedio del 90 % de la aplicación entre plataformas.Xamarin enables developers to share an average of 90% of their application across platforms. Este patrón permite a los desarrolladores escribir toda la lógica de negocios en un solo lenguaje (o reutilizar el código de aplicación existente), pero conseguir un rendimiento y una apariencia nativos en cada plataforma.This pattern allows developers to write all of their business logic in a single language (or reuse existing application code) but achieve native performance, look, and feel on each platform.

Las aplicaciones de Xamarin se pueden escribir en PC o Mac, y compilar en paquetes de aplicación nativos, como un archivo .apk en Android o .ipa en iOS.Xamarin applications can be written on PC or Mac and compile into native application packages, such as an .apk file on Android, or an .ipa file on iOS.

Nota

Para la compilación e implementación de aplicaciones para iOS, en la actualidad se necesita un equipo MacOS.Compiling and deploying applications for iOS currently requires a MacOS machine. Para más información sobre los requisitos de desarrollo, vea Requisitos del sistema.For more information about development requirements, see system requirements.

A quién va destinado XamarinWho Xamarin is for

Xamarin es para desarrolladores con los siguientes objetivos:Xamarin is for developers with the following goals:

  • Compartir código, pruebas y lógica de negocios entre plataformas.Share code, test and business logic across platforms.
  • Escribir aplicaciones multiplataforma en C# con Visual Studio.Write cross-platform applications in C# with Visual Studio.

Funcionamiento de XamarinHow Xamarin works

Diagrama de la arquitectura de Xamarin

En el diagrama se muestra la arquitectura general de una aplicación Xamarin multiplataforma.The diagram shows the overall architecture of a cross-platform Xamarin application. Xamarin permite crear una interfaz de usuario nativa en cada plataforma y escribir lógica de negocios en C# que se comparte entre plataformas.Xamarin allows you to create native UI on each platform and write business logic in C# that is shared across platforms. En la mayoría de los casos, con Xamarin se puede compartir el 80 % del código de la aplicación.In most cases, 80% of application code is sharable using Xamarin.

Xamarin se agrega a .NET, que controla de forma automática tareas como la asignación de memoria, la recolección de elementos no utilizados y la interoperabilidad con las plataformas subyacentes.Xamarin is built on top of .NET, which automatically handles tasks such as memory allocation, garbage collection and interoperability with underlying platforms.

Para más información sobre la arquitectura específica de la plataforma, vea Xamarin.Android y Xamarin.iOS.For more information about platform-specific architecture, see Xamarin.Android and Xamarin.iOS.

Características agregadasAdded features

Xamarin combina las funciones de las plataformas nativas y agrega una serie de características, entre las que se incluyen las siguientes:Xamarin combines the abilities of native platforms and adds a number of features, 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. Los enlaces fuertemente tipados producen menos errores en tiempo de ejecución y aplicaciones de mayor calidad.Strongly-typed bindings lead to fewer runtime errors and higher-quality applications.
  2. Interoperabilidad con Objective-C, Java, C y C++ : Xamarin ofrece funciones para invocar directamente bibliotecas de Objective-C, Java, C y C++, lo que permite usar una amplia variedad de código de terceros.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 third party code. Estas funciones permiten usar bibliotecas existentes de iOS y Android escritas en Objective-C, Java, C o C++.This functionality lets you use existing iOS and Android libraries written in Objective-C, Java, or C/C++. Además, Xamarin ofrece proyectos de enlace que permiten enlazar bibliotecas nativas de Objective-C y Java mediante una sintaxis declarativa.Additionally, Xamarin offers binding projects that allow you to bind native Objective-C and Java libraries using a declarative syntax.
  3. Construcciones de lenguaje moderno: las aplicaciones Xamarin se escriben en C#, un lenguaje moderno que incluye mejoras considerables con respecto a 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 y mucho más.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, generics, and more.
  4. Biblioteca de clases base (BCL) sólida: las aplicaciones Xamarin usan la BCL de .NET, una gran colección de clases con características completas y optimizadas, como una compatibilidad eficaz con XML, bases de datos, serialización, E/S, cadenas, redes, etc.Robust 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 de C# existente se puede compilar para usarlo en una aplicación, lo que proporciona acceso a miles de bibliotecas que agregan funcionalidad más allá de la BCL.Existing C# code can be compiled for use in an app, which provides access to thousands of libraries that add functionality beyond the BCL.
  5. Entorno de desarrollo integrado (IDE) moderno: Xamarin usa Visual Studio, un IDE moderno que incluye características como la finalización automática de código, un sofisticado sistema de administración de proyectos y soluciones, una exhaustiva biblioteca de plantillas de proyecto, control de código fuente integrado, etc.Modern Integrated Development Environment (IDE) – Xamarin uses Visual Studio, a modern IDE that includes features such as code auto completion, a sophisticated project and solution management system, a comprehensive project template library, integrated source control, and more.
  6. Compatibilidad multiplataforma móvil: Xamarin ofrece una compatibilidad multiplataforma sofisticada con las tres principales plataformas: iOS, Android y Windows.Mobile cross-platform support – Xamarin offers sophisticated cross-platform support for the three major platforms of iOS, Android, and Windows. Se pueden escribir aplicaciones de modo que compartan hasta el 90 % del código, y Xamarin.Essentials ofrece una API unificada para acceder a recursos comunes de las tres plataformas.Applications can be written to share up to 90% of their code, and Xamarin.Essentials offers a unified API to access common resources across all three platforms. El código compartido puede reducir considerablemente los costos de desarrollo y el tiempo de salida al mercado para los desarrolladores para dispositivos móviles.Shared code can significantly reduce both development costs and time to market for mobile developers.

Xamarin.AndroidXamarin.Android

Diagrama de la arquitectura de Xamarin.AndroidXamarin.Android architecture diagram

Las aplicaciones Xamarin.Android se compilan desde C# en lenguaje intermedio (IL) que, después, se compila Just-in-Time (JIT) en un ensamblado nativo cuando se inicia la aplicación.Xamarin.Android applications compile from C# into Intermediate Language (IL) which is then Just-in-Time (JIT) compiled to a native assembly when the application launches. Las aplicaciones Xamarin.Android se ejecutan en el entorno de ejecución Mono, en paralelo con la máquina virtual en tiempo de ejecución de Android (ART).Xamarin.Android applications run within the Mono execution environment, side by side with the Android Runtime (ART) virtual machine. Xamarin proporciona enlaces .NET a los espacios de nombres Android.* y Java.*.Xamarin provides .NET bindings to the Android.* and Java.* namespaces. El entorno de ejecución Mono llama a estos espacios de nombres a través de contenedores administrados que se pueden llamar (MCW) y proporciona a ART contenedores que se pueden llamar de Android (ACW) , lo que permite que ambos entornos invoquen código entre sí.The Mono execution environment calls into these namespaces via Managed Callable Wrappers (MCW) and provides Android Callable Wrappers (ACW) to the ART, allowing both environments to invoke code in each other.

Para más información, vea Arquitectura de Xamarin.Android.For more information, see Xamarin.Android architecture.

Xamarin.iOSXamarin.iOS

Diagrama de la arquitectura de Xamarin.iOSXamarin.iOS architecture diagram

Las aplicaciones Xamarin.iOS se compilan Ahead-of-Time (AOT) de forma completa desde código de C# en código de ensamblado de ARM nativo.Xamarin.iOS applications are fully Ahead-of-Time (AOT) compiled from C# into native ARM assembly code. Xamarin usa selectores para exponer Objective-C en código de C# administrado y registradores para exponer código de C# administrado en Objective-C.Xamarin uses Selectors to expose Objective-C to managed C# and Registrars to expose managed C# code to Objective-C. Los selectores y registradores se denominan colectivamente "enlaces" y permiten la comunicación entre Objective-C y C#.Selectors and Registrars collectively are called "bindings" and allow Objective-C and C# to communicate.

Para más información, vea Arquitectura de Xamarin.iOS.For more information, see Xamarin.iOS architecture.

Xamarin.Essentials

Xamarin.Essentials es una biblioteca que proporciona API multiplataforma para características de dispositivos nativos. is a library that provides cross-platform APIs for native device features. Como el propio Xamarin, Xamarin.Essentials es una abstracción que simplifica el proceso de acceso a la funcionalidad nativa.Like Xamarin itself, Xamarin.Essentials is an abstraction that simplifies the process of accessing native functionality. Algunos ejemplos de la funcionalidad proporcionada por Xamarin.Essentials son los siguientes:Some examples of functionality provided by Xamarin.Essentials include:

  • Información del dispositivoDevice info
  • Sistema de archivosFile system
  • AcelerómetroAccelerometer
  • Marcador telefónicoPhone dialer
  • Texto a vozText-to-speech
  • Bloqueo de pantallaScreen lock

Para obtener más información, vea Xamarin.Essentials.For more information, see Xamarin.Essentials.

Xamarin.Forms

Xamarin.Forms es un marco de interfaz de usuario de código abierto. is an open-source UI framework. Xamarin.Forms permite a los desarrolladores compilar aplicaciones Xamarin.iOS, Xamarin.Android y Windows desde un único código base compartido. allows developers to build Xamarin.iOS, Xamarin.Android, and Windows applications from a single shared codebase. Xamarin.Forms permite a los desarrolladores crear interfaces de usuario en XAML con código subyacente en C#. allows developers to create user interfaces in XAML with code-behind in C#. Estas interfaces de usuario se representan como controles nativos con mejor rendimiento en cada plataforma.These user interfaces are rendered as performant native controls on each platform. Algunos ejemplos de las características que proporciona Xamarin.Forms son los siguientes:Some examples of features provided by Xamarin.Forms include:

  • Lenguaje de la interfaz de usuario de XAMLXAML user-interface language
  • Enlace de datosDatabinding
  • GestosGestures
  • EfectosEffects
  • Aplicación de estilosStyling

Para obtener más información, vea Xamarin.Forms.For more information, see Xamarin.Forms.

Primeros pasosGet started

Las guías siguientes le ayudarán a compilar la primera aplicación con Xamarin:The following guides will help you build your first app using Xamarin:

Encuentre más vídeos de Xamarin en Channel 9 y YouTube.Find more Xamarin videos on Channel 9 and YouTube.