Comparación entre 3 de los framework web más de moda en 2020: Flutter, React Native y Xamarin

En este artículo vamos a investigar el estado actual de los framework multiplataforma más populares para la creación de aplicaciones en Android e iOS.

A la hora de usar un framework multiplataforma el objetivo final, siempre es el mismo, facilitar y permitir que un mismo equipo de programadores trabaje en escribir una única base de código que al final pueda ser implementado sobre múltiples plataformas.

Con el objetivo principal de compartir la mayor parte del código posible, teóricamente se debe lograr ahorrar mucho tiempo y por tanto, también mucho dinero.

Hay varios frameworks multiplataforma disponibles y las preguntas más habituales que los desarrolladores se encuentran a la hora de comenzar un proyecto es, ¿Cuál de ellos merece más la pena? y ¿Qué framework es mejor usar en la actualidad?

El inicio de este artículo parte de una investigación en profundidad sobre el uso de Flutter y una exhaustiva evaluación de sus posibilidades. Se ha intentado analizar cuanto de complicado podría ser llegar a aprenderlo; y posteriormente, se pensó en analizar también. Los frameworks considerados con un mayor crecimiento (sé, que se ha dejado aparacado a Vue, por ahora).

Entre las soluciones para la creación de aplicaciones multiplataforma, existen otras muchas más herramientas en el mercado, como en su día ya analizamos aquí; en Ciberninjas.

Si repasamos el nombre de algunas de ellas en la actualidad, tendríamos que citar a: Flutter, React Native, Xamarin, Vue, PWA (aplicaciones web progresivas), Kotlin Native, J2Objective C (Doppl), Ionic, Cordoba (PhoneGap / Titanium), Unity.. y seguro que alguna más.

Entre todo ese listado, finalmente se decidió seleccionar tres opciones concretas, como son: Flutter, React Native y Xamarin.

Xamarin por ser uno de los frameworks multiplataforma más antiguos disponibles, utilizado principalmente en entornos empresariales.

React Native ha mostrado mucha popularidad y crecimiento en la actualidad, gracias a ReactJS y a su comunidad. Estar escrito en JavaScript ha impulsado su tasa de adopción en muchos círculos y se ha empleado sobre productos importantes.

Por último Flutter, ha sido muy promocionado por Google desde el 2017 y ha generado un gran interés en la comunidad de desarrolladores gracias a tener un enfoque novedoso e implementar un interesante stack tecnológico, sobre todo, durante sus últimos cambios y gracias a la fuerte asociación que mantiene con Android.

Antes de nada, echemos un ojo al por qué debemos o podemos elegir un framework multiplataforma.

¿Por qué elegir el desarrollo multiplataforma?

El desarrollo multiplataforma tiende a tener una mala reputación por varias razones. Hasta hace muy poco, no existían tecnologías adecuadas para el desarrollo multiplataforma y las que estaban disponibles simplemente no eran demasiado buenas.

Se limitaban las capacidades de los desarrolladores y afectaban seriamente al rendimiento de las aplicaciones, a veces tanto, que las molestias del desarrollo multiplataforma no eran justificables.

A pesar de todos los inconvenientes, las personas continuaron eligiendo el desarrollo multiplataforma sobre el desarrollo nativo porque puede ofrecer una amplia gama de beneficios muy importantes:

  • Un ciclo de desarrollo acortado
    • Con el desarrollo multiplataforma, es posible compartir hasta el 96% del código en varias plataformas. Naturalmente, esto resulta en un ciclo de desarrollo mucho más corto: en lugar de desarrollar dos aplicaciones separadas, solamente se desarrolla. Luego se reutiliza ese mismo código entre las apps de los diferentes sistemas operativos, haciendo ajustes específicos a cada plataforma.
  • La eficiencia del costo
    • El desarrollo multiplataforma es indudablemente más barato: El cliente paga a menos desarrolladores por menos horas de trabajo.
  • Un equipo más pequeño
    • El desarrollo multiplataforma requiere menos desarrolladores porque no es necesario contratar equipos separados con conocimientos específicos de Android e iOS.
  • Un proceso de prueba simplificado
    • Una base de código más pequeña necesita menos pruebas y permite a los ingenieros de control de calidad dedicar más tiempo a cada elemento de la aplicación, lo que da como resultado una cobertura de prueba de mayor calidad.

Flutter

Las ventajas y desventajas de trabajar con el SDK multiplataforma de Flutter, visto en Ciberninjas

Flutter ha estado disponible desde hace menos de 5 años y lanzado oficialmente desde hace menos de 3 años; pero solo comenzó a ganar visibilidad entre la comunidad de desarrollo aproximadamente desde el último año.

Flutter es una tecnología desarrollada por Google que se basa en Dart y un motor portátil de C++ para implementar un potente framework de interfaz de usuario.

A pesar de que Dart no recibió mucho cariño en la encuesta de desarrolladores de 2017 de Stack Overflow, las primeras publicaciones del blog de Flutter fueron recibidas con una mirada positiva.

No existe una hoja de ruta bien definida para Flutter, pero si te fijas lo suficiente, puedes encontrar sus hitos actuales y detalles específicos sobre en qué están trabajando a través de la discusión de este tema de Github.

El equipo de Flutter se encuentra manteniendo y dando asistencia dentro del subreddit de FlutterDev en el que se encuentran más de 29.000 usuarios y en el chat de Gitter.im donde puedes encontrar más de 10.000 usuarios.

Por último, existe un Foro de Grupo de Google con Devs de Flutter en el que ya existen más de 3.800 temas abiertos; y también puedes encontrar a los desarrolladores especializados en Flutter dentro de Stack Overflow.

Encontrar personal para desarrollar con Dart y Flutter no será fácil ya que la plataforma es bastante reciente y el lenguaje Dart es un lenguaje centrado específicamente en un aspecto muy concreto. Más, los desarrolladores de Java y Kotlin pueden aprenderlo fácilmente.

Para los desarrolladores de Android debería de ser más sencillo integrarse en el uso de Flutter, ya que puede integrarse sin ningún tipo de problemas con IntelliJ y Android Studio.

Los desarrolladores de iOS tendrán que acostumbrarse al lenguaje, la metodología y las herramientas casi por completo; lo que puede crear una línea de aprendizaje bastante más compleja.

Además de las APIs de pagos, Bluetooth y NFC, la mayoría de las APIs de hardware y sensores son compatibles, pero algunas de ellas se encuentran en una etapa temprana de su desarrollo.

Cada vez, van existiendo muchos más complementos, pero algunas áreas aún aparecen pendientes de ser investigadas. Por ejemplo, el soporte para vídeos en línea y los mapas dinámicos todavía están en desarrollo a día de hoy; pero ya van naciendo proyectos experimentales con la capacidad de afrontar estos problemas.

Dado que la interfaz de usuario personalizada y de alto rendimiento es el foco principal de Flutter, el framework está orientado a proporcionar una interfaz de usuario profundamente personalizada, a semejanza de una interfaz nativa buscando el objetivo de que los usuarios no se sientan extraños.

Flutter proporciona una implementación completa del cuerpo de la interfaz de usuario que no utiliza componentes de la interfaz de usuario nativos, para permitir así; el grado requerido de personalización, portabilidad y rendimiento.

Si se desea una interfaz de usuario personalizada para cada plataforma, se debe detectar el dispositivo actual y decidir qué diseño crear, lo que podría ser extremadamente tedioso.

Es importante tener en cuenta que es posible incrustar un FlutterView muy fácilmente en un diseño nativo de Android, para mezclarlo con la interfaz de usuario nativa sobre una misma pantalla; y esto también es posible en iOS; pero hasta el momento, aún no se ha documentado.

Cuando se trata de la realización de pruebas, queda claro que Flutter es un nuevo framework.

Dart ofrece un excelente framework de pruebas unitarias que puede utilizarse y Flutter le brinda una excelente opción para probar los widgets en un tiempo de ejecución sin cabeza, a velocidades de prueba de unidad.

Sin embargo, ejecutar pruebas de integración es algo complicado. Por último, Flutter le permite ejecutar pruebas de rendimiento con su flutter_driver paquete.

Flutter en Resumen

Flutter, es posiblemente considerada la mejor herramienta para el desarrollo móvil multiplataforma en un futuro cercano. Está desarrollada y respaldada por Google. Flutter usa Dart y una colección de widgets nativos para en conjunto crear impresionantes aplicaciones multiplataforma.

