Aplicaciones móviles nativas VS aplicaciones web?

Qué debo hacer?

Una despampanante aplicación nativa para cada sistema operativo (Android, iOS, Windows Phone, BlackBerry, etc..) o un app que corre desde internet y se ajusta a los 4 tamaños de pantalla más frecuentes de los dispositivos móviles? Las anteriores suele ser las preguntas “más de moda” en estos tiempos. En general, el cliente promedio quiere que la visualización de los contenidos y la usabilidad sean agradables para el usuario final. Pero si esto suena tan simple, cuál es la razón para que existan tantas dudas al respecto?

Para dilucidar lo anterior, se debe empezar por donde recomiendan los expertos, o sea, por el principio, ya que los desarrollos no son como dicen por ahí, una cuestión de: “soplar y hacer botellas”. Hacer una aplicación móvil nativa o web, cualquiera que sea el caso, requiere una completa planeación unificada de procesos para lograr un todo, que no sólo alcance el resultado esperado, sino que, además, su funcionamiento sea fluido y fácil de entender y que tenga una apariencia llamativa.

Así que lo primero que se debe saber es:

Qué va a hacer o cuál es la razón de ser de la aplicación?

Cómo se va a usar (servicios que va a prestar)?

Cuándo se va a usar?

Dónde se va a usar la aplicación?

Debe servir sin conexión a internet?

Una vez se tengan las respuestas a las anteriores preguntas, seguramente los casos, condiciones, restricciones y modelos de uso de la aplicación serán más claros y concisos. El siguiente paso es usar dicha información para determinar los pros y contras del modelo nativo para casa sistema operativo vs el desarrollo de aplicaciones web.

Modelo de instalación

La mayoría de los ecosistemas de aplicaciones nativas, por seguridad, se instalan desde la tienda del fabricante del sistema operativo o desde tiendas de aplicaciones autorizadas por el mismo. Para subir las aplicaciones allí, generalmente, se necesita una suscripción al programa de desarrollo y contar con el tiempo necesario para validar que la aplicación funcione, medianamente bien, y no tenga códigos maliciosos que pueda afectar a todo el que descargue la aplicación.

En contraposición, se encuentran las aplicaciones Web que corren desde un servidor y no necesitan ser instaladas sino solamente ser consultadas desde cierta dirección en internet o desde un WebView, que encapsula el navegador en un acceso directo.

Interfaz de usuario

Generalmente las aplicaciones nativas suelen tener una interface que se ajusta mejor a las dimensiones y características del dispositivo, razón por la cual la interacción suele ser más fluida y dinámica. Pero programar este tipo de aplicaciones implica tener personal con conocimientos avanzados en diversos lenguajes como Swift (antiguamente Objective C), Java, Windows Mobile C y otros, lo cual suele incrementar los tiempos y costos de desarrollo.

Las aplicaciones web por lo general cuentan con un alcance multiplataforma, gracias a las configuraciones que ajustan o re-organizan los elementos para las cuatro resoluciones más frecuentes que se encuentran en los diferentes tipos de dispositivos del mercado: <768, ≥768, ≥992 y ≥1200 pixeles. La interface en este tipo de aplicaciones a veces presenta algunos retos para el usuario, dado que no siempre se ajusta de maravilla a todos los navegadores móviles (como sucede en algunas versiones de navegadores antiguos que no son capaces de renderizar html full) creando barras de desplazamiento y/o espacios que son inexplorables para el navegante. En cuanto a programación se refiere de estas interfaces, casi siempre es más simple, ya que se usan lenguajes como JavaScript, HTML5, CSS y otros.

El desempeño

Es casi una constante que las aplicaciones nativas están hechas para sacar el mayor provecho de los recursos del sistema (como la cámara, el GPS, la capa de notificaciones, el acelerómetro, etc..) y, por lo mismo, los tiempos de respuesta suelen ser más cortos corriendo varios procesos en paralelo. En cambio, las aplicaciones web sólo pueden acceder a una cantidad limitada de características nativas de un dispositivo y, generalmente, están condicionadas a cargar todo a través de un navegador, lo cual hace que se tenga todo un hilo de procesos secuenciales dentro de un único canal.

Otro aspecto que suele ser determinante es la capacidad de funcionamiento de la aplicación sin conexión a internet. En este punto es donde las aplicaciones web como dicen por ahí “suelen perder el año”!

La actualización

Las aplicaciones nativas regularmente presentan notificaciones para que el usuario proceda a descargar las actualizaciones. Por otro lado, las aplicaciones web no requieren actualizaciones como tales desde el dispositivo móvil, sino que el desarrollador procede a hacer las actualizaciones desde el servidor.

Ahora bien las aplicaciones nativas más avanzadas generalmente trabajan con un API, en donde ciertas actualizaciones se hacen desde el servidor y otras requieren una sincronización local de elementos que llegan por medio de la capa nativa de notificaciones, para que el usuario proceda a ejecutarlas.

Mantenimiento y actualización

Este suele ser “el talón de Aquiles de las aplicaciones nativas” ya que, por regla general, suele ser más costoso y dispendioso actualizar y/o hacerle mantenimiento a los códigos para cada sistema operativo, que proceder a realizar las actualizaciones al servidor que aloja las aplicaciones web.

Cuál es mejor?

Esa respuesta depende del caso de uso, los requerimientos, el alcance y, en muchos casos (sobre todo en Latinoamérica), dicha respuesta estará estrechamente ligada al presupuesto y tiempo de desarrollo de que se disponga, pues, usualmente todo jefe y sus similares mandan mucho y quieren que este tipo de proyectos “esté listo para el día de ayer”.

Ahora bien, existen aplicaciones que se desarrollan en ciertos FrameWorks y entornos (como PhoneGap, Adobe Air, Adobe DPS y otros) con la capacidad de compilar el código de manera que pueda actuar nativamente en los principales sistemas operativos móviles. Dicha opción es muy valida, aunque tiene ciertas limitaciones las cuales serán tema de la siguiente versión de este artículo.