Al momento en que decidas llevar a cabo el desarrollo de tu aplicación móvil es muy importante que conozcas de que manera la agencia o la persona encargada va a realizar el desarrollo de tu aplicación móvil por 2 motivos:
- Para saber si realmente sabe lo que está haciendo.
- Para conocer como se verá afectada tu aplicación en un futuro.
En el mundo del desarrollo de software existen distintas herramientas y mecanismos para llevar a cabo el desarrollo de una app. Estos conjuntos de herramientas y mecanismos se dividen en Híbridas, Bridge y Nativas. A continuación hablaremos desde nuestro punto de vista y experiencias que hemos tenido trabajando con estos tres.
Desarrollo Nativo
El desarrollo de aplicaciones móviles nativas se realiza pura y únicamente mediante tecnologías y herramientas desarrolladas por cada plataforma, es decir Android y iOS. Como cada plataforma tiene sus propias tecnologías es necesario desarrollar 2 aplicaciones completamente distintas.
Pros
- No depende de ninguna plataforma intermediaría más que la nativa.
- Las integraciones de servicios de terceros (como ejemplo el inicio de sesión con facebook, los mapas de Google, etc) es completamente desarrollada y mantenida por los propios ingenieros de cada empresa.
- El rendimiento final de la aplicación es mucho mejor que una Híbrida y compite bastante con una Bridge.
- Se tiene un control total del código generado por lo cuál se puede optimizar procesos y el código en general y generar instaladores de muy poco peso (4mb-6mb).
- Al momento en que se libera alguna tecnología nueva, esta sale mucho antes en la plataforma nativa.
Contras
- Se tienen que desarrollar una aplicación completamente desde cero en cada plataforma.
- En la etapa de desarrollo resulta ser algo más lento en comparación con las híbridas y bridge.
Desarrollo Híbrido
El desarrollo de aplicaciones móviles híbridas consiste en una herramienta que nos permite utilizar un mismo código base para generar la aplicación para ambas plataformas de Android y iOS. De manera interna y en pocas palabras una aplicación híbrida es un sitio web empaquetado para funcionar como una aplicación móvil.
Pros
- Escribes un código y ya tienes la aplicación para ambas plataformas.
- El lenguaje en ocasiones resulta ser más sencillo y fácil de programar.
Contras
- Dependes 100% de una plataforma intermediaría (Ionic, Phonegap, Cordova). Lo cual quiere decir que por ejemplo para que tu aplicación sea compatible con iOS 12, es necesario que la gente detrás de esa plataforma trabaje en la compatibilidad de dicha plataforma.
- Las integraciones de servicios de terceros como Facebook, Google, etc. Normalmente son desarrolladas por la comunidad. Y de la misma manera dependes de ellos, en algunas ocasiones puedes encontrar hasta 2 o 3 integraciones con el mismo fin, solo que las primeras 2 dejaron de ser mantenidas y murieron en el olvido.
- Al depender de una plataforma intermediaría o de otros desarrolladores puede complicarse la integración de ciertas características (por ejemplo; conocemos un caso de que otra empresa negó la integración de recibir notificaciones a uno de sus clientes).
- El rendimiento suele ser malo, es decir que se vuelven lentas, son muy pesadas o en la mayoría de su caso se traban.
- Las aplicaciones híbridas tienen mucho más libertad a la hora del diseño por lo cual suelen tener un mal diseño y brindan una mala experiencia de usuario.
Desarrollo Bridge
El desarrollo de aplicaciones móviles bridge es algo similar al híbrido dado que ambos comparten la idea de programar un mismo código base para generar aplicaciones en ambas plataformas. La diferencia radica en que aquí no se genera un sitio web sino que el código escrito se transforma a componentes nativos a la hora de ejecutarse.
Pros
- Al igual que en las híbridas, utilizas un mismo código base para generar aplicación en ambas plataformas.
- También al igual que en las híbridas; el lenguaje puede ser más sencillo y fácil de programar.
- En ocasiones el rendimiento es tan bueno como una aplicación nativa.
- En algunas plataformas se utiliza tecnología que permite que el desarrollo sea más rápido ya que se muestra en tiempo real lo que se va programando.
Contras
- Al igual que en las híbridas siempre dependerás de una plataforma intermediaría (React Native, Xamarin, Titanium) y las integraciones de servicios de terceros frecuentemente son desarrollados por la comunidad.
- Al utilizar componentes y funciones nativas, en ocasiones tienes que programar 2 funciones para cada plataforma porque puede que el componente que utilices no funcione en ambas plataformas.
- Puede pasar que no encuentres un componente que se adapte a tus necesidades por lo cual tendrás que programarlo tu mismo en un lenguaje nativo, como fue el caso de AirBnb que mencionaba que al final resultaba lo mismo que si hubieran desarrollado su aplicación de manera nativa por el nivel de código nativo que programaban.
- Frecuentemente terminas utilizando código de terceros lo cual puede ser complicado el mantenerlos actualizados y que sean compatibles unos con otros.
Pruebas experimentales
Encontramos en un blog unas pruebas que realizaron de una aplicación híbrida (Ionic) vs una aplicación bridge (React Native) en cuanto al rendimiento.
En la prueba simplemente iniciaron la aplicación y se mantuvieron sin hacer nada durante 30 segundos. Los resultados fueron los siguientes:
Uso de la CPU: el siguiente gráfico representa la comparación de uso de la CPU cuando la aplicación se mantuvo en el estado de inicio y inactivo. El uso de la CPU de la aplicación Ionic se registró como 21.3% mientras que, para la aplicación nativa React, el uso de la CPU se registró como 12.8%.
Asignación de memoria: como se ve en el gráfico a continuación, la aplicación Ionic ocupa unos 1049 MB. Mientras que en el caso de React Native, la aplicación muestra un promedio de uso de memoria de 868 MB.
Conclusión
Existen casos de aplicaciones y empresas que han migrado completamente sus aplicaciones de Nativo a Bridge o viceversa. Cada plataforma se adapta mejor dependiendo de los requerimientos y alcances del proyecto pero es importante que conozcas las limitantes para saber tomar una mejor decisión.
Nosotros de manera interna preferimos el desarrollo de aplicaciones nativas. Para compensar el tiempo y los recursos de desarrollar dos aplicaciones distintas optimizamos otros procesos independientes al desarrollo de las aplicaciones móviles y constantemente realizamos investigaciones para mejorar nuestros mecanismos de desarrollo lo cual nos permite competir en tiempos con las híbridas o bridge.