Saber Más: Qué es Flutter SDK, Cómo aprender Flutter en 2020, Relación entre Flutter y Dart, Guía DevTools, Wallpapers de Flutter, Productos de Flutter

Ventajas de usar Flutter

  • Rendimiento de la aplicación.
    • Flutter usa Dart, un lenguaje compilado anticipadamente (AOT) que permite que la aplicación se comunique directamente con la plataforma nativa en lugar de pasar por un puente JavaScript como en React Native.
      Esto permite a los desarrolladores crear aplicaciones complejas sin afectar el rendimiento y los tiempos de inicio.
  • Recarga en caliente
    • Esta característica permite a los desarrolladores reconstruir la aplicación al instante, como si fuera una página web. Además, la recarga en caliente de Flutter tiene estado, lo que significa que los desarrolladores no necesitan reiniciar la aplicación cada vez que cambian algo, simplemente continúa donde se quedó.
      Eso hace que el diseño de Flutter sea visible de inmediato.
  • Un conjunto completo de widgets únicos
    • Flutter no se basa en componentes de interfaz de usuario específicos de la plataforma, si no que posee sus propios widgets. El framework implementa widgets del kit de Material Design para Android y ofrece widgets de Cupertino para iOS, pero no tiene que ser estrictamente así como se usen. Si deseas utilizar los widgets de Cupertino sobre android funcionaran y se verán increíblemente y viceversa.
  • Gráficos 2D
    • Flutter también implementa Skia, una biblioteca de gráficos 2D de código abierto, que se encarga de renderizar la biblioteca de los componentes de la interfaz de usuario integrada en todo el framework.
  • Todo es un widget
    • En Flutter, cada elemento de la pantalla es un widget, lo que simplifica enormemente el diseño de la aplicación. Cada widget separado especifica su propio modelo de diseño, en lugar de tener un solo conjunto de reglas para todos los widgets. Debido a que el diseño de Flutter es relativamente pequeño, es fácil de optimizar, y debido a que cada elemento de la interfaz de usuario es un widget, todo el diseño en sí; se vuelve más manejable.
  • Gran cantidad de paquetes disponibles
    • Aunque Flutter es de creación reciente, los desarrolladores de todo el mundo están realmente entusiasmados con el proyecto; y por ello, ya existen muchos paquetes diferentes disponibles para trabajar con Flutter. A saber; herramientas para manejar imágenes, solicitudes HTTP, conexiones WebSocket, varios clientes de protocolo de red, notificaciones push, bases de datos integradas, acceso a sensores, acceso a las cámaras del dispositivo, etc.
  • Compatibilidad de dispositivos
    • Los widgets nativos de Flutter permiten que las aplicaciones sigan siendo compatibles con las versiones del sistema operativo a partir de iOS 8.0 y Android Jelly Bean. Siempre que Apple o Google presenten un nuevo widget, no interrumpirá su aplicación desde el exterior porque Flutter no toca los widgets de la plataforma nativa.

Desventajas de usar Flutter

  • Proyecto joven
    • La primera y mayor desventaja es lo reciente del framework. Aunque Flutter se puso a disponibilidad de uso en producción en mayo de 2018, el proyecto aún necesita un mayor período de asentamiento. No hay forma de saber con certeza si el framework tendrá éxito finalmente o no, y por lo tanto, no hay forma de saber hacía que dispositivos estarán enfocadas las aplicaciones desarrolladas con Flutter hoy en día, dentro de algunos años.
  • Soporte de terceros
    • Si bien mencionamos que Flutter ya cuenta con una impresionante colección de bibliotecas y herramientas. Sin embargo, todavía hay muchos servicios de terceros que no han comenzado a admitir Flutter, incluidos los sistemas de pago, el software de automatización de impuestos e incluso Apple y Android TV. Ahora se están desarrollando muchas herramientas y aún quedan muchas más por desarrollar, pero definitivamente tomará tiempo antes de que Flutter se ponga a la altura de React Native en cantidad de herramientas y disponibilidad de paquetes con los que desarrollar.
  • El tamaño de la aplicación
    • Debido a que no hay un puente entre la aplicación y el dispositivo, todos los componentes de la interfaz de usuario pertenecen a la aplicación directamente, y eso genera que las aplicaciones basadas en Flutter terminan siendo bastante pesadas. El promedio de una app de Flutter es aproximadamente 4.7 MB, que es bastante más que la mayoría de las aplicaciones nativas. Por ejemplo, las aplicaciones nativas de Android comienzan desde 1 MB.

