Ante el auge de las aplicaciones móviles es posible que alguna vez hayamos pensado como programadores desarrollar una aplicación de este tipo. Más allá de tener una gran idea que nos ayude a inventar el nuevo WhatsApp, a la hora de plantearnos el desarrollo de la misma nos viene a la cabeza la forma en que llevaremos nuestra idea a buen puerto. También es posible que sea una empresa la que nos haya contratado para el desarrollo de la misma y lo único que tengamos sean las especificaciones que el proyecto debe cumplir. Ya sea de una u otra forma, nos encontramos delante de nosotros con una propuesta conceptual que finalmente deberemos transformar en una aplicación móvil.
Una vez que empezamos a analizar el proyecto y a diseñarlo, nos toca abordar una decisión crucial que marcará el desarrollo de la aplicación: ¿debemos desarrollar una app híbrida o nativa? Para contestar a la pregunta hay una serie de factores que debemos tener en cuenta, como pueden ser el tiempo que tenemos para el desarrollo, el presupuesto que cubrirá el proyecto, la formación que tiene el equipo que programará la aplicación si no somos nosotros solos y el resultado final que queremos obtener tanto a nivel de interfaz de usuario como de rendimiento, punto este último muy ligado a nuestra decisión final.
Diferencias en el desarrollo
Hay varias cuestiones a tener en cuenta a la hora de plantear el desarrollo de aplicaciones móviles ya sean híbridas o nativas. El primer factor determinante es la plataforma o plataformas destino de nuestra aplicación: si queremos que nuestra aplicación esté disponible para Android, iOS o ambas, ya que a día de hoy no tiene sentido por cuota de mercado plantearse otras opciones. En un primer momento, todos podríamos pensar que lo normal es desarrollar para ambas plataformas, pero en muchas ocasiones cuando desarrollamos a nivel empresarial el público objetivo de la misma va a usar un tipo de dispositivo concreto.
Pensemos, por ejemplo, en aplicaciones para el control de flotas de repartidores, en aplicaciones para los camareros de un restaurante o aplicaciones de los comerciales de una determinada empresa. En estos casos, como en muchos otros, la aplicación probablemente se instale en dispositivos que distribuirá la propia empresa y que serán todos del mismo tipo, normalmente Android de gama media-baja, por lo que quizá plantearnos un desarrollo híbrido no tendría tanto sentido como cuando alguien quiere hacer un desarrollo multiplataforma. Dicho lo anterior, vamos a centrarnos ahora en aquellos desarrollos donde realmente sí queramos implementar una solución tanto para Android como para iOS, ya que es el punto en el que la cuestión de evaluar entre una solución híbrida o nativa cobra sentido.
Hay varias cuestiones a tener en cuenta a la hora de plantear el desarrollo de aplicaciones móviles ya sean híbridas o nativas
Como idea fundamental debemos pensar que la diferencia principal entre ambos tipos de soluciones va a residir en el número de aplicativos que deberemos implementar. En el caso de las aplicaciones móviles híbridas será solamente una, ya que el núcleo del programa será desarrollado con lenguajes de naturaleza web (esencialmente HTML5 y CSS), mientras que si deseamos aplicaciones nativas deberemos desarrollar una aplicación tanto para Android, en lenguaje Java o Kotlin, y otra para dispositivos iOS, en lenguaje Swift u Objective-C. Evidentemente, si la decisión fuera solamente entre tener que desarrollar una sola aplicación o dos para obtener solución a nuestro proyecto parece obvio pensar que todos optaríamos por la primera opción. Veremos que no todo es tan sencillo como parece al ver las características de ambos tipos.
Solución nativa
Al desarrollar una aplicación nativa tenemos una serie de características que superan a su alternativa híbrida y que debemos tener en cuenta:
· La primera, por fundamental que es, sería el mejor aprovechamiento de los sensores y funciones integradas en los dispositivos. Aspectos tales como cámara, sensores de presencia, movimiento o luminosidad entre otros, GPS o posicionamiento son algunas de las facetas donde una aplicación nativa mejora a una solución híbrida. Si bien, cada vez más, en aplicaciones móviles híbridas tenemos librerías para el manejo de sensores, muchas veces dependemos de librerías de terceros que tienen que ser mantenidas y nos añade una preocupación más al proyecto. En las aplicaciones móviles nativas no existe ese tipo de dependencia al venir las librerías integradas con el sistema, y son Google y Apple los encargados de marcar la tendencia e implementarla, con el consiguiente desfase temporal hasta que son adaptadas por la solución nativa.
· El rendimiento es mayor en las aplicaciones móviles nativas. Esto es debido a que no hay una fase de “conversión” a código nativo. Trabajan con la interfaz de usuario propia de la plataforma y el uso de esos componentes les dota de mayor rapidez que los utilizados en tecnologías web. Si bien es cierto que en aplicaciones donde no se requiera de una velocidad muy alta y que cada día los dispositivos son mejores, es un factor muy a tener en cuenta si necesitamos una fluidez extrema a la hora de ver en funcionamiento nuestra aplicación.
· La seguridad propia de la plataforma es mayor en las aplicaciones móviles nativas ya que aportan librerías para implementar las nuevas capas de seguridad que con cada versión sacan las aplicaciones, tales como aceptación individual de permisos o que esta se produzca en el momento de su uso.
Solución híbrida
Analicemos ahora las ventajas que podemos obtener con una solución híbrida:
· Un único código. Este es el verdadero “core” de esta solución, tendremos un único desarrollo, por lo que el esfuerzo y tiempo para obtener el resultado final será mucho más rápido, pudiendo además tener una sola aplicación que mantener y evolucionar. Esto, que resulta fácil decirlo, suele ser en innumerables ocasiones el factor de toma de decisión más importante de todos.
· El equipo de desarrollo solo debe conocer una tecnología, y además está relacionada con lenguajes web (HTML, CSS y JavaScript), por lo que encontrar personal para llevar a cabo un proyecto es relativamente más simple que encontrar programadores de Swift o Kotlin.
¿Qué decisión tomar?
Llegados a este punto, hemos visto que la respuesta a esta pregunta puede ser perfectamente un “depende”. Si queremos una app que vaya muy fluida, se base fundamentalmente en sensores y con un nivel de seguridad muy alto, o nos estamos planteando desarrollar un juego con animación 3D, la solución nativa debería ser nuestra elección. Si no es este el caso, debemos plantearnos muy seriamente que la solución híbrida puede ser quizá la respuesta que necesitamos, más todavía si de una manera sencilla podemos ampliar dicha solución a una página web. Lo que tampoco debemos es pensar que nuestro trabajo acaba en la solución móvil implementada, ya que esto podríamos considerarlo solamente el front-end de nuestro proyecto, pero hay otros aspectos como el back-end o la base de datos que hay que valorar a la hora de desarrollar el proyecto completo. Pero eso ya para un análisis en otro artículo.