>

Xamarin, el caballo ganador en el desarrollo multiplataforma nativo

Miguel A. Gómez     Colaboraciones    25/11/2016

Este artículo es el primero de una serie de entradas relacionadas con el desarrollo multiplataforma nativo con las tecnologías de Xamarin, en particular con Xamarin tradicional.

Desarrollar aplicaciones móviles para múltiples plataformas es un enorme reto para los programadores. El contexto del desarrollo multiplataforma es muy complejo, ya que te encontrarás con varios lenguajes programación y sus correspondientes SDKs, además de múltiples entornos de desarrollo.

Xamarin trata de poner solución a esta problemática ofreciendo un conjunto de herramientas que nos permitirá desarrollar aplicaciones nativas con el lenguaje C# para las plataformas más importantes: Android, iOS y UWP (Universal Windows Platform).

Las claves de Xamarin

  • Actualizaciones constantes: Xamarin actualiza sus librerías casi el mismo día que lo hace Google o Apple.

  • Gratuito y open source: Tras la adquisición de Microsoft lo liberaron el código y lo distribuyen de forma gratuita.

  • Compartir código: Xamarin te ofrece diferentes herramientas para que pongas el foco en tratar de compartir la mayor cantidad de código entre plataformas.

  • Máxima cobertura de APIs iOS y Android: Disponemos de todas las APIs con el lenguaje C#. Cualquier cosa que se pueda hacer con Objective-C/Swift o Java, se puede hacer con C# y Xamarin.

  • Compilación nativa: Las aplicaciones creadas con Xamarin son totalmente nativas. En iOS compila directamente a código ensamblador ARM nativo, utilizando el enfoque Ahead Of Time (AOT). En cambio, en Android, el compilador de Xamarin pasa a lenguaje intermedio (IL), que luego pasa a ser compilado en “Just-In-Time (JIT)” para realizar el montaje nativo en el momento que se inicia la aplicación.

AOT JIT

Primera elección, tradicional o Forms

Antes de empezar a desarrollar con Xamarin debes tener claro si usar Xamarin Tradicional (Xamarin.iOS y Xamarin.Android) o Xamarin Forms. En Xamarin tradicional, puedes compartir toda la lógica de la solución entre las diferentes plataformas, a excepción de la interfaz de usuario. Mientras que con Xamarin Forms, además de poder compartir la lógica permite compartir la interfaz de usuario, gracias a la capa de abstracción que añade sobre la UI.

Xamarin.Forms es la mejor opción cuando el proyecto requiere de menos especificidad en la UI y se hace más énfasis en compartir la mayor cantidad posible de código. En cambio, Xamarin tradicional es idóneo cuando se necesita un nivel muy elevado de personalización de la interfaz de usuario para cada una de las plataformas, siendo prioritario el nivel personalización de la interfaz que la cantidad de código compartido.

Tradicional vs forms

Xamarin tradicional

Cómo denota su nombre es la forma clásica de desarrollar aplicaciones en Xamarin. Solamente se pueden crear proyectos de código compartido dentro de en la capa de la lógica de negocio y en la de acceso a datos. En la capa de presentación tendrás proyectos separados para cada una de las plataformas objetivo, dichos proyectos están escritos en C# pero no se puede compartir código entre ellos.

Obviaré la plataforma Universal Windows Platform (UWP) y me centraré en Xamarin.Android y Xamarin.iOS.

Xamarin.Android

Xamarin.Android nos brinda el acceso completo a la API de Android, como he comentado, básicamente cualquier cosa que se pueda hacer con Java, se puede hacer con Xamarin y C#. La interfaces de usuario se crean utilizando AXML.

Las aplicaciones Xamarin.Android se desarrollan principalmente con las clases de tres librerías diferentes:


  • java.*. Ofrece wrappers en C# para todas las librerías de Android en Java.

  • android.*. Permite el acceso en código C# a todas las APIs de Android.

  • Mono.NET. Incluye prácticamente la mayoría de clases de .NET.

Xamarin android

Xamarin.iOS

Xamarin.iOS ofrece el acceso completo a la API de iOS (Cocoa touch), al igual que Android con Java, cualquier cosa que se pueda hacer con Swift o Objective C, se puede hacer con Xamarin y C#. La interfaz de usuario se crea utilizando las vistas nativas de iOS, ya sean Storyboards o ficheros XIBs.

Xamarin.iOS pone a nuestro alcance componentes tanto de compilación como de ejecución:

  • Compilador C# para Mac.

  • Compilador nativo.

  • Servicio de ejecución (GC, verificador y validación de tipos, etc.).

  • Librerías Core .NET.

Xamarin iOS

Conclusión

En esta entrada he hecho una introducción de Xamarin en general, y en particular de Xamarin tradicional. La idea es continuar avanzando en próximas entradas en el desarrollo de aplicaciones con Xamarin tradicional, tanto con Xamarin.Android como con Xamarin.iOS.

Espero haber despertado tu interés en Xamarin, o por lo menos haber sabido trasladarte alguna de sus virtudes. Para continuar profundizando en Xamarin te recomiendo el libro Mastering Cross-Platform Development with Xamarin y si te apetece probar Xamarin Forms échale un vistazo este artículo de introducción a Xamarin Forms.

Si te ha gustado la entrada comparte en tus redes sociales. No dudes en comentar dudas, aportes o sugerencias, estaré encantado de responder.


















Sobre el autor

Miguel A. Gómez   

Sofware Engineer & aspiring Craftsman. Si quieres saber más sobre mi pásate por mi blog: miguelgomez.io