⏫ Regresar al Inicio

Guía Flutter

? ¿Qué es Flutter?? Aprender Flutter?? Comparación con Flutter? Wallpapers Flutter? Guía DevTools

React Native

Las ventajas de flutter y aplicaciones, visto en Ciberninjas

React Native se lanzó públicamente como código abierto a través de GitHub en 2015 y es el más popular de los tres frameworks en Stack Overflow y Google. A pesar de ser un framework bastante “viejo” ya, no existe una hoja de ruta clara, solo una página dedicada en GitHub que enumera los diferentes objetivos a alcanzar.

Existe una gran comunidad con (en el momento de la escritura) un subreddit de + 44.000 usuarios, un chat de Discord de + 98.000 usuarios y un fuerte soporte en Stack Overflow. Encontrar apoyo entre la comunidad es mucho más fácil que con Flutter, pero los desarrolladores de React Native ciertamente no son tan comunes como puede parecer.

Llegar a encontrar desarrolladores móviles nativos que también tengan conocimiento de React y JavaScript podría ser una tarea difícil.

React Native es compatible con la mayoría de las API nativas de Android e iOS. Debido a su gran comunidad de desarrolladores, incluso si no hay una API oficial disponible, hay muchas bibliotecas de terceros para elegir.

En términos de API específicas de hardware, React Native carece de una cantidad de ellas, pero nuevamente, hay bibliotecas de terceros disponibles. React Native no tiene API oficiales para: Bluetooth, biometría, NFC, cámara y sensores. Sin embargo, tiene API para WiFi y ubicación.

React Native realmente no ofrece una API para la creación de gráficos personalizados. Está invitado a componer componentes existentes siempre que necesite una solución personalizada, pero no es trivial tener un dibujo totalmente personalizado sin recurrir al código nativo de la plataforma.

Crear interfaces de usuario simples es bastante sencillo, dado que el equipo de desarrollo está familiarizado con los componentes React. Si necesita tener diferentes IU para cada plataforma, React Native puede administrar distintas implementaciones para Android e iOS.

Es posible, aunque no trivial, mezclar y combinar React Native UI con Native UI en la misma pantalla, y también es posible tener solo un subconjunto en las pantallas de una aplicación creada en React Native.

Los desarrolladores tienen todos los frameworks de JavaScript disponibles para realizar pruebas sobre sus componentes. Sin embargo, cuando se trata de pruebas de interfaz de usuario o automatización, la situación no es tan excelente. Aunque hay varias bibliotecas de terceros disponibles, no hay una ruta clara a seguir.

React Native en Resumen

React Native es un framework de desarrollo móvil de código abierto para el desarrollo móvil multiplataforma, que te permite desarrollar aplicaciones Android e iOS con JavaScript y un amplio enjambre de APIs de componentes nativos.

