¿Apps Nativas o Híbridas?

Hasta hace algunos años Google y Apple tenían cierto monopolio cuando se hablaba de desarrollo de aplicaciones móviles. Si quieres desarrollar para Android debíamos aprender el lenguaje Java y hace relativamente poco se integró como lenguaje oficial adoptado por Google Kotlin. En el caso de iOS nosotros debemos aprender Objective-C o Swift.

Claro, todo esto cuando nosotros nos referimos a los inicios del desarrollo móvil de manera nativa cuando nosotros debíamos contratar a 2 equipos de desarrollo, uno para Android y otro para iOS.

Uno de los primeros brincos fue el desarrollo web responsive, donde al momento de entrar a una página web nuestra página se veía de manera perfecta en un celular y es algo relativamente sencillo de hacer, sin embargo no teníamos la manera de nosotros lograr ciertos comportamientos, tales como tener un icono bonito, no podíamos montar esto en una tienda de aplicaciones o mandar notificaciones push. 

Hasta que llegamos al punto de poder generar una PWA (Progressive Web Application) nosotros podemos identificar una PWA porque cuando las visitamos normalmente nos pide autorización para mandarnos notificaciones y estas notificaciones llegan con el estilo del sistema (sea iOS o Android), además de que nos permiten generar un Icono en nuestro cajón de aplicaciones y es posible subirlas a las tiendas de aplicaciones. Algunos ejemplos de PWA son el Washington post y Twitter.

Sin embargo ahora podemos desarrollar aplicaciones móviles de manera multiplataforma, esto quiere decir que con un mismo código podremos generar aplicaciones para iOS y Android. Uno de los lenguajes de programación (o frameworks) que nos permiten generar una aplicación nativa (si, nativa) es Flutter, que comúnmente lo que se hace a grandes rasgos es tomar el código y bajarlo a lenguaje C para después compilarse en cada respectivo lenguaje. 

Otra manera de hacerlo es mediante el desarrollo Híbrido, en el cual hace mucho tiempo en sus comienzos existía el proyecto Phonegap la cual la idea principal era usar HTML5, CSS y Javascript, envuelta en un tipo de ‘’contenedor’’ que nos permite subir una aplicación web como si fuera nativa a una tienda, realmente las aplicaciones aquí eran demasiado lentas, algunos ejemplos de empresas que intentaron este camino fue Linkedin y Facebook.

Pero también tenemos otro camino, que se cuenta con frameworks tales como Xamarin, React Native e Ionic. Y aunque hay personas que piensan que esto solo es desarrollo web cuando no lo son. A esto se le llama aplicaciones Bridge. Hablando de un caso particular como lo es React Native, con el realmente podemos crear una aplicación nativa (razón por la cual lleva la palabra ‘Native’ en el nombre). De la manera en la que suelen trabajar es dividir el frontend y por otro lado la parte lógica y de esta manera de forma posterior integrar el código nativo. 

Cabe recalcar también que este tipo de aplicaciones no corre en un navegador y a pesar de ser un poco más pesadas en comparación de que si se hicieran 100% de forma nativa (osea con Java o Swift) realmente no es una diferencia muy grande y ojo cuando hablamos de peso, no nos referimos al consumo de memoria ram, ya que básicamente funcionan igual.

Cuando hablamos de desarrollo de videojuegos casi en su mayoría se hacen mediante un sistema bridge como por ejemplo Unity o Unreal Engine, y es aquí donde incluimos el desarrollo de aplicaciones que utilicen la tecnología VR. Algunos ejemplos de juegos realizados son Cash of Clans o Fornite.

Al final del día, la manera en la que decidimos que camino tomar para el desarrollo de nuestra aplicación es la cantidad de dinero que disponemos para adquirir capital humano. Y el único caso donde yo recomendaría el desarrollo de una aplicación 100% nativa son en casos donde vamos a sacarle un gran provecho de manera bestial a la GPU o que nosotros de plano hagamos uso total del hardware del dispositivo.

A continuación una pequeña tabla comparativa de las diferentes maneras de desarrollar aplicaciones.

Web AppApp HíbridaApp Nativa
CostoBajoMedioAlto
Tiempo de desarrolloCortoMedioLargo
MantenimientoFácilMedioComplejo
UXBuenaBastante BuenaExcelente
Funcionalidad OfflineComplejaComplejaFácil
Acceso al HardwareParcialAlto/CompletoMuy Completo
VelocidadRápidaRápidaMuy Rápida
App StoresNo DisponibleRápidaMuy Rápida
Portabilidad del CódigoCompletaAltaNula
SeguridadNormalNormalAlta

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *