¿Qué camino tomar para el desarrollo de una aplicación móvil?

Artículo

Written by:

Views: 376

Si estás involucrado en un proyecto donde el objetivo es desarrollar un aplicativo, es muy probable que hayas escuchado términos como aplicaciones nativas, aplicaciones híbridas, web apps, aplicaciones responsive y quizá hasta Progressive Web Apps. A continuación, te contaremos qué significan estos términos y cómo definir cuál es el que más te conviene y por qué.

Para empezar

Al inicio, usábamos las computadoras para instalar programas que nos permitan trabajar, crear y compartir información, editar videos, manejar documentos y muchas otras actividades que todos ya conocemos. Eventualmente, la tecnología evolucionó a tal punto que el poder de las computadoras se pudo trasladar a nuestros celulares.

Cuando hablamos de aplicaciones móviles, nos referimos a programas —más conocidos como aplicaciones o aplicativos— instalados en los celulares inteligentes o smartphones. Podríamos separarlos en dos grandes grupos a partir del sistema operativo que utilizan: pueden ser Android o iOS. Existen otros, pero su presencia global es mucho menor y en esta ocasión serán obviados.

¿Qué es un sistema operativo?

En pocas palabras, es el programa que permite que tus aplicaciones funcionen. Se encarga de relacionar la aplicación con los elementos físicos del dispositivo, como el teclado o la cámara. Los sistemas operativos de las computadoras suelen ser Windows de Microsoft o Mac OS de Apple. En los celulares, los sistemas operativos más conocidos son Android y iOS.

 iOS es el Sistema Operativo de los iPhone y solo funciona con dispositivos de la marca Apple. Por otro lado, tenemos a Android, sistema operativo desarrollado por Google y es de código abierto, permitiendo que diversos fabricantes de celulares puedan usar —e incluso adaptar— Android en sus dispositivos. Google también fabrica celulares propios, pero muchos usuarios utilizan equipos de otras empresas como Samsung, Huawei, LG, etc.

¿Qué significa aplicación nativa?

Tanto Apple como Google, ofrecen herramientas y lenguajes —desarrollados también por ellos— para que otras personas puedan desarrollar aplicaciones e interactuar con el sistema operativo. Estas herramientas son conocidas como Software Development Kit (SDK) y los desarrolladores interactúan con ellas a través de diversos lenguajes de programación. En el caso de Apple tenemos Objective-C y Swift, mientras que Google nos ofrece Java y Kotlin.

Las aplicaciones que son construidas usando las herramientas recomendadas y creadas por la misma plataforma son conocidas como aplicaciones nativas.

Estas aplicaciones, al ser construidas con herramientas creadas específicamente para ese propósito, suelen tener un buen rendimiento y cumplir con todos los lineamientos y estándares que espera un usuario en esa plataforma.

El mundo de lo nativo

Ya hemos visto que las aplicaciones desarrolladas con las herramientas recomendadas suelen alcanzar altos niveles de calidad. Sin embargo, hay que recordar que nos encontramos en un ecosistema cambiante. Cada año surgen nuevos modelos de celulares, con nuevas funcionalidades y capacidades. Los sistemas operativos cambian para adaptarse a los nuevos celulares, para ofrecer un mejor servicio a los usuarios y mantenerse competitivos en el mercado global. Por esta razón, las herramientas de desarrollo también se actualizan constantemente.

Si bien ambos sistemas operativos permiten desarrollar aplicativos móviles, cada uno lo hace a su manera. Esto quiere decir que cuando ves que una aplicación está disponible, tanto en el App Store de iOS como en el Play Store de Android, existe una aplicación distinta para cada plataforma. Aún cuando aparentemente tengan las mismas funcionalidades y apariencia visual, internamente funcionan de manera muy diferente.

Esto genera un desafío para las empresas y organizaciones que buscan tener presencia en el ecosistema móvil. Debido a ser un entorno vivo y dinámico, se necesita un equipo de profesionales especializados en cada plataforma. Esto usualmente significa el doble de recursos, tanto de tiempo como de dinero. Si uno quiere tener presencia en la totalidad del mercado móvil requiere posiblemente de un desarrollo paralelo de proyectos independientes específicos a cada sistema operativo.

Las primeras alternativas

Estos problemas los vivieron muchísimas empresas, muchas de las cuales ya tenían páginas web —la cual ya había requerido una considerable inversión de recursos— y tener que invertir una vez más, no era viable para todas las organizaciones. Adicionalmente, el tiempo es un factor sumamente importante a la hora de competir en los mercados. Alternativas rápidas y de bajo costo para una presencia móvil eran necesarias.

El desarrollo de las tecnologías web

Con el paso del tiempo, las tecnologías de desarrollo web fueron mejorando. Comenzaron a salir las páginas web responsive que pueden adaptar la presentación de su contenido en función del tamaño de la pantalla del usuario, lo que permitió que fueran visualizadas en los celulares.

Por otro lado, los avances en Javascript, el lenguaje que permite agregarle lógica a una página web, permitieron el desarrollo de lo que se conoce como web apps y Single Page Applications (SPA).

Podríamos decir que un sitio web normal presenta información, como Wikipedia. Pero una web app es una página web con mucha más interacción, por ejemplo Facebook. Que tenga app en el nombre no quiere decir que se instale, sigue siendo una página web.Un problema de las páginas web era que al hacer click en enlaces y navegar a otra página, tenía que cargar todo nuevamente, proceso lento que perjudicaba la experiencia de los usuarios. En las SPA, solo cargan la primera vez y posteriormente, gracias a Javascript, se va actualizando solo lo necesario, mejorando considerablemente la experiencia del usuario.

La web en tu celular

Gracias a estos avances, una organización podía tener presencia en los dispositivos móviles de sus usuarios, ofreciendo una página web que se adapte a la pantalla y tenga un rendimiento aceptable. Incluso tenía como ventaja adicional el no tener que pasar por los controles de las tiendas de aplicaciones.

Antes mencionamos que las aplicaciones nativas suelen tener un buen rendimiento y cumplir con todos los lineamientos y estándares de las plataformas, esto se debe también a que Apple y Google revisan previamente las aplicaciones que ingresan a sus tiendas. Un proceso beneficioso para los usuarios por la verificación de la seguridad y calidad, aunque puede verse reflejado en tiempos adicionales, solicitudes de cambio e incluso rechazos. Tener una web app permitía iterar rápidamente sin pasar por los engorrosos procesos de las tiendas y reutilizar el trabajo ya realizado en el desarrollo de una página web. Permitiendo optimizar el tiempo, esfuerzo y ahorrar dinero.

No obstante, una web app no soluciona todos los problemas. Los avances en los aplicativos móviles ofrecían muchas ventajas en cuanto a la experiencia de usuario y el uso de los elementos del celular como cámara, micrófono, archivos, geolocalización, manejo de permisos, interacción con otras aplicaciones, notificaciones, entre otros. Funcionalidades que si bien algunas podían ser replicadas en entornos web, no eran cómodas para el usuario y no evolucionaron a la velocidad en la que lo hacían las tecnologías móviles.

Una nueva tendencia: aplicaciones híbridas

Cómo ya hemos visto, la tecnología no se detiene. Día a día se encuentran nuevas soluciones, sobre todo a aquellos problemas que aquejan a más personas. Hasta este momento teníamos este problema: ¿Cómo puedo aprovechar las ventajas funcionales y prácticas de las aplicaciones nativas, sin incurrir en sus elevados costos? Las web apps, aún cuando el nombre decía app, seguían siendo al fin y al cabo páginas web. No aparecían en las populares tiendas de aplicaciones, no podían hacer uso de todos los recursos del celular. ¿Cómo podemos llevarlas al siguiente nivel?

Es aquí cuando nacen las aplicaciones híbridas, que ofrecen un intermedio entre las tecnologías web y móviles.

Las aplicaciones híbridas son aquellas basadas en tecnologías web, pero que sí pueden ser ofrecidas en los canales de distribución de apps móviles y que sí pueden interactuar con los elementos del sistema operativo.

Ofrecían los costos reducidos de las web apps con las capacidades verdaderas de una aplicación móvil. Como ejemplos de herramientas para construir aplicaciones híbridas tenemos a Córdova, PhoneGap y Ionic.

¿Cómo funciona una aplicación híbrida?

Sabemos que las aplicaciones híbridas ofrecen lo mejor de dos mundos. ¿Cómo lograron combinarlos? Las herramientas nativas ofrecen elementos con los que construyes tus apps: botones, barras de navegación, etc. Si quieres poner un mapa, utilizas una MapView, o una vista de mapa. De la misma manera, existía un elemento WebView o vista web. Permitiendo a los usuarios darle click a un enlace y ver la página web sin salir de la aplicación, por eso existen las WebView: permiten poner un navegador de internet dentro de tu propia aplicación. 

Usando este elemento nativo llamado WebView surgieron las aplicaciones híbridas. Básicamente, tienen un empaque exterior nativo con un interior web. Con estas herramientas podías hacer funcionar una aplicación tanto en iOS como Android con un código web a través de un programa que se encarga de empaquetarlo en una aplicación genérica para los dos sistemas operativos. No hay necesidad de duplicar tu equipo de desarrollo ni tu código fuente. ¿Quieres que tu aplicación híbrida realice funcionalidades nativas? Estos programas te permiten agregar plugins para sumar aquella funcionalidad desarrollada en una capa nativa. Si ya tienes un equipo de desarrollo o un proyecto web, convertirlo a móvil no será complicado.

Sin embargo, las aplicaciones híbridas no son una solución ideal. Si bien pueden ser distribuidas en las tiendas de apps, desarrolladas con conocimiento web y no requieren especialistas por cada plataforma, estas ventajas vienen con un nuevo costo el cual se tangibiliza en el rendimiento. La interacción de tu aplicación híbrida con los elementos nativos dependían enteramente de la capa nativa, en manos de la herramienta de tu elección. Si Android o iOS se actualizaban, tenías que esperar que esa capa se actualice o simplemente no usar esa funcionalidad. Tu aplicación dependía ahora de la herramienta híbrida. El costo que quizá ahorrabas en tiempo y equipo de desarrollo, lo tendrías en resolución de problemas y quizá en pagar servicios premium de soporte a la herramienta híbrida.

Lo híbrido mejora: aplicaciones multiplataforma

En los últimos años surgió una nueva ola de herramientas híbridas, aunque el término correcto, para no confundir con el anterior grupo, sería multiplataforma. Estamos hablando por ejemplo de React Native, que aprovecha la moderna herramienta de construcción de interfaces web React y que cuenta con el respaldo del gigante Facebook, y de Flutter, que promete un rendimiento aún mayor gracias a un propio motor gráfico y que es respaldado por el mismísimo Google.

Las aplicaciones multiplataforma se caracterizan por delegar las tareas gráficas la una capa nativa, en vez de utilizar un WebView.

Esta característica mejora el rendimiento considerablemente en comparación con las aplicaciones híbridas, permite que en general tenga un rendimiento y look-and-feel de una aplicación nativa. Además, ofrecen en general una experiencia de desarrollo más sencilla y agradable para el desarrollador, lo que permite entregas más rápidas. Al igual que las aplicaciones híbridas ofrecen la capacidad de agregar elementos nativos, la diferencia es que tienes mucho más control sobre estos y dejas de depender del todo de la herramienta. 

Esta opción también tiene sus peculiaridades, si la comparamos con las híbridas, suele tener un mejor rendimiento y mantenibilidad, pero incrementa el costo y el tiempo de desarrollo. Por otro lado, sigue siendo más rápido y barato que la alternativa nativa en general. Si tu aplicación tiene mucha dependencia de elementos nativos, luego te encontrarás que en vez de tener un único código para ambas plataformas, tienes 3: uno android, uno ios y uno intermedio. Quizá proyectos más pequeños en las capas nativas pero aumenta la complejidad. Además, estas nuevas herramientas multiplataformas no alcanzan aún la madurez que tienen las herramientas nativas, las cuales tienen más de 10 años y han sido extensamente probadas.

El retorno de la web: PWAs

Y por si el panorama ya no estuviera lo suficientemente enredado, nuevos adelantos en la web impulsados por varias empresas —entre ellas Google— ofrecen llevar aún más capacidades a las páginas web, conocidas bajo el nombre de Progressive Web Applications, PWA para abreviar. Ofrecen utilizar nuevamente las tecnologías web ampliamente conocidas, pero ampliar sus capacidades para poder trabajar sin conexión a internet, recibir notificaciones, interactuar con el sistema operativo y elementos del dispositivo, reduciendo mucho más la brecha en la experiencia entre web y nativo. Incluso permiten ser instaladas pero no a través de las tiendas de apps.

Sin embargo, aún cuando las PWA tienen su tiempo y vienen a ser la evolución necesaria de las web apps, no cuentan con el total soporte y apoyo de parte de Apple. Aún siguen siendo una buena opción, la cual tiene más complicaciones del lado iOS que Android, pero que se espera mejore con el tiempo.

Conclusiones

Si has llegado hasta aquí, te habrás dado cuenta que no existe camino perfecto, todos tienen ventajas y desventajas relativas a tus necesidades específicas, las cuales deben ser consideradas previamente antes de tomar una decisión.

Existe todo un debate entre si verdaderamente vale la pena el esfuerzo de realizar una aplicación ante las crecientes capacidades, flexibilidad y practicidad de una web. Lo que sí es cierto es que son cosas distintas, aún cuando tengan funcionalidades en común, y esa diferencia debe ser clara para todos.

Es complicado tener claras cuáles son las funcionalidades que el dispositivo puede o no hacer en una web,  la tecnología avanza cada día y varía según el dispositivo que analicemos. Sin embargo, en líneas generales las aplicaciones pueden hacer más cosas con los elementos del celular que en una página web.

Si nos centramos en evaluar las opciones netamente móviles, existen diversos factores a considerar, los cuales presentan a las herramientas nativas como aquellas de mayor complejidad y necesidad de especialización, pero se compensa con el potencial para aprovechar al máximo los recursos del celular, lo cual brinda un mejor rendimiento y experiencia. Asimismo, las herramientas nativas son las que tienen más tiempo en el mercado, más desarrolladores que las utilizan y podemos decir que seguirán en el panorama, puesto que tienen el respaldo de los propios creadores de celulares y sus respectivos sistemas operativos.

Quizá para muchos, el factor más importante a considerar son los costos. El motivo por el cual nacieron tantas alternativas al desarrollo nativo es el gran costo que suponen para una organización, reflejado principalmente en dinero, tiempo y esfuerzo, debido a la mayor complejidad tecnológica y la necesidad de un equipo especializado para cada plataforma. Y en principio, las alternativas híbridas y/o multiplataforma buscan disminuir costos, utilizando tecnologías más populares basadas en la web y reduciendo los equipos de desarrollo.

No obstante, algo que no muchos se ponen a considerar es que estos factores dependen de la complejidad de la aplicación. Una aplicación híbrida es la alternativa más barata, sin embargo, encuentra mayores dificultades al incrementar los requerimientos del negocio. Dificultades basadas en la necesidad de interactuar con elementos nativos del sistema operativo. Como vemos en el siguiente gráfico, las tecnologías híbridas son las más accesibles al principio, para proyectos sencillos, pero encuentran pronto el nivel de complejidad cuando se dificulta la tarea. Las tecnologías multiplataforma, al aprovechar mucho más el potencial nativo, permiten llegar a niveles mayores de complejidad pero sigue siendo recomendable utilizar nativo en aplicaciones avanzadas.

La buena noticia es que la mayoría de aplicaciones que necesita una organización suelen ser informativas y podrían definirse como simples. En estos casos la opción nativa es recomendable. Se puede tener una aplicación lista a un bajo costo y en tiempo récord. Cuando tenemos una aplicación que requiere muchas más interacciones, quizá incluso animaciones y alguna funcionalidad nativa, una multiplataforma puede ser la mejor opción. Solo en caso de casos de uso avanzados y requerimientos muy exigentes es cuando la única alternativa viable sería la vía netamente nativa.

(Visited 95 times, 1 visits today)

Leave a Reply

Your email address will not be published. Required fields are marked *