Si tu objetivo es crear una aplicación móvil, en nuestros días tienes una enorme pluralidad de opciones a tu alcance para hacerlo. Ya antes de decantarse por desarrollar una aplicación móvil híbrida, posiblemente te propongas la tradicional implementación en Java (Android) o bien Swift / Objective-C (iOS).

Es posible que el mayor inconveniente de emplear esta práctica de desarrollo móvil nativo sea la «duplicidad» de tu aplicación. Si deseas que tu aplicación se use en diferentes géneros de dispositivos, no te va a quedar otra que incorporar 2 versiones: una para Android y otra para iOS. Y ni tan siquiera hemos hablado de Windows Phone. Una vez que tengas tu aplicación en las aplicación store, cualquier ampliación o bien mantenimiento va a deber hacerse en todas y cada una de las tecnologías separadamente. Esto, evidentemente, acrecienta tiempo y costo de desarrollo de apps.

Aplicaciones híbridas al rescate
Esto es una cosa que los desarrolladores de tecnologías móviles se dieron cuenta ya hace años. Siendo de esta manera, de manera rápida brotó una alternativa: desarrollar la aplicación móvil híbrida. Una aplicación móvil híbrida no es más que una aplicación construida en un lenguaje que deja producir una versión de exactamente la misma para cada una de las primordiales tecnologías móviles, esto es, Android, iOS y Windows Phone. Adiós al inconveniente de la «duplicidad». No obstante, desde las primeras aproximaciones en Phonegap, pronto brotó otro dolor de cabeza: el desempeño. Las primeras aplicaciones híbridas que brotaron tenían inconvenientes conocidos en este sentido. De forma rápida te dabas cuenta que la aplicación que estabas utilizando era híbrida. Acciones tan simples en aplicaciones nativas como transiciones entre páginas o bien despliegues de menús se hacían realmente complejas (¡y lentas!) de ejecutar.

Por suerte desde ese momento ha llovido mucho. En nuestros días ya tenemos en el mercado una serie de herramientas más avanzadas. Estas nos dejan desarrollar nuestra aplicación multiplataforma sin los inconvenientes mentados o bien, cuanto menos, minimizándolos todo lo que es posible. Échémosles un vistazo:

1. Ionic
Este framework trabaja en el tradicional Cordova (viejo phonegap) usando tecnologías web (HTML + CSS + JS). Al final, la aplicación no es más que un WebView que muestra una web.

Evidentemente, esta web puede tener una apariencia de aplicación móvil y, en consecuencia, parecer nativa. En verdad los estilos que se muestran en diferentes plataformas (Android / iOS / Windows Phone) no tienen por qué razón ser exactamente los mismos, lo que ofrece una experiencia de aplicación nativa todavía mayor.

Siendo la tecnología web tan estándar, el desarrollo de aplicaciones móviles híbridas en Ionic se hace exageradamente simple y poco costoso. No cuesta demasiado hallar desarrolladores web y la curva de aprendizaje es mínima. Con el curso de front-end para diseñadores tendrías más que suficiente para comenzar. En poquísimo tiempo puedes contar con de tu aplicación lista para las 3 plataformas. Por otra parte, la comunidad Ionic es increíble. Dispones de una infinidad de recursos en el momento de desarrollar que minimizan la posibilidad de quedarte atascado en un inconveniente en pleno desarrollo.

Tecnologías móviles

Ahora bien, el inconveniente de raíz que vuelve a tener Ionic es el desempeño. Siendo una web que se ejecuta sobre un navegador, existen ciertas interactúes que no se ejecutan de forma tan diligente como se aguardaría. En acciones como transiciones entre páginas, arrastre de elementos o bien selección de objetos se aprecia la diferencia respecto a una aplicación nativa. Esto limita el empleo de esta tecnología en aplicaciones móviles. Grosso modo, frecuentemente se usa en aplicaciones sin mucha funcionalidad y con acciones simples y específicas. Otro empleo muy extendido es para aplicaciones internas empresariales, donde esta «falta de fluidez» no es tan esencial.

dos. Xamarin
Xamarin ofrece la posibilidad de producir las pertinentes versiones en Android, iOS y Windows Phone basándonos en un núcleo común. La primordial ventaja de este framework es que terminas consiguiendo una aplicación «nativa» real. Este hecho rompe la barrera del inconveniente del desempeño visto hasta el momento. No se trata de un Webview que ejecuta una web, si no que cada plataforma ejecuta su versión de la aplicación, a pesar de que el core es común.

El lenguaje que se emplea para desarrollar en Xamarin es C#, del framework .NET. En verdad, con el curso de desarrollo full-stack .NET tendrías las bases más que suficientes para incorporar tu aplicación en esta tecnología. Sí que es verdad que la curva de aprendizaje no es tan veloz como en Ionic y se requieren ciertos conocimientos concretos de Xamarin.

Como no podía ser de otro modo, esta alternativa asimismo tiene sus inconvenientes. Es posible que uno de los inconvenientes más esenciales sea que se requiere un desarrollo concreto para la interacción con el usuario en todos y cada plataforma. En la imagen precedente, el UI Layer. Este hecho reanuda en una pequeña proporción la «duplicidad» original de las aplicaciones nativas. Otro inconveniente es que el ambiente de desarrollo es complejo y aburrido de configurar.

Nuevamente, esta alternativa se hace inmejorable cuando la el desarrollo de la aplicación móvil híbrida es bien simple y sin muchos flujos. Si la funcionalidad visual medra, el tiempo de desarrollo medra 3 veces más veloz. Asimismo es buena opción cuando el core del negocio ya está en .NET. Siendo este un lenguaje muy emplea por grandes empresas, es muy habitual que haya procesos de negocios ya incorporados en C#. Si esta situación se da, sencillamente es cuestión de desarrollar la capa de Usuario Interfaz para cada dispositivo y ¡listo!