Ventajas de usar React Native

  • Una gama amplia de componentes
    • Incluye una amplia selección de componentes nativos de Interfaz de Usuario a diferencia de otros frameworks de desarrollo multiplataforma. Esto significa que las aplicaciones se verán como aplicaciones nativas. Si se hace correctamente, una aplicación React Native apenas se distingue de una aplicación nativa.
  • Desarrollo simplificado
    • El desarrollo móvil nativo implementa el enfoque de programación imperativo, donde los desarrolladores necesitan definir estrictamente una secuencia de acciones que describan cómo funciona la aplicación para crear una interfaz de usuario. Con React Native, los desarrolladores pueden usar programación declarativa, que describe solo lo que el programa tiene que hacer y no cómo debe hacerse. La programación declarativa permite un código más simple y una codificación más fácil, lo que también significa que el producto final será más fácil de mantener.
  • Arquitectura modular
    • React Native admite la modularidad de la arquitectura, lo que permite separar el código de la aplicación en varios bloques independientes. Esto da como resultado un desarrollo flexible, lo que facilita la actualización y modificación del producto final.
  • Soluciones y bibliotecas listas para usar
    • Debido a que React Native ha existido durante bastante tiempo, los desarrolladores han tenido tiempo de crear una variedad de bibliotecas y herramientas para automatizar y ayudar a la mayoría de los procesos de rutina. Existen frameworks de pruebas, herramientas para la verificación de tipos, tecnologías para la configuración del flujo de trabajo, etc. Esto significa que a los desarrolladores les resultará más fácil resolver problemas complicados o mundanos y tendrán más tiempo para perfeccionar el producto.
  • Soporte de terceros
    • Debido a que la comunidad de desarrollo ha respaldado los beneficios de React Native, muchos servicios de terceros han creado API y complementos para las aplicaciones de React Native. Hay soporte de terceros para mapas, sistemas de pago, gráficos y más.
  • Permite la recarga en caliente
    • Al desarrollar una aplicación móvil, es útil mirar la aplicación real con frecuencia (posiblemente después de cada cambio realizado en el código) para ello existe la denominada: recarga en caliente. Esta característica presente en React Native, permite a los desarrolladores ver de inmediato los cambios que se realizan en el código cada vez que se guardan.
  • Existe un gran ecosistema y comunidad
    • Hay una comunidad importante alrededor del framework React Native, que es una plataforma de código abierto; lo que se convierte en una gran ventaja porque significa que es menos probable que los desarrolladores se atasquen, ya que siempre hay alguien a quién se le puede pedir ayuda.

Desventajas de usar React Native

  • El rendimiento de la aplicación
    • Debido a que las aplicaciones multiplataforma no están totalmente alineadas con el hardware del dispositivo, su rendimiento es peor que el de las aplicaciones nativas. La razón es que hay un puente basado en JavaScript entre la capa de aplicación de React Native y los componentes de hardware, y cada interacción con el dispositivo tiene que pasar por ese puente. Cuantas más interacciones haya, peor será el rendimiento de la aplicación. Para preservar el rendimiento de la aplicación, los desarrolladores deben minimizar las interacciones entre la aplicación y el dispositivo, lo que básicamente significa que la aplicación debe ser lo más simple posible sin ninguna interactividad exagerada contra el hardware.
  • La necesidad de desarrolladores nativos
    • React Native es un gran framework multiplataforma, pero tiene sus limitaciones. Cuando encuentre una de esas limitaciones y aún no haya una solución React Native, es necesario involucrar a los desarrolladores acostumbrados a crear aplicaciones nativas, a veces tanto que es imposible justificar el uso de React Native en primer lugar.
  • Incapacidad para lidiar con la complejidad
    • React Native es bueno para aplicaciones simples, pero no es tan bueno para aplicaciones con muchas pantallas, interacciones, transiciones y animaciones complejas.
  • Lento al iniciarse
    • Las aplicaciones nativas React tardan más en iniciarse, incluso con dispositivos de gama alta, porque el puente de JavaScript también tarda en iniciarse.
  • Con visión de apps nativas
    • Al buscar desarrolladores de React Native, también debe buscar a alguien que tenga experiencia en desarrollo de apps nativas. De lo contrario, las posibilidades ya limitadas de React Native se harán aún más evidentes ya que el equipo no podrá comprender soluciones complejas a los desafíos que involucren hardware nativo que otros desarrolladores han creado con anterioridad.
  • Actualizaciones de plataforma nativas
    • Para mantenerse relevantes, Google y Apple tienen que seguir agregando constantemente nuevas funciones a sus plataformas. Aunque el equipo de React Native ha estado haciendo todo lo posible para mantenerse al día con las nuevas características de hardware, todavía se encuentran un paso por detrás que los proyectos de las anteriores citadas. Aún hoy, lleva mucho más tiempo desarrollar una aplicación React Native que desarrollar una aplicación basada en una solución nativa. Por lo tanto, es probable que además, su aplicación React Native se quede atrás siempre que exista una nueva actualización de hardware.

⏫ Regresar al Inicio

Xamarin

Las ventajas y desventajas de utilizar Xamarin, visto en Ciberninjas

Xamarin es el más antiguo de los tres frameworks, ya lleva más de 8 años. Es de código abierto, pero bajo un desarrollo centrado en el equipo de Microsoft. No posee la mejor reputación de herramientas, estabilidad y rendimiento entre los desarrolladores móviles, pero los desarrolladores empresariales de .Net parecen felices con él.

No existen hojas de ruta específicas para Xamarin o Android / iOS disponibles públicamente, pero hay una para Xamarin.Forms . Ser el framework más antiguo hace posible la existencia de una exhaustiva documentación.

Además, cuenta con una comunidad Slack de más de 6.400 usuarios, muchas reuniones / meetup y un sólido soporte a través de Stack Overflow.

Encontrar ingenieros para el framework .Net no debe ser difícil, pero encontrar ingenieros .Net con los conocimientos móviles específicos para la creación de apps nativas seguramente resulte más complicado.

Xamarin proporciona contenedores a varias bibliotecas de terceros, que generalmente ahorran mucho tiempo, ya que son un poco difíciles de crear, especialmente en iOS, donde no hay una herramienta automatizada para generar un punto de partida.

Muchas de estas extensiones se recopilan en la biblioteca de componentes de Xamarin, donde puede encontrar enlaces para Play Services, Firebase, Adobe Analytics y varios otros servicios ampliamente utilizados.

La mayoría de los enlaces son gratuitos, algunos otros son de pago, por ejemplo; el componente de reproducción de vídeo. Dicho esto, la gran mayoría de los contenedores tienen bajas calificaciones de los usuarios, incluso los proporcionados por el equipo de Xamarin.

Xamarin ofrece dos formas de desarrollar aplicaciones. En la primera; el desarrollador puede decidir crear la interfaz de usuario utilizando Xamarin.Forms, junto a la biblioteca de interfaz de usuario original de .Net (acompañada por WPF a lo largo del tiempo) o en el segundo caso; crear módulos de aplicación bajo la plataforma .Net Core completamente distintos, entre los que solo se puede compartir el código dentro de la propia plataforma de negocios “básica” de Microsoft.

Debido a la naturaleza de Xamarin, es posible que tengas un código de UI (casi) completamente compartido si usas Xamarin.Forms y no vas a necesitar proporcionar UI específicas sobre la plataforma.

Forms no tiene una función específica para presentar un UX diferente según la plataforma en la que se ejecuta, pero tiene un grado menor de integración en las vistas nativas si es necesario: es posible inyectar vistas nativas para cada plataforma en un diseño XAML. Esto debería estar bien para integraciones menores y ad-hoc, pero puede ofrecer problemas ante la necesidad de escalado.

Si el proyecto involucra interfaces de usuario desde la plataforma de .Net Core, no existe una opción para compartir la mayoría del código y la lógica de la interfaz de usuario, pero hay una mejor capacidad para interactuar con los componentes nativos y las API.

Con Xamarin se puede aprovechar NUnit, un excelente framework para pruebas unitarias que es nativo de C# y la realización de simulacros también es sencilla, lo que hace que el apartado de pruebas a nivel de componentes sea cómodo.

Por otro lado, el código de Xamarin se divide en iOS, Android y formularios. Esto puede requerir duplicar el código de prueba para cada plataforma. En el caso de iOS, se ofrece un generador de perfiles para verificar el rendimiento de la aplicación. Esta herramienta no está disponible para Android.

Xamarin brilla cuando se trata de pruebas de integración de interfaz de usuario. Hace unos años, Xamarin compró Calabash, uno de los principales framework de pruebas para interfaces de usuario sobre dispositivos móviles y creó un conjunto de pruebas específicas para Xamarin que más tarde ha terminado por denominarse Xamarin Insights.

Xamarin en Resumen

Xamarin es un framework multiplataforma con C# y bibliotecas de plataforma nativas envueltas en una capa .NET. La tecnología consta de tres componentes principales: Xamarin Platform, Xamarin Cloud y Xamarin Insights.

La plataforma Xamarin se considera el elemento más importante de Xamarin, ya que ofrece API, controles, motores de tiempo de ejecución, cifrado, autenticación, máquinas virtuales y mucho más.

Xamarin Cloud proporciona una plataforma de prueba automatizada para garantizar la calidad de su producto en una variedad de dispositivos. Xamarin Insights es una herramienta de monitoreo que ayuda a los desarrolladores a rastrear bloqueos y excepciones de aplicaciones.

