Desarrollo de aplicaciones multiplataforma en 2020: los mejores marcos a tener en cuenta

illustration of c

En sus 12 años de existencia, las aplicaciones móviles han recorrido un largo camino.

En 2008, sólo había 500. Hoy hay más de cinco millones. (1)

Tanto si el anuncio de Apple de 2009 «Hay una aplicación para eso» era un mantra de marketing o una profecía real, una cosa es segura: la forma en que nos comunicamos y experimentamos el mundo que nos rodea ha cambiado completamente en la última década; un cambio de estilo de vida atribuido en gran medida a los pequeños cuadrados ordenados en nuestras pantallas.

Tanto es así, que esta vida impulsada por las aplicaciones que hemos llegado a llevar nos hace consultar el teléfono 58 veces al día, y el 90% de este tiempo lo dedicamos a utilizar aplicaciones. (2, 3)

Naturalmente, las empresas grandes y pequeñas han seguido de cerca la tendencia móvil, pues entienden que una aplicación propia aumenta su visibilidad, cultiva la fidelidad de los clientes y mejora su cuenta de resultados.

En todo el mundo, se prevé que los ingresos de las aplicaciones móviles (descargas de pago, compras dentro de la aplicación y publicidad) se acerquen a los 600.000 millones de dólares, y se espera que las cifras aumenten, ya que tener una aplicación empresarial se está convirtiendo en una norma para cualquier empresa emergente. (4)

Las aplicaciones, por tanto, no sólo tienen una gran demanda, sino que pueden ser muy rentables. Sin embargo, cuando se trata de crear una de forma nativa tanto para Android como para iOS, los elevados costes de desarrollo y los lentos tiempos de despliegue pueden suponer una enorme presión incluso para los equipos más ambiciosos.

La buena noticia es que hay una forma de evitarlo.

Una base de código para gobernarlos a todos: pros y contras del desarrollo móvil multiplataforma

Los que estéis atentos al panorama del desarrollo de aplicaciones ya habréis oído hablar de ellos: Xamarin, React Native, Flutter, Cordova y similares.

A lo largo de los años, estos frameworks han satisfecho las ansias de las empresas que buscaban llegar a los usuarios de smartphones de las plataformas iOS y Android (que comprenden el 98% del mercado de sistemas operativos móviles), sin tener que desarrollar realmente dos aplicaciones distintas para cada sistema operativo. (5, 6)

Al hacerlo, han conseguido beneficiarse de:

  • La misma accesibilidad con la mitad de esfuerzo. Una de las mayores ventajas que ofrece el desarrollo de aplicaciones multiplataforma es la facilidad de reutilización del código. En lugar de lanzar múltiples aplicaciones nativas para cada plataforma, puedes reutilizar una cantidad significativa de código y tener la misma aplicación desplegada en múltiples plataformas.
  • Costes reducidos. Como el código se escribe una vez, el equipo de desarrollo tendrá que dedicar la mitad de esfuerzo, lo que se traduce en una reducción de los costes de producción, mantenimiento y contratación. También se reduce la necesidad de aprender un lenguaje específico de la plataforma, ya que el dominio de JavaScript, C++, C# y HTML5 bastará en la mayoría de los casos para el desarrollo multiplataforma.
  • Menor tiempo de comercialización. Menos trabajo también significa tiempos de despliegue más rápidos. En consecuencia, menos tiempo dedicado al desarrollo significa que puedes ofrecer valor a tus clientes más rápidamente y ajustar tus aplicaciones según sus comentarios antes.
  • Sensación casi autóctona. A pesar de las sustanciales diferencias de UX y UI entre iOS y Android, las aplicaciones multiplataforma pueden emular la sensación nativa gestionando los desajustes de diseño y navegación por defecto.

Estas ventajas parecen casi demasiado buenas para ser verdad. ¿Por qué alguien seguiría la ruta nativa y construiría dos aplicaciones separadas para ambas plataformas cuando podría obtener la misma accesibilidad haciendo la mitad del trabajo?

Resulta que hay bastantes razones, entre ellas

  • Barrera lingüística. Uno de los principales retos que plantea el desarrollo de aplicaciones multiplataforma es el hecho de que los desarrolladores están escribiendo una aplicación en un lenguaje no nativo. Esto significa que no tendrán el mismo acceso a los componentes nativos simplemente porque el código está escrito en un lenguaje de alto nivel. Para tender un puente entre ambos, necesitan depender de bibliotecas de terceros específicas de cada marco, y cuanto más joven es el marco, más escasa es la biblioteca.
  • Discrepancia de UX. Dado que tanto Android como iOS tienen interfaces gráficas de usuario muy específicas (navegación, botones, menús, etc.), se requiere un mayor esfuerzo para conseguir una sensación nativa para cada plataforma. A veces, el trabajo necesario para conseguirlo supera las ventajas mencionadas.
  • Problemas de rendimiento. El rendimiento es otro conocido factor de ruptura, y aunque las diferencias son en su mayor parte mínimas, desarrollar un juego para móviles con Flutter o React Native no estará a la altura de la tecnología nativa.
  • Talla. Dependiendo del framework, la vinculación de código y los plugins de terceros pueden casi duplicar el tamaño del archivo de tu aplicación multiplataforma. Y como puedes imaginar, las aplicaciones más grandes no reciben tanto amor como sus homólogas más ligeras. No sólo requieren más espacio de almacenamiento en el dispositivo del usuario, sino que también tardan más tiempo y datos en descargarse. De hecho, Google Play Apps & Games publicó un informe que muestra que una aplicación de 100 MB recibirá un 30% menos de descargas que una aplicación que pese unos 10 MB.
  • Tu público objetivo. Por último, puede que sólo necesites dar servicio a usuarios de Android o iOS, en cuyo caso ir de forma nativa tendría mucho sentido. El lenguaje de programación es ahora totalmente compatible con la plataforma y el dispositivo, lo que significa que tu desarrollador no tendrá que pescar ese plugin de giroscopio para Cordova.

Ahora puedes ver cómo el desarrollo multiplataforma no es todo color de rosa. Muchas cosas pueden salir mal y depende de ti decidir si es un enfoque que merece la pena para tu proyecto.

Aun así, para la gran mayoría de las empresas (entre las que se incluyen Facebook, Google y eBay), el enfoque de desarrollo multiplataforma ha demostrado ser un método rentable y fiable para crear aplicaciones.

Evaluemos algunos de los principales marcos en 2020 y veamos dónde brillan y dónde se quedan cortos.

React Native: escribe una vez, despliega en cualquier lugar

Fundado por Facebook en 2015, React Native se ha consolidado rápidamente como uno de los marcos de desarrollo multiplataforma más populares entre los desarrolladores.

El principal motor de su uso a gran escala es el lenguaje de programación del framework, JavaScript, que se utiliza en el 95% de los 1.700 millones de sitios web del mundo. (7, 8)

Esto significa que un desarrollador que ya haya creado un sitio web utilizando JavaScript no se enfrentará a una curva de aprendizaje pronunciada cuando trabaje en una aplicación multiplataforma en React Native.

Otra gran ventaja que aporta React Native es su capacidad para imitar con éxito la sensación nativa de una aplicación. Aunque no incluye muchos componentes de interfaz de usuario, hay una gran cantidad de componentes de terceros que hacen que la experiencia nativa sea fluida.

El problema es que, cuando dependes demasiado de bibliotecas externas, puedes estar cambiando una sensación nativa por un rendimiento más lento. Dado que React Native requiere un puente para sus envoltorios nativos, puedes acabar con una aplicación que tenga demasiadas llamadas nativas, causando problemas de rendimiento.

Cordova: ¿vale la pena WebView?

Al igual que React Native, Cordova es una opción atractiva para los desarrolladores web a los que les convence la idea de reutilizar sus conocimientos de HTML, CSS y JS para crear una aplicación tanto para Android como para iOS.

Sobre el papel, Cordova parece un sueño. Hay un montón de herramientas y bibliotecas que te facilitan la vida: Ionic, por ejemplo, es genial para manejar la interfaz de usuario e integrar en tu aplicación servicios adicionales como la biometría de huellas dactilares y el procesamiento de pagos.

Pero ten cuidado antes de subirte al carro de Cordova. Si desconoces los límites del framework (y los tuyos propios), ese sueño puede convertirse rápidamente en una pesadilla.

En primer lugar, no tendría sentido escribir un juego serio o una aplicación pesada con Cordova. A diferencia de React Native, que llama a funcionalidades nativas a través de un puente, Cordova renderiza el código en una WebView, y ejecutar una aplicación de esta forma no sólo puede causar una pérdida significativa de rendimiento, sino que también hace que la aplicación sea propensa a ataques XSS.

También es probable que dediques algún tiempo a buscar soluciones para los errores específicos de la plataforma. A veces, este proceso conllevará una buena dosis de frustración, ya que las funcionalidades nativas que siempre has dado por sentadas ahora deben parchearse con plugins que requieren personalización o, peor aún, desarrollarse desde cero.

Para aplicaciones pequeñas y sencillas, Cordova es una opción que merece la pena. Las aplicaciones de estilo de vida, noticias, eventos, educativas y de mensajería, por ejemplo, se han creado y se pueden crear fácilmente con Cordova, que en el momento de escribir este artículo ocupa el 7,88% de la cuota de mercado de las aplicaciones.

Pero si estás desarrollando un juego con muchas animaciones, considera la posibilidad de utilizar el enfoque nativo. Perderás más tiempo en averiguar las soluciones relacionadas que el que habrás ahorrado escribiendo una única base de código.

