Cada año aumenta el numero de descargas frente al anterior. Existen mas de 9 millones de aplicaciones móviles y todo esto unido a un avance frenético de la tecnología que envuelve este mercado hace necesario buscar una via que procure facilitar el camino a los desarrolladores. Debemos tener en cuenta que la parición de nuevos modelos de dispositivos normalmente va unido a cambios en los sistemas operativos que los acompañan y la desactualización inminente del mismo. Ahora bien, ¿Cómo simplificar esto para la industria sin que el usuario se vea afectado?
Finalmente, esto implica que aquellos que se dedican a desarrollar aplicaciones móviles deben estar en constante actualización y formación para adaptarse a la transformación que sufre este mercado y no quedarse descolgado, porque esto significaría perder el tren de las ventas que tanto imponen iOS y Android con la aparición de nuevas versiones de dispositivos. Esa actualización de versión de dispositivo debemos entender que no solo conlleva una actualización de sistema operativo, sino que, además, pese a que el usuario no se percate, por detrás en muchas ocasiones “impone” un nuevo lenguaje de desarrollo, alguna herramienta que se utilizaba hasta el momento desaparece, o simplemente, modifican cómo se accede o utiliza algún recurso.
Por esta razón comienza cada vez mas a ser popular la idea de hacer aplicaciones móviles hibridas con único desarrollo para que luego cada framework trabaje con ella sus particularidades dependiendo del sistema operativo, en lugar de tener que desarrollar para cada uno una aplicación diferente que de igual modo tendrá que ser actualizada en un periodo de tiempo muy breve.
Esta nueva forma de desarrollar aplicaciones hibridas conlleva cuestiones positivas y negativas que hacen que no sea tan sencillo tomar la decisión de desarrollar las aplicaciones hibridas o nativas.
Para ello arrojamos un poco de luz profundizando un poco en cada tipo de desarrollo y lo que implica tanto para la empresa como para el usuario.
Nativo
Lo más lógico hace pensar que las aplicaciones nativas son las ganadoras, aquellas que ofrecen directamente Google y Apple y sin embargo estas han sufrido una importante evolución a lo largo del tiempo.
Por una parte, Apple utilizaba como lenguaje de programación en la salida de iOS, Objetive-C, que con el tiempo fue sustituido por Swift, el cual recibe una actualización cada vez que sale una nueva versión del sistema operativo. Pese a lo que pueda parecer, Objetive-C no ha caído del todo en el olvido. Pese a que lo recomendable es realizar los desarrollos de una nueva aplicación en la última versión de Swift, en el caso del desarrollo de librerías la opción más habitual es optar por un desarrollo en Objetive-C
Por otro lado, Android inició su andadura desarrollando las aplicaciones en Java, pero en los últimos años ha decido comenzar a usar el lenguaje Kotlin. La posibilidad que ofrece Google a la hora de incluir Kotlin en un desarrollo es la capacidad de integrarse en un desarrollo en Java, no haciendo necesaria una migración completa de las aplicaciones de un lenguaje al otro, es decir, que es posible que una aplicación desarrollada en Java incluya funcionalidades desarrolladas en Kotlin. Esto da mucha más libertad a los desarrolladores, y permite una migración hacia Kotlin mucho menos agresiva.
Pese a la problemática que plantea el tema del lenguaje a la hora de desarrollar y principalmente de actualizar cada vez que se actualizan terminales y sistemas operativos que les dan soporte, hay un factor importante y es el rendimiento de los dispositivos que es mucho menor cuando hablamos de aplicaciones nativas. Cuando una aplicación usa los recursos propios e integrados del dispositivo utiliza mucha menos batería de la que utilizan las aplicaciones hibridas. Eso en cuanto a experiencia de usuario siempre satisface más. Por otro lado, la empresa que desarrolla necesita un equipo por cada lenguaje lo que consume más recursos económicos. En lo que a costes se refiere, va en detrimento de la empresa y a favor del consumidor.
Híbrido
Las aplicaciones hibridas móviles implican un único desarrollo en un lenguaje de programación común. Son una combinación de tecnologías web como HTML, CSS y JavaScript. Consisten en un WebView ejecutado dentro de un contenedor nativo teniendo acceso a las API’s nativas del dispositivo.
En cuanto a estas soluciones, por un lado, tenemos los desarrollos basados en SDKs, que terminan generando una aplicación nativa.
Los frameworks, como Ionic o React Native beben de un único lenguaje de desarrollo, que puede ser Javascript en el caso de React Native y Nativescript, o .Net en el caso de Xamarin, y durante el proceso de construcción de la aplicación, convierten ese código en una fuente nativa, de tal forma que la experiencia de usuario sea muy semejante a una aplicación nativa.
El problema aparece cuando se quieren hacer desarrollos que tengan la misma apariencia y experiencia de usuario en ambos sistemas operativos. Eso obliga a que, pese a tener un mismo origen en código de desarrollo, mayor divergencia tiene al aterrizarlo en diferentes plataformas, obligando a realizar desarrollos en la capa nativa de las aplicaciones para que se asemejen al máximo en el producto final y puedan obtener mismo nivel de experiencia de usuario.
Otro tipo de desarrollos híbridos son por ejemplo aquellos basados en Cordova, con Ionic como framework de desarrollo. Las aplicaciones de Ionic se crean y desarrollan principalmente a través de la utilidad de línea de comandos de Ionic (la «CLI»), y usan Cordova para construir / implementar como una aplicación nativa. Esto significa que necesitamos instalar algunas utilidades para comenzar a desarrollar.
Al ejecutarse en un pseudo-navegador, el desarrollo se hace sobre tecnologías web, pero para obtener el mejor resultado en cuanto a la apariencia de la aplicación y la experiencia de usuario la arquitectura tiene que estar orientada a un desarrollo móvil. Es decir, que pese a utilizar tecnología web, todo el paradigma y arquitectura de desarrollo debe ser móvil. En este tipo de desarrollo el problema es que, al no tener acceso de la misma manera a los recursos nativos del dispositivo, los recursos que tiene que utilizar son mucho mayores y por esto repercute en la experiencia de usuario porque es más lento y consumen más batería, por ejemplo. anteriores. Esto se agrava si el desarrollo se ha llevado a cabo más orientado a web que a móvil, algo que suele ocurrir de forma habitual.
WebApps
Finalmente encontramos las basadas en HTML, JavaScript o CSS. en este caso no estamos hablando de un desarrollo orientado a los dispositivos móviles. Esto quiere decir que estamos hablando de webs que se ejecutan en el navegador del dispositivo móvil. Puesto que se carga en el servidor web y se ejecuta en el navegador, no requiere ninguna instalación. Además, también se puede crear un acceso directo para ella en el escritorio del ordenador o en la pantalla de inicio de los terminales móviles mediante un marcador.
El espectro de aplicaciones web es muy amplio, yendo desde pequeñas herramientas hasta software de gráficos o juegos de navegador, pasando por las adaptaciones de conocidos programas, como servicios de mensajería instantánea o paquetes de Office. Muchos programas y servicios se presentan en dos modalidades: en forma de web app o de native app.
En este marco aparecen también Progressive Web Apps (PWAs), estas «aplicaciones» son una web que Chrome encapsula y convierte en una pseudo-aplicación móvil. Tiene un desarrollo basado en web, pero al usuario le da impresión de ser una aplicación, puesto que la ve como un icono más. Las PWA no requieren ser instaladas desde las plataformas de distribución, sino que se instalan directamente desde la web, y amplían la funcionalidad de esta, permitiendo la recepción de notificaciones push o tener cache offline. El problema con este tipo de aplicaciones es que las compañías que dan sorporte a los principales sistemas operativos no lo hacen con este tipo de desarrollo.
Entonces…
¿Qué opción es mejor?
Si hubiera una respuesta fácil a la pregunta de qué opción es mejor, esta se habría impuesto a todas las demás. Por tanto, no hay una receta, incluso puede que haya dos buenas soluciones para una misma aplicación, por lo que hay que estudiar cada caso por separado, y revisar qué se adapta más a lo que se busca en la aplicación.
0 comentarios