Hola, feliz de sonar aquí. Trabajo en Xamarin como gerente asociado.
Escribí sobre esto mientras respondía esta pregunta: ¿Cuáles son sus pensamientos a favor y en contra de las tecnologías móviles multiplataforma?
Pero parafraseando:
- ¿Cuál es el mejor libro de texto de programación de Android?
- ¿Por qué Android todavía no es un gran mercado para aplicaciones pagas?
- ¿Head First Java (2a edición) sigue siendo lo suficientemente bueno como para aprender antes de comenzar el desarrollo de Android considerando que hace referencia a Java 5.0?
- ¿Por qué se usan fragmentos en aplicaciones de Android?
- ¿Qué pasos debo seguir para aprender Android?
Xamarin permite a los desarrolladores compartir una gran parte de la lógica de la aplicación detrás de la aplicación (llamadas a servicios web, autenticación, SSO, integraciones de back-end de datos) entre proyectos y al mismo tiempo permite a los desarrolladores construir UI nativas para cada plataforma. Las bibliotecas Objective C para iOS y las bibliotecas Java para Android están pre-enlazadas y disponibles a través de Xamarin Component Store, lo que significa que pueden interoperar con su código C #. Por lo tanto, en este caso, los desarrolladores disfrutan de un tiempo de comercialización acelerado y aplicaciones completamente nativas sin tener que mantener múltiples bases de código y herramientas de desarrollo de software.
De hecho, las aplicaciones se ejecutan de forma nativa, ya que no se interpretan como un PhoneGap o una aplicación Appcelerator; en cambio, el código fuente se compila en los controles nativos. Xamarin se basa en el tiempo de ejecución de Mono, que originalmente hace que las compilaciones de .NET se ejecuten en dispositivos que no son de Windows. Con el advenimiento de la revolución móvil, esa tecnología se convirtió en la base para el desarrollo móvil multiplataforma. Es la tecnología que explica cómo el código C #, una vez compilado, en realidad se convierte en código binario nativo. Para iOS, el código C # se compila de antemano en código binario ARM. Y para Android, el código C # se compila justo a tiempo y se empaqueta con la máquina virtual Android (Dalvik) junto al propio Mono VM de Xamarin. Lo que obtienes es una aplicación de Android completamente nativa y de alto rendimiento (y para colmo si no hay sobrecarga de la aplicación en tu SDK).
Espero que ayude a arrojar algo de luz sobre el asunto.