Xamarin: el OG multiplataforma

Xamarin fue uno de los primeros frameworks de código abierto lanzados con el objetivo de tender puentes entre plataformas nativas y hacer que el desarrollo móvil fuera menos costoso.

Y aunque Xamarin se lanzó en 2011, no fue hasta su adquisición por Microsoft en 2016 cuando la comunidad de desarrolladores empezó por fin a concederle cierta credibilidad y tracción.

Hoy en día, es uno de los marcos de desarrollo multiplataforma de referencia, y cuenta con más de 60.000 colaboradores de más de 3.700 empresas. (9)

Basado en C#, un lenguaje de programación orientado a objetos, muchos consideran que Xamarin es más difícil de aprender que React Native, aunque el código funciona sin problemas en diversas plataformas, como Android, iOS, tvOS, watchOS, macOS y Windows.

Además, los desarrolladores disponen de todas las herramientas que necesitan para crear su aplicación multiplataforma a través de .NET, incluidas las API específicas de la plataforma, los paquetes y XAML.

Ahora puedes elegir entre dos caminos para crear una aplicación en Xamarin, y ambos permiten niveles de rendimiento casi nativos.

  1. Xamarin Native ofrece un enfoque de bajo nivel para crear aplicaciones independientes para cada plataforma con las bibliotecas Xamarin.iOS y Xamarin.Android. Es una base para exponer algunas funcionalidades nativas a Xamarin Forms llamando a API específicas de la plataforma.
  2. Xamarin.Forms es un framework sobre Xamarin Native con todas las funcionalidades de Xamarin. Es una opción mejor para los que acaban de empezar con Xamarin, ya que los desarrolladores pueden reutilizar hasta el 96% del código y los propietarios del producto pueden escalar y mantener sus aplicaciones más fácilmente.

Flutter: el nuevo chico del barrio

A diferencia de React Native y Xamarin, Flutter es un framework que sólo existe desde hace unos pocos años.

Pero a pesar de ser un novato en el mercado, Flutter ha conmocionado a la comunidad desde su lanzamiento por Google en 2018, demostrando ser un competidor fiable e innovador.

Su lenguaje de programación, Dart, puede que no sea tan popular como JavaScript, pero es relativamente fácil de aprender; por un lado, gran parte de la sintaxis es similar a Swift, Kotlin y Java, lo que significa que los desarrolladores con experiencia en C/C++ no tendrán demasiados problemas para cambiar a esta forma orientada a objetos de crear aplicaciones.

E incluso si se encuentran con algunos obstáculos en el camino, Flutter proporciona una amplia documentación para apoyar su transición.

A continuación viene la arquitectura de Flutter, que, en comparación con React Native, no depende de JavaScript Bridge para traducir las llamadas a la API nativa. El código escrito en Dart se compila en código máquina nativo, lo que mejora el rendimiento de la aplicación y la experiencia del usuario.

Sin embargo, la forma que tiene Flutter de comunicarse directamente con la plataforma utilizando su propia biblioteca de componentes integrados no es la ideal. Los plugins de terceros son difíciles de conseguir y las API específicas de hardware no son tan abundantes como en React Native, lo que hace de Flutter una opción inferior para las aplicaciones que dependen del hardware.

También merece la pena mencionar el hecho de que el motor C/C++ y Dart son bastante voluminosos, y aunque las aplicaciones hechas en Flutter pueden funcionar mejor, ocuparán mucho espacio.

Aún así, los widgets que obtienes fuera de la caja son totalmente personalizables y, combinados con la función de recarga en caliente, hacen de Flutter un marco ideal para desarrollar una aplicación MVP con una interfaz de usuario a medida y perfecta en píxeles.

¿Qué marco debes elegir?

Pues bien, la respuesta a esa pregunta dependerá en gran medida de los objetivos que te hayas fijado alcanzar con tu aplicación, así como del tiempo y el presupuesto que puedas destinar a su producción y mantenimiento.

Sea cual sea el enfoque por el que optes -nativo, multiplataforma o incluso una combinación de ambos-, el móvil no se va a ir a ninguna parte. Al contrario, se espera que este año pasemos una media de 3,7 horas al día en nuestros teléfonos inteligentes, lo que supone un aumento interanual del 10% y un crecimiento del 35% respecto a 2017. (10)

Sea cual sea el modo en que decidas crear tu aplicación, ten por seguro que Microblink estará ahí para ayudarte cuando necesites una solución de escaneado potente y sin fisuras integrada en ella.

abril 30, 2020

Descubre nuestras soluciones

Explorar nuestras soluciones está a un clic de distancia. Prueba nuestros productos o habla con nosotros con uno de nuestros expertos para profundizar en lo que ofrecemos.