fbpx
Get In Touch
1201 3rd Avenue Seattle, WA 98101, US
(HQ) Av. Punto Sur 31, Tlajomulco de Zúñiga, Jal 45050, MX
Carrera 11B # 99 - 25, Btá, 110221, CO
Let's talk
hello@inmediatum.com
Ph: +1 (650) 603 0883
Sales attention M - F 9am - 5pm (CT)
Get support
Careers
Endless inspiration and meaningful work
See open positions
Back

Ventajas y desventajas de apps desarrolladas en Xamarin

Cuando consideramos el desarrollo de aplicaciones iOS o Android, la mayoría de nosotros pensamos en Objective-C vs Swift, y Java en primer lugar. Al ser considerados conjuntos tecnológicos nativos, son herramientas de desarrollo móvil que se usan con mayor frecuencia cuando se trata del desarrollo de aplicaciones iOS y Android. Sin embargo, hay más formas de crear aplicaciones móviles de alto rendimiento y fáciles de usar. Y Xamarin es uno de ellos. En este artículo, llevamos a cabo una revisión exhaustiva de apps desarrolladas en Xamarin y la comparamos con las soluciones de desarrollo móvil nativas y multiplataforma del mercado.

 

¿Qué es Xamarin?

Es imposible ignorar a Xamarin cuando se habla de los enfoques clave para el desarrollo de aplicaciones móviles. Xamarin es una herramienta utilizada para el desarrollo de aplicaciones móviles multiplataforma que permite a los ingenieros compartir aproximadamente el 90 por ciento del código en las principales plataformas. Al ser una herramienta relativamente nueva, se basa en la pila de tecnología de Microsoft y ya cuenta con una comunidad de más de 1,4 millones de desarrolladores.
La plataforma fue construida por los desarrolladores detrás de Mono, una plataforma de desarrollo de código abierto basada en .NET Framework, dirigida por Miguel de Icaza y presentada por primera vez en 2001. La compañía Xamarin fue fundada el 16 de mayo de 2011.
Sin embargo, a diferencia de su predecesor, Xamarin se creó como un proyecto comercial hasta que Microsoft adquirió la compañía en 2016. Xamarin se convirtió en un producto multiplataforma popular para desarrollar aplicaciones móviles dentro del ecosistema de Microsoft. Esta adquisición rompió la barrera financiera para usar Xamarin. Cuando Microsoft creó el código abierto del SDK de Xamarin, se convirtió en parte del entorno de desarrollo integrado de Xamarin Visual Studio (a continuación, discutimos los mejores IDE para usar para el desarrollo de Xamarin). ¿Cuáles son las principales características de Xamarin?
Lenguaje C #. Xamarin usa un solo lenguaje, C #, para crear aplicaciones para todas las plataformas móviles. A diferencia de las soluciones interpretadas, como Appcelerator Titanium, Xamarin se compila de forma nativa, lo que lo convierte en una opción de acceso para crear aplicaciones de alto rendimiento con un aspecto nativo.
Basado en .NET framework. C # es un lenguaje maduro con un fuerte tipeo de seguridad que evita que el código tenga un comportamiento inesperado. Como C # es uno de los lenguajes de .NET framework, se puede usar con una serie de características útiles de .NET como Lambdas, LINQ y programación asíncrona (async / await).
Técnicamente hablando, Xamarin usa C # y bibliotecas nativas envueltas en la capa .Net para el desarrollo de aplicaciones multiplataforma. Estas aplicaciones a menudo se comparan con las nativas para las plataformas de desarrollo móvil iOS y Android en términos de rendimiento y experiencia del usuario. Además, Xamarin puede aprovechar todo el acceso a la API nativa y más reciente para utilizar las capacidades de la plataforma subyacente en aplicaciones de Xamarin como ARKit en iOS o Android Multi-Window.

xamarin stack for mobile development

 

Si bien el código relacionado con la lógica empresarial, el acceso a la base de datos y la comunicación de red se puede compartir en todas las plataformas, Xamarin le permite crear una capa de código de interfaz de usuario específica de la plataforma. Por lo tanto, las aplicaciones multiplataforma de Xamarin se ven 100% nativas en cualquier dispositivo, proporcionando una mejor experiencia de usuario, en comparación con las aplicaciones híbridas genéricas.

Compilacion. La plataforma tiene dos productos principales: Xamarin.iOS y Xamarin.Android. En el caso de iOS, el código fuente se compila directamente en el código de ensamblaje ARM nativo (compilación anticipada), mientras que las aplicaciones de Android Xamarin se compilan primero en lenguaje intermedio y luego, en el código de ensamblaje nativo en tiempo de ejecución (Just-in -Recopilación de tiempo). Sin embargo, en ambos casos el proceso está automatizado y adaptado para manejar problemas tales como asignación de memoria, recolección de basura e interoperabilidad de plataforma de forma predeterminada.

Xamarin.Forms. Xamarin.Forms es un producto separado diseñado para crear prototipos o aplicaciones móviles simples que comparten el 100 por ciento del código en iOS y Android.

Xamarin.Mac. Además, los ingenieros pueden usar Xamarin.Mac para crear aplicaciones para Mac OS. Estos y algunos otros productos de la pila Xamarin se analizarán en un momento.

Plataforma SDK. Xamarin proporciona acceso a SDK específicos de la plataforma (Cocoa Touch para iOS y Android SDK) a través de la sintaxis simple de C #.

Enlaces de código específicos de plataforma. En la mayoría de los casos, los ingenieros podrán manejar el desarrollo manteniendo la apariencia nativa de las respectivas plataformas dentro del entorno Xamarin. Sin embargo, Xamarin le permite llamar al código de plataforma existente (por ejemplo, Swift para iOS) si debe reutilizar algunos módulos o realizar algunas funciones específicas de la plataforma, como el escaneo de códigos de barras, PayPal o la integración de Google Analytics.

Soporte de wearables. Xamarin admite la creación de aplicaciones para dispositivos Apple y Android Watch. Los ingenieros pueden usar Visual Studio para Mac y Windows para construir aplicaciones iOS Apple Watch. Además, Xamarin es totalmente compatible con Android Wear.

Estructura del proyecto Xamarin. Se espera que la mayor parte del trabajo relacionado con Xamarin se ejecute a través de una computadora de desarrollo de Windows con Visual Studio y Xamarin instalados. Las aplicaciones se pueden depurar directamente desde el escritorio o en dispositivos y emuladores. Si planea desarrollar aplicaciones de iOS en Windows, también es posible ya que Visual Studio se conecta al diseñador de guiones gráficos de iOS y al simulador de iOS. También existe Visual Studio para Mac, que permite ejecutar un simulador en la Mac o directamente en un iPhone conectado. La depuración se ejecuta a través de Visual Studio.

estructura de proyecto de xamarin

 

Estructura del proyecto Xamarin. Fuente de la imagen: documentos de Visual Studio

Para obtener una comprensión más profunda de los aspectos de ingeniería de Xamarin, considere verificar estos recursos:

Ventajas de usar Xamarin para el desarrollo

Hay buenas razones por las cuales Xamarin es utilizado por numerosas compañías, incluidas Trello, Slack y GitHub.

Una pila de tecnología para codificar para todas las plataformas

Xamarin usa C # complementado con .Net framework para crear aplicaciones para cualquier plataforma móvil. Por lo tanto, puede reutilizar hasta el 96 por ciento del código fuente acelerando el ciclo de ingeniería. Xamarin tampoco requiere cambiar entre los entornos de desarrollo: puede compilar todas sus aplicaciones de Xamarin en Visual Studio que reemplazaron completamente a Xamarin Studio. Las herramientas de desarrollo multiplataforma se proporcionan como parte integrada del IDE sin costo adicional.

Rendimiento cercano al nativo

