iStock-619371202.jpg
Ciencia y Tecnología

Desarrollo de aplicaciones multiplataforma: web-apps vs. nativas

Equipo de Expertos en Ciencia y Tecnología

En pleno siglo XXI vivimos rodeados de dispositivos, y éstos viven de las aplicaciones de las que disponga su sistema operativo. Si hace unas décadas se solía decir “no existes hasta que sales por la tele”, hoy en día esa presencia obligada se refiere a los dispositivos móviles. Cualquier organización que se precie debe tener su aplicación dedicada. Pese a que la miríada de dispositivos se ha reducido en los últimos tiempos (tras la caída de Symbian, Windows Phone, BlackBerry, Firefox OS, Tizen...), la necesidad de estar presente en los que siguen vigentes es más acuciante que nunca. Android, Kindle Fire, iOS, Xbox, Nintendo Switch, PlayStation, tablets... Cada plataforma es un mundo y los rápidamente cambiantes sistemas operativos conforman un ecosistema digital de lo más enrevesado. De ahí surge como requisito el desarrollo de aplicaciones multiplataforma. Como desarrolladores, ¿qué opciones tenemos?  

Aplicación nativa

Aplicaciones nativas son aquellas creadas a partir del SDK que cada plataforma pone a disposición de la comunidad. Desarrollar una aplicación dedicada para cada plataforma que queramos atacar siempre será la opción que mejores resultados dará en términos de optimización y resultado final, pero ello supone multiplicar la carga de trabajo por cada nuevo dispositivo para el que se quiera adaptar.

Descarga nuestra guía gratuita: Videojuegos. Las 5 tecnologías vencedoras y las 5 olvidadadas en la pugna tecnológica

Sin embargo, existe una forma de no subyugarse al kit de desarrollo y su lenguaje de programación preferido que abre la veda al desarrollo de aplicaciones multiplataforma. Algunos SDKs ofrecen APIs compatibles con otros lenguajes, de forma que se puede crear una aplicación en un entorno de desarrollo que use esas APIs y cree versiones distintas a partir de un mismo código base. Como todo parte de APIs proporcionadas por el distribuidor del sistema operativo, los resultados obtenidos con este método son casi tan óptimos como los que se obtendrían programando específicamente para cada dispositivo.  

Aplicaciones web

En el otro extremo se hallan las comúnmente conocidas como web-apps. Como no son más que una web ejecutada en navegador, es la solución más multiplataforma que hay, no requiriendo esfuerzo alguno de adaptación. Por desgracia, la no adecuación a los dispositivos genera un lag en la interfaz claramente perceptible para el usuario. Estos defectos son más apreciables en terminales de gama baja, cuyo menor músculo gráfico precisa de mayor optimización en la parte software. Una mala práctica que muchas empresas con pocos recursos utilizan es disfrazar web-apps de aplicaciones completas, combinando las desventajas de ambas (menor rendimiento y requisito de ser instalada por el usuario).  

Curso gratuito de React

Aplicaciones híbridas

Una solución intermedia pasa por utilizar WebView,componentes de navegador que los SDKs nativos ponen a nuestra disposición. Estas herramientas hacen las veces de visor web y permiten programar casi la totalidad de una aplicación en HTML5, CSS y JavaScript estándares. Programas como Cordova o PhoneGap hacen de puente entre la interfaz de desarrollo y el SDK del fabricante, traduciéndolo todo a lenguaje interno y consiguiendo un rendimiento cercano al nativo. Pero no es oro todo lo que reluce. El desarrollo de aplicaciones multiplataforma nunca termina debido a la constante marea de nuevos dispositivos y versiones de SO. Una nueva API, resolución o cualquier cambio obligan a estar periódicamente pendientes del estado actual del software. Resolver bugs puede ser más lento con aplicaciones híbridas debido a que, antes de poder abordarlos, los creadores de Cordova o PhoneGap tienen que haber actualizado su framework para tales novedades.   ¿Quieres adentrarte en el desarrollo de juegos y aplicaciones? La mención en programación de nuestro Máster en desarrollo de videojuegos puede ser tu trampolín hacia tu oficio como desarrollador de juegos o aplicaciones móviles.