Ventajas de usar Xamarin

  • Rendimiento comparable a las aplicaciones nativas
    • Gracias a C#, que es un lenguaje de programación multi-paradigma y fuerte competidor de otros lenguajes utilizados en el desarrollo móvil, lo que permite que las aplicaciones Xamarin se mantengan firmes junto con las aplicaciones desarrolladas en Objective-C, Swift, Java o Kotlin.
  • Consistencia con el hardware
    • La variedad de APIs disponibles para los desarrolladores de Xamarin permite la integración con muchos componentes de hardware nativos, mejorando la experiencia del usuario.
  • Xamarin.Forms
    • Esta tecnología permite a los desarrolladores escribir código de interfaz de usuario que se puede compartir entre aplicaciones de Android e iOS con un conjunto de herramientas de más de 40 controles y diseños que se asignan a controles nativos durante el tiempo de ejecución.
  • Compatibilidad con la arquitectura MVC y MVVM
    • Xamarin admite la implementación de dos patrones de arquitectura populares: Model – View – ViewModel (MVVM) y Model – View – Controller (MVC). MVVM es bueno para crear diferentes procesos con la misma base de código, mientras que MVC ayuda a separar la presentación y la lógica de la aplicación, acelerando el proceso de desarrollo.
  • Soporte de aplicaciones sin conexión
    • Debido a sus características de sincronización de datos y nube, Xamarin permite que las aplicaciones trabajen sin conexión, una capacidad que solía estar limitada solo a las aplicaciones nativas.

Desventajas de usar Xamarin

  • Los plazos de carga
    • Al crear con Xamarin, los desarrolladores deben vincular y hacer referencia al código entre varios sistemas operativos y frameworks .NET. Esto afecta negativamente los tiempos de inicio y descarga de la aplicación, lo que hace que la experiencia de la aplicación sea menos agradable para el usuario final.
  • Desarrollo lento y complejo de la interfaz de usuario
    • Aunque Xamarin.Forms permite compartir algunos componentes de la interfaz de usuario, todavía hay algunos componentes que deben desarrollarse para cada plataforma individualmente. Aunque en algunos casos es mejor que escribir la interfaz de usuario desde cero, el proceso de desarrollo de la interfaz de usuario con Xamarin sigue siendo difícil y requiere de mucho tiempo.
  • Complejidades en el soporte del código
    • Aunque hay muchos desarrolladores .NET profesionales, Xamarin también requiere familiaridad adicional con el desarrollo, los frameworks y las arquitecturas móviles nativos. Esta es una combinación de habilidades difícil de encontrar, ya que no muchos desarrolladores quieren aprender dos paradigmas de programación muy diferentes. Como resultado, es posible que existan dificultades para encontrar desarrolladores profesionales que brinden soporte, arreglen, actualicen o desarrollen una aplicación.
  • Dependencia de la aplicación
    • Independientemente de cuánto código comparte entre las diferentes plataformas, los desarrolladores siempre necesitarán escribir código nativo para la personalización específica de cada plataforma. Esto no solo podría ser un problema en términos de costo y de encontrar desarrolladores apropiados: si no que, además, una combinación entre Xamarin y código nativo también resultaría en archivos de gran tamaño, lo que terminará por dañar el rendimiento de la aplicación.

⏫ Regresar al Inicio

Conclusión Final

Visto este gran reposo gracias a la traducción realizada desde las publicaciones de Hackernoon y Novoda esperemos que ya puedas determinar mejor la fórmula correcta de desarrollar tus aplicaciones móviles multiplataforma.

Partiendo de la base de que los frameworks multiplataforma no son la panacea del desarrollo y que solo terminan funcionando bien cuando se usan con plena conciencia de sus limitaciones y fortalezas, ósea en un contexto que los haga brillar. No se debería nunca elegir exclusivamente un framework así, por la posibilidad de ahorrar costes y la reducción del equipo de trabajo.

Seguramente, si son implementados bajo las situaciones en que se logré cubrir las necesidades y problemas fundamentales que nuestro cliente nos plantea, lograremos ver como estas herramientas brillan siendo la piedra angular de nuestros proyectos.

Fuentes: HackerNoon + Novoda + Google

Relacionados

Deja un comentario