A diferencia de las soluciones híbridas tradicionales, basadas en las tecnologías web, una aplicación multiplataforma desarrollada con Xamarin puede clasificarse como nativa. Las métricas de rendimiento son comparables a las de Java para Android (como se explica aquí) y Objective-C o Swift para el desarrollo de aplicaciones nativas de iOS. Además, el rendimiento de Xamarin se mejora constantemente para que coincida completamente con los estándares del desarrollo nativo. Visual Studio ofrece una solución completa para crear, probar y rastrear el rendimiento de la aplicación: Visual Studio App Center le permite ejecutar pruebas de IU automatizadas e identificar problemas de rendimiento antes del lanzamiento. Sin embargo, este servicio se proporciona a un costo adicional.

Experiencias de usuarios nativos

Xamarin le permite crear experiencias perfectas utilizando elementos de interfaz de usuario específicos de la plataforma. Las aplicaciones multiplataforma simples para iOS, Android o Windows se crean utilizando la herramienta Xamarin.Forms, que convierte los componentes de la interfaz de usuario de la aplicación en elementos de interfaz específicos de la plataforma en tiempo de ejecución. Como el uso de Xamarin.Forms aumenta significativamente la velocidad de desarrollo de aplicaciones, es una gran opción para proyectos orientados a los negocios. Sin embargo, puede haber una ligera disminución en el rendimiento debido a la capa de abstracción adicional. Para la interfaz de usuario de la aplicación personalizada y un rendimiento superior, aún puede usar Xamarin.iOS y Xamarin.Android por separado para garantizar excelentes resultados.

Soporte completo de hardware

Con Xamarin, su solución obtiene la funcionalidad de la aplicación de nivel nativo. Elimina todos los problemas de compatibilidad de hardware, utilizando complementos y API específicas, para trabajar con la funcionalidad de dispositivos comunes en todas las plataformas. Junto con el acceso a las API específicas de la plataforma, Xamarin admite enlaces con bibliotecas nativas. Esto permite una mejor personalización y funcionalidad a nivel nativo con poca sobrecarga.

Tecnología de código abierto con un fuerte soporte corporativo

Después de que Microsoft adquirió la compañía en febrero de 2016, las políticas de licencias de Xamarin experimentaron cambios radicales. Xamarin SDK, que incluye tiempo de ejecución, bibliotecas y herramientas de línea de comandos, se ha convertido en código abierto y está disponible para todos bajo la licencia MIT como parte de Visual Studio. Al eliminar la barrera principal, el costo de la licencia, Microsoft allanó el camino para un mayor crecimiento de la plataforma. Además, encabezado por Microsoft y respaldado por Unity, JetBrains y Red Hat, la Fundación .NET en general y Xamarin específicamente se han convertido en una pila tecnológica confiable y poderosa.

Mantenimiento simplificado

Debido a su aplicación multiplataforma, Xamarin facilita el mantenimiento y las actualizaciones. Simplemente puede implementar los cambios o actualizaciones en el archivo fuente y se aplicarán a las aplicaciones de iOS y Android. Sin embargo, esto funciona solo para las aplicaciones que usan Xamarin.Forms o la lógica de negocios, código compartido, actualizaciones para las aplicaciones Xamarin.iOS y Xamarin.Android. Por lo tanto, le ayuda a ahorrar tiempo y dinero mientras mantiene sus aplicaciones actualizadas.

Ecosistema de desarrollo completo

Xamarin viene en un paquete con un conjunto completo de herramientas de desarrollo, que incluye su propio IDE. En abril de 2018, muchas herramientas de desarrollo de Xamarin, anteriormente conocidas como características separadas, se convirtieron en parte del Centro de aplicaciones de Visual Studio. Se incluye la plataforma en sí (SDK de Xamarin), plataformas de prueba (anteriormente Xamarin Test Cloud), distribución y análisis (anteriormente Xamarin.Insights), y muchas más. Dado que el kit de herramientas sigue siendo gratuito, no es necesario invertir en herramientas adicionales o integrar aplicaciones de terceros para crear, probar e implementar sus aplicaciones Xamarin.

Xamarin.Forms: un marco para aplicaciones y prototipos simples