tres. React Native
React es una tecnología web parcialmente nueva, lleva cerca de cinco años en el mercado. Su término y su sintaxis hacen que un desarrollador de front-end tenga una curva de aprendizaje rapidísima. Tanto es de esta forma, que en el curso de front-end para diseñadores hay un apartado exclusivo para esta tecnología. Una de sus variaciones es React Native, que deja edificar aplicaciones móviles híbridas en React. En contraste a la tecnología híbrida basada en web vista con Ionic, React Native produce sus aplicaciones móviles híbridas mediante controladores UI nativos.

Puesto que la aplicación que se ejecuta es nativa, el desempeño es muy próximo al nativo real y la duplicidad de código es mínima. Sí que es verdad que, para ciertas circunstancias, se requiere código concreto para cada plataforma, mas son casos muy específicos. La base de React es la separación de la aplicación en componentes reusables, lo que facilita impresionantemente el desarrollo.

Como defecto resaltable, podría decirse que, al usar Controladores UI Nativos, jamás se tiene un control total sobre la aplicación generada. Es el framework de React Native el que edifica la aplicación, lo que produce una «caja negra» para el desarrollador. En ciertos casos, esto puede producir inconvenientes de desempeño o bien administración de memoria verdaderamente complejos de solventar.

Por norma general, esta es una alternativa muy conveniente para aplicaciones más avanzadas. Al vertebrar la aplicación en componentes reusables, la escalabilidad de la aplicación es altísima, pudiendo edificar aplicaciones complejas de forma simple. En verdad, existen ya múltiples ejemplos de aplicaciones reales que usan este framework, como Fb, Instagram, Aribnb o bien UberEats.

cuatro. Flutter
Como novedad (lleva más o menos tres años en el mercado), tenemos a Flutter: la opción alternativa de Google. En esencia, marcha de forma muy afín a React Native. Desde un lenguaje común, se producir aplicaciones nativas «reales». Ahora bien, este framework emplea Widgets dueños y una serie de herramientas UI concretas para producir componentes visuales con una fluidez y una visualización increíbles.

El desempeño de una aplicación Flutter es impresionantemente afín a una aplicación móvil desarrollado con código nativo. Por otra parte, puesto que Google aguanta este framework, la comunidad y la documentación de esta herramienta es cada vez mayor y avanza a pasos desmedidos.

Por contrapartida, podría decirse que Flutter usa Dart como lenguaje de programación. En contraste al resto de tecnologías vistas hasta el momento, Dart es un lenguaje que, a pesar de que apareció en dos mil once, su empleo no es en lo más mínimo muy extendido. Este hecho hace que hallar desarrolladores Dart sea un reto digno de mencionarse. Por otra parte, siendo Flutter un framework «recién salido del horno», la comunidad no es muy grande y la posibilidad de encontrarse un inconveniente que absolutamente nadie más se haya encontrado ya antes en pleno desarrollo es parcialmente alta. Todavía de este modo, esto es una cosa que de forma previsible cambiará a corto plazo, siempre que Flutter se posicione con fuerza en el mercado.

Vale… Entonces, ¿qué empleo?
Evidentemente, la resolución de emplear una tecnología o bien otra es muy subjetiva. En verdad, es muy posible que aun especialistas en tecnología que lean este artículo no estén en lo más mínimo conforme con lo que se explica en esta sección. Todavía de esta forma, te dejaremos una serie de consejos a fin de que puedas seleccionar adecuadamente la tecnología de tu applicación móvil híbrida:

Valora el equipo
Como es natural, tu equipo de trabajo va a poder condicionar en buena medida la tecnología a elegir. Si tengo en mi equipo especialistas en Java y en Swift, no nos marchamos a lanzar a aprender Dart sencillamente por las ventajas que ofrece una aplicación en Flutter. Hay que ponderar las curvas de aprendizaje y la pérdida de experiencia cuando se brinca de tecnología

Valora la dificultad de la aplicación
Esto es, cuenta los casos de empleo de tu aplicación. Si te salen flujos variadísimos y muy complejos, posiblemente una solución como React Native te asista. No obstante, si tu aplicación es bien simple y sin demasiadas vistas, es posible que una implementación en Ionic te deje tener tu aplicación lista considerablemente más veloz y el mantenimiento sea más simple.

Identifica elementos ya existentes
Si no unas partes de cero, posiblemente tu aplicación se base en un sistema ya existente. De ser de esta forma, la elección de una o bien otra tecnología puede venir condicionada por la capacidad de integración de tu aplicación móvil en el proyecto en el que estés. Por servirnos de un ejemplo, si tu proyecto está en .NET, posiblemente emplear Xamarin te deje volver a usar lógica de negocio ya incorporada. Si al contrario, el proyecto está hecho en tecnologías web tradicionales, es posible que se integre mejor con Ionic.

Considera el público objetivo
La carencia de fluidez de aplicaciones híbridas puede ser un inconveniente o bien no. Singularmente en función de si tu aplicación está orientada a un público general o bien a uno concretamente. Por poner un ejemplo, consideremos a los trabajadores de un almacén que empleen una aplicación para registrar los envíos que entran y salen. Seguramente les importe poco la carencia de fluidez de la aplicación al mudar entre pantallas de una aplicación en Ionic. Ahora bien, si la aplicación es una red social, el escenario cambia. Es posible que los usuarios sean más sensibles a estos aspectos y prefieran aplicaciones construidas en React Native o bien Flutter.