Cómo elegir la tecnología más adecuada para tu aplicación móvil
Vivimos en un mundo donde el teléfono móvil es el protagonista de todas las interacciones humanas. Estos dispositivos se han convertido en un elemento imprescindible para nuestro día a día, hasta tal punto que en muchos casos el smartphone es casi un órgano de nuestro cuerpo. Esta circunstancia se ha visto potenciada por la actual pandemia que ha multiplicado nuestra dependencia de este tipo de dispositivos, pero ¿cómo podemos elegir la tecnología más adecuada para la aplicación móvil de la empresa?
Para utilizar el smartphone -más allá de las llamadas de teléfono- hacemos uso de las aplicaciones móviles, paquetes de software que interactúan con el hardware de la máquina y con las redes de Internet. No hace falta ser un especialista en tecnología para saber que a diario todos utilizamos apps como Whatsapp, Instagram, etc, por lo tanto, si nuestros clientes -actuales y potenciales- utilizan este canal lo lógico es que nuestra empresa esté allí.
El quid de la cuestión entonces consiste en elegir el camino que mejor se ajuste a nuestras necesidades y a las del cliente manteniendo los costes de desarrollo del proyecto móvil en unos niveles aceptables.
App móvil vs Web Móvil
La primera gran decisión que tenemos que tomar es decidir si optamos por desarrollar una app móvil o bien crear una web optimizada para móvil. Tradicionalmente las webs móviles tenían muchas limitaciones: no podían acceder a todos los servicios del dispositivo, necesitaban de mucho consumo de datos en un contexto en el que no había tarifa plana, lentitud de ejecución, etc. Pero hoy en día muchas de esas limitaciones ya no existen, de hecho, en bastantes casos si creas una PWA (Progressive Web App) puedes llegar a tener una experiencia bastante cercana a una app nativa típica.
Si eliges la opción de tener una web móvil te evitas además pasar el proceso de publicación de tu aplicación en las tiendas de Apple y Google, así como las comisiones que cobran (30%) de los pagos efectuados a través de tu aplicación. Por otra parte, puedes aprovechar todo el posicionamiento orgánico que tenga tu web ya que en las tiendas de apps móviles si quieres posicionar tu aplicación tienes que comenzar de cero para conseguir que aparezca en los primeros resultados de las búsquedas con técnicas de ASO (App Store Optimization, o sea, optimización para tiendas de aplicaciones).
Dicho esto, puede parecer que las webs móviles son perfectas para sustituir a las apps, pero todavía no hemos llegado a ese punto porque persisten limitaciones técnicas que una web de este tipo todavía no puede sortear de manera sencilla. Os comento a continuación algunas de ellas:
- Una web móvil en iPhone no tiene a su disposición el uso de notificaciones push como si tienen las apps
- Una web móvil tampoco puede acceder al área de seguridad de contraseñas (SSO – Single Sign On) para poder cruzar los datos de acceso entre diferentes aplicaciones y conseguir así una experiencia de usuario más fluida
- Los navegadores web consumen muchos recursos del dispositivo y son lentos ejecutando tareas gráficas por lo que cualquier proceso visual irá muy lento y consumirá más batería
- Las webs móviles utilizan normalmente JavaScript como lenguaje de programación, este es un lenguaje interpretado, no compilado, palidece en velocidad de ejecución si lo comparamos con los lenguajes compilados como Swift o Kotlin
- Una web móvil no te pone sencillo crear un icono de aplicación en tu móvil para acceder a la misma, las aplicaciones móviles sin embargo sí que tienen su icono disponible cuando las instalas, eso aumenta su recurrencia de uso
- Desde una web móvil no puedes acceder a la agenda del usuario directamente, tienes que hacerlo a través de sincronizaciones con servicios webs externos al dispositivo
¿Significa esto que tengamos que utilizar solo apps móviles y no webs móviles? No, depende del tipo de aplicación, si es una app ligera que no tiene gran carga de trabajo gráfico, que no necesita notificaciones ni acceder a muchos recursos del móvil las webs móviles son una buena solución.
Hay un último elemento muy importante, los costes y tiempos de desarrollo, a día de hoy hay mucha más oferta de programadores con conocimientos de desarrollo web y JavaScript (con sus diferentes familias) que programadores de aplicaciones nativas, por lo tanto, a mayor oferta costes más bajos. Resulta más económico desarrollar una web móvil que una aplicación móvil. Además, una web móvil funciona igual en un dispositivo iPhone y en un dispositivo Android, con el mismo desarrollo cubres ambas plataformas. Con una app si usas tecnologías nativas tienes que desarrollar dos aplicaciones distintas, aunque como os contaremos a continuación hay alternativas para evitar este doble esfuerzo.
Apps nativas vs Apps Cross-Platform vs Apps Híbridas
Imaginemos que nos hemos decidido por una aplicación móvil, en ese caso ahora llegaría el turno de elegir tecnología. Podemos clasificar las tecnologías móviles en tres grandes familias:
- Nativas
- Cross-Platform
- Híbridas
Las tecnologías nativas son las herramientas y técnicas que pone el fabricante del dispositivo a disposición del desarrollador para crear una aplicación. Te permiten sacar el máximo rendimiento al dispositivo y están siempre actualizadas con las últimas novedades.
En el caso de Android tradicionalmente se desarrollaban las aplicaciones con Java, pero desde hace unos años los propietarios de Android -Alphabet– han apostado muy fuerte por Kotlin, un lenguaje de programación moderno, robusto y muy ágil con el respaldo de una comunidad muy activa. Con Kotlin también puedes desarrollar aplicaciones para iOS, pero en esta plataforma su éxito es muy limitado.
En materia de iOS el lenguaje estrella hace unos años era el Objective-C, un lenguaje basado en C al que se le agregaron elementos de otras tecnologías como Smalltalk, Cocoa y Cocoa Touch por parte de Apple. Desde 2014 la empresa de la manzana decidió apostar por Swift, un lenguaje creado por la multinacional californiana pero abierto a las aportaciones de la comunidad de desarrolladores. Al igual que Kotlin es un lenguaje robusto, sencillo, multiplataforma y muy ágil. Es también posible crear apps de Android con este lenguaje, pero no es lo habitual.
Las aplicaciones desarrolladas con tecnologías nativas son las más rápidas, las más optimizadas en cuanto consumo de batería y las más estables al ser utilizadas. Pero para poder desarrollarlas necesitas a un equipo con conocimientos específicos de este tipo de software, no es fácil ni barato conseguirlo, y más teniendo en cuenta que la tecnología de las dos plataformas dominantes del mercado necesarias para crear una app son muy diferentes. Si tienes una buena aplicación nativa, eso sí, igualar su calidad con otro tipo de tecnología va a ser muy difícil.
¿Qué son las tecnologías Cross-Platform para aplicación móvil?
El siguiente tipo de tecnología de la que vamos a hablar sería la llamada Cross-Platform, en este caso hablamos de herramientas que nos permiten crear una aplicación que funcione en los dos ecosistemas principales sin hacer uso de tecnología web como hace el tercer grupo de tecnologías -las aplicaciones híbridas- de las que hablaremos más tarde. Es decir, estas aplicaciones no se ejecutan en una ventana web, lo hacen de manera directa en el smartphone como lo haría una app nativa.
Las tecnologías más utilizadas para este tipo de aplicaciones serían las siguientes:
- React Native: Esta tecnología ha sido creada por Facebook y su base es la misma que la de ReactJS, el framework de JavaScript más usado con diferencia a día de hoy. Debido a esto tiene una gran base de desarrolladores en todo el mundo. Aunque su programación se realiza con JavaScript se ejecuta sin necesidad de navegador web interpuesto.
- Flutter: Otra de las grandes apuestas de Google, utiliza como lenguaje de programación a Dart y permite crear muy rápido aplicaciones para ambas plataformas de manera simultánea, es una opción muy interesante.
- Unity: Realmente es un motor para videojuegos, aunque no sea muy habitual, puedes crear aplicaciones realmente espectaculares. Conseguir desarrolladores en este campo económicos y motivados para hacer apps tradicionales es muy complicado.
- Xamarin: La tecnología ideal para programadores acostumbrados a las tecnologías de Microsoft, si desarrollas habitualmente con Visual Studio y C# ésta es tu opción sin duda alguna. La única pega es que la última milla de la aplicación tienes que personalizarla para cada plataforma, es decir, creas una aplicación al 80% y la parte final toca crearla específica para cada plataforma, pero es ideal para los equipos acostumbrados a trabajar con la tecnología de la empresa de Seattle.
Como podéis apreciar las tecnologías cross-platform son una buena opción -salvo quizás Unity– para crear una app móvil, consigues desarrollar una aplicación para Android y para iOS a la vez rentabilizando esfuerzos, el elemento más importante para tomar esta decisión suele venir de la mano de los profesionales disponibles y su conocimiento.
Hablemos de las tecnologías híbridas
Las tecnologías híbridas son la última familia de la que vamos a hablar, agrupa a todas aquellas tecnologías que permiten el desarrollo simultáneo para ambas plataformas que utilizan como base de su tecnología el navegador web. Es decir, la aplicación móvil embebe un navegador web que ocupa toda la pantalla y el hilo de ejecución de la interacción con el usuario es el que ejecuta los procesos principales. Aunque algunas de ellas no utilizan a día de hoy ese navegador a pantalla completa si que funcionan basándose en un navegador web virtual. El lenguaje de programación utilizado como base es JavaScript aunque dependiendo de la plataforma puedes utilizar frameworks como Angular, VueJS o ReactJS.
Para funcionar más rápido tienen disponibles una serie de plugins en tecnología nativa que se encargan de acceder a los recursos del terminal. Estos plugins también existen en Cross-Platform pero aquí se hace un uso más intensivo de los mismos.
Como hemos comentado más arriba al utilizar JavaScript y sus frameworks más extendidos como base tecnológica el número de desarrolladores disponibles aumenta exponencialmente por lo que encontrar o formar un equipo de desarrollo es bastante más sencillo que con las anteriores tecnologías.
Las plataformas más utilizadas en cuanto a desarrollo híbrido son las siguientes:
- Cordova: Es la decana de todas ellas, en su día fue la más utilizada, pero los años no pasan en balde, aunque mantiene una amplia comunidad sus aplicaciones a día de hoy son bastante lentas, no aptas para situaciones en las que la experiencia de usuario debe ser rápida.
- Ionic: Compatible con Cordova, aunque mejora enteros cuando la usas con su motor para móvil llamado Capacitor. Permite desarrollos con Angular, VueJS o ReactJS, vamos, que cubre casi todo el espectro de JavaScript. Sus aplicaciones funcionan mejor que las de Cordova, pero cuando accedes a ciertos recursos del móvil puede darte algún parón.
- NativeScript: Similar a Ionic con todo su stack de JavaScript excluyendo a ReactJS. Funciona mejor que Cordova, pero al igual que el anterior cuando accedes a ciertos recursos del móvil como la cámara o el GPS no funciona con la fluidez de una app nativa.
Con este tipo de plataformas, aunque no consigues el rendimiento de las dos anteriores, puedes publicar aplicaciones de un nivel profesional que no requieran grandes recursos del smartphone. Además, es muy sencillo formar o encontrar a desarrolladores capaces de llevar a buen puerto un desarrollo de este tipo. Por lo general abaratas mucho los costes, aunque el desempeño de la app en ocasiones no es tan fluido como una app nativa o una app cross-platform.
Hay opciones para todas las situaciones – de aplicación móvil-
Como habéis podido ver hay tecnologías para todos los gustos, precios y colores. Podemos desde optar por hacer una web a hacer una app nativa, cruzada o híbrida, dependiendo de las necesidades y de las circunstancias habrá opciones que tengan más o menos peso. Lo que no debemos olvidar en ningún momento es que el objetivo de una app es ayudar al cliente a resolver su problema o dar respuesta a su necesidad, cualquier tecnología será buena si nuestra app puede dar ese servicio dentro de unos costes razonables.
Para cualquier duda no dudéis en preguntarme en la sección de comentarios.
Más artículos de Gabriel Cuesta