Xamarin sugiere que los desarrolladores creen aplicaciones móviles de dos maneras. El primero es usar Xamarin.iOS y Xamarin.Android, que se considera el enfoque principal. Usando Xamarin.Forms, la Biblioteca de Visual Studio es la segunda. Xamarin.Forms permite la creación rápida de prototipos o la producción de aplicaciones con menos funcionalidad específica de la plataforma. Es por eso que Xamarin.Forms es la mejor opción para aplicaciones donde el intercambio de código es más importante que la IU personalizada. Podrá crear una única interfaz y compartirla entre plataformas sin diseñar para cada plataforma individualmente. También puede crear aplicaciones donde algunas partes de sus interfaces de usuario están hechas con Xamarin.Forms y otras están diseñadas usando el kit de herramientas de interfaz de usuario nativo.

Si bien Xamarin.Forms sigue siendo un compromiso en términos de apariencia nativa en comparación con Xamarin.iOS y Xamarin.Android, hay una comunidad vibrante que presta atención a esta herramienta. Por ejemplo, algunos proveedores de tecnología contribuyen con sus bibliotecas, como Telerik UI, que enriquecen las capacidades de ingeniería al proporcionar componentes de IU preconfigurados.

Xamarin.Forms Live Player

Como Xamarin.Forms está dirigido a un desarrollo rápido y sin fricciones, Microsoft sugiere usar una herramienta Live Player. Es una aplicación instalada en teléfonos reales para probar y depurar inmediatamente sus aplicaciones sin la implementación del emulador o la conexión de un dispositivo a una estación de trabajo. Tras la instalación de Live Player, un desarrollador escanea un código QR en Visual Studio usando una cámara de teléfono, que proporciona acceso a una aplicación desarrollada actualmente. Una aplicación en el teléfono se sincroniza en tiempo real con la de Visual Studio. Esto simplifica drásticamente todos los procedimientos de configuración y depuración posteriores. Desafortunadamente, Microsoft suspendió la compatibilidad con Live Player, pero aún puede descargar la aplicación y vincularla con Visual Studio.

Creación de aplicaciones para Mac con la herramienta Xamarin.Mac

Xamarin.Mac permite desarrollar aplicaciones Mac completamente nativas usando C # y .NET. Se integra con las mismas bibliotecas que se utilizan para desarrollar en Objective-C con Xcode. Mediante el uso de Xamarin.Mac combinado con Xamarin.iOS y Xamarin.Android, los desarrolladores pueden compartir hasta el 90 por ciento del código nativo en Android, iOS y Mac OS. Además, Xamarin.Mac se integra con Xcode, por lo que un desarrollador puede usar el Creador de interfaces de Xcode para crear las interfaces de usuario de una aplicación.

Recursos de aprendizaje de Xamarin

La Universidad Xamarin es un portal de aprendizaje electrónico dedicado para las personas que recién se están familiarizando con el paquete. La universidad atiende a ingenieros que conocen C #, así como a cualquier persona con poca experiencia en programación. El recurso proporciona todo el conocimiento esencial a los nuevos ingenieros que incorporan productos basados ​​en Xamarin.

Sin embargo, la Universidad Xamarin se jubilará en junio de 2019. Si bien los recursos educativos se unen a Microsoft Learn, no hay impacto en el acceso a las clases. Los recién llegados aún pueden aprovechar los materiales de nivel principiante a avanzado, que incluyen aprendizaje autoguiado gratuito, clases en línea en vivo, conferencias de oficina y conferencias de invitados. Para obtener más información detallada sobre la inscripción y otras actividades, consulte las Preguntas frecuentes sobre el final de la vida útil de la Universidad Xamarin.

Soporte de Xamarin para televisores, wearables e IoT

El marco Xamarin, gracias a su Xamarin.Forms, permite construir versiones portátiles para muchas plataformas. Además de iOS, Android, Windows Phones y Mac, puede desarrollar aplicaciones para Tizen, un sistema operativo utilizado en algunos dispositivos Samsung, para dispositivos portátiles, televisores e IoT. Además de eso, Xamarin.iOS permite crear aplicaciones para tvOS para Apple y watchOS.

Desventajas de Xamarin a considerar

Sin embargo, todavía hay algunos inconvenientes que pueden proyectar una sombra sobre la plataforma. Entonces, ¿por qué no usar Xamarin?

Soporte ligeramente retrasado para las últimas actualizaciones de plataforma

Esto depende completamente del equipo de desarrolladores de Xamarin. Es imposible que las herramientas de terceros brinden soporte inmediato para los últimos lanzamientos de iOS y Android: lleva algún tiempo implementar los cambios y / o introducir nuevos complementos, etc. Aunque Xamarin afirma proporcionar soporte el mismo día, aún podría Ser algunos retrasos.

Acceso limitado a bibliotecas de código abierto

El desarrollo nativo hace un uso extensivo de las tecnologías de código abierto. Con Xamarin, debe usar los elementos proporcionados por la plataforma y algunos recursos de código abierto .NET, que enfrentan tanto desarrolladores como consumidores. Si bien la elección no es tan rica como lo es para el desarrollo de aplicaciones móviles Android e iOS, puede usar los paquetes NuGet que ahora contienen todo lo que estaba en los componentes retirados de Xamarin.

Alto costo para uso profesional y empresarial

Aunque Xamarin es una plataforma gratuita de código abierto para desarrolladores individuales, el marco puede costar bastante dinero para las necesidades empresariales. Gastará mucho para comprar una licencia para Visual Studio. Por ejemplo, Visual Studio Professional con el conjunto básico de herramientas de desarrollo cuesta $ 1,199 por el primer año y $ 799 por renovación. Al mismo tiempo, un Visual Studio Enterprise, que permite experimentar con herramientas adicionales, costará $ 5,999 por el primer año y $ 2,569 por renovación. Las características para ambos cubrimos a continuación.

Pool Grupo de talentos de Xamarin y restricciones de la comunidad

Obviamente, la comunidad de Xamarin es significativamente más pequeña que las de iOS o Android nativos. También es más pequeño que las comunidades React y Ionic. Por lo tanto, encontrar un desarrollador experimentado de Xamarin podría ser un desafío. Aunque la plataforma está creciendo, sus seguidores están impulsados ​​por el soporte de Microsoft.

Según la encuesta de Stack Overflow de 2018, solo el 7.4 por ciento utilizó el marco Xamarin a partir de 2018 en comparación con el 28.3 por ciento de React (para ser justos, este número también incluye React plus React Native estándar) y el 8.3 por ciento de Cordova.

stack overflow other frameworks and libraries chart 2019

Uso de Xamarin en comparación con otros marcos. Fuente de la imagen: Stack Overflow

A pesar de que el número de ingenieros de Xamarin no se compara con las comunidades nativas de iOS o Android, la plataforma brinda un amplio soporte a sus desarrolladores. A saber, hay una plataforma educativa dedicada, la Universidad Xamarin, que ahora se une a Microsoft Learn como se mencionó anteriormente. Proporciona recursos y capacitación práctica para aquellos que son nuevos en esta tecnología. Con este soporte, la curva de aprendizaje para un ingeniero experimentado de C # /. Net es mínima.

Otro problema que experimentan algunos desarrolladores es la fragmentación y la falta de estándares en los recursos de aprendizaje y desarrollo, incluidos los documentos. Esto afecta la calidad del soporte que va a obtener.

Conocimientos básicos de lenguas nativas requeridos

Cuando use Xamarin.iOS y Xamarin.Android para crear aplicaciones móviles con un aspecto verdaderamente nativo, aún necesitará escribir una capa de código específica de la plataforma. Por lo tanto, se requiere al menos un conocimiento básico de las tecnologías nativas (Java / Kotlin para Android y Objective-C / Swift para iOS). Sin embargo, esto no se aplica a Xamarin.Forms.

No apto para aplicaciones con gráficos pesados

El principal beneficio de Xamarin es la capacidad de compartir su código en todas las plataformas. Sin embargo, solo puede compartir la lógica, el código de la interfaz de usuario será principalmente específico de la plataforma. Esto hace que los juegos de construcción, la interfaz de usuario personalizada rica o las animaciones complejas en Xamarin sean bastante inútiles. Con una pequeña cantidad de código compartido, Xamarin se convierte en una opción inviable.

Tamaño de aplicación más grande

Dependiendo de su tipo y complejidad, las aplicaciones de Xamarin suelen ser más grandes que las nativas (esta última puede ser la mitad del tamaño de una aplicación de Xamarin). Una aplicación simple de “hola, mundo” para Android puede tomar hasta 16 MB, gran parte de la cual es utilizada por las bibliotecas asociadas, el contenido, el tiempo de ejecución Mono y los ensamblados de la Biblioteca de clase base (BCL).

Xamarin app size.

Tamaño de la aplicación Xamarin. Fuente de la imagen: developer.xamarin.com

Por lo tanto, las aplicaciones Xamarin generalmente necesitan una optimización adicional para mantener el tamaño razonable del archivo de la aplicación.

Problemas de compatibilidad con librerias y herramientas de terceros

Puede haber algunos problemas al integrar recursos de terceros con su aplicación Xamarin. Si bien la mayoría de las herramientas y bibliotecas ofrecen soporte completo para tecnologías nativas, es posible que un proveedor no brinde soporte de Xamarin. Aunque Xamarin tiene su propia tienda de componentes, siempre existe la posibilidad de que necesite una capacidad o integración específica dentro de su aplicación que no sea proporcionada por la plataforma. Por lo tanto, para aprovechar otros paquetes de terceros, debe usar envoltorios.

Problemas de estabilidad

Tanto Xamarin.iOS / Android y especialmente Xamarin.Forms después de tantos años en el mercado plantean quejas sobre estabilidad, errores y fallas. La mayoría de los problemas aparecen con Xamarin.Forms, ya que muchos desarrolladores se embarcan primero en esta herramienta para aprovechar al máximo el código compartido. Si bien Microsoft se esfuerza por corregir Xamarin.Forms, la herramienta sigue siendo una buena opción para la creación de prototipos en lugar de una herramienta sólida para aplicaciones complejas. Algunos ingenieros se quejan de que, en lugar de ahorrar tiempo con el uso compartido de código, puede terminar pasando más tiempo resolviendo problemas.

 

Consejo

Al comparar los pros y los contras, los inconvenientes enumerados generalmente se consideran un daño colateral. La mayoría de empresas que eligen el desarrollo de aplicaciones móviles en Xamarin, inclinan su decisión por la promesa disminuir el ‘time to market’ y los costos del equipo ingeniería, al compartir el código para dos o mas sistemas operativos. Sin embargo, esto no siempre se cumple, ya que dependiendo del propósito de la aplicación y su público objetivo esto podría cambiar drasticamente.

Según la experiencia de nuestro equipo en INMEDIATUM, el mejor caso de uso para Xamarin son las soluciones móviles empresariales simples. Es decir herramientas de uso interno para la empresa y que no requiera una gran complejidad de UI (Interface de usuario) asi como aquellas aplicaciones que no requieren integraciones con hardware como impresoras portatiles, lectores de RFID, entre otros.

En el caso de aplicaciones orientadas al consumidor la interface de usuario con Xamarin se torna pesada, y lenta. Ademas de que al no actualizarse al mismo ritmo que los sitemas nativos, existe una gran probabilidad de incompatibilidad con nuevas versiones de sistemas operativos, y se tiene nulo control en que versiones sistema operativo podrian disponer en mercado meta.

Sin embargo, si está buscando una alternativa de Xamarin para crear una aplicación móvil multiplataforma, le recomendamo leer sobre Flutter, la apuesta tecnologíca de Google.

Unete a nuestro equipo

Estamos contratando aplica para nuestras vacantes
Cristopher Serrato
Cristopher Serrato
https://inmediatum.com
CEO & Co-founder of INMEDIATUM

We use cookies to give you the best experience. Cookie Policy