Alternativas en la programación para dispositivos móviles

Uno de los ámbitos multimedia con más crecimiento en los últimos años ha sido el de los dispositivos móviles. La llegada de los smartphones disparó en su momento la creación de aplicaciones móviles que aprovechan la capacidad multimedia de estos dispositivos. La aparición y el despegue poco después de las tabletas ha convertido el desarrollo de aplicaciones para dispositivos móviles en un pilar de la industria multimedia.

El multimedia siempre ha sido un entorno con mucha relación con la programación. Cuando un elemento se mueve en nuestras pantallas, cuando se interacciona con el usuario, cuando se reproduce un sonido tras un determinado evento, unas cuantas líneas de código se están ejecutando para generar esa situación. Si bien con Flash se pueden simular algunos movimientos y algunas interacciones sin programación, en los dispositivos móviles es difícil imaginarse una aplicación multimedia que no tenga un importante componente de programación detrás.

Pero la programación en cada sistema operativo es un pequeño mundo. Existen lenguajes o frameworks que nos permiten la creación de programas multidispositivo (se programa una vez y se ejecuta en cualquier dispositivo), pero para aplicaciones complejas que requieren un gran rendimiento, la programación suele hacerse en los lenguajes nativos de cada sistema operativo, con lo que debe reescribirse la aplicación para cada sistema operativo.

Hoy en día, podemos encontrar dispositivos móviles con, principalmente, los siguientes sistemas operativos. Entre paréntesis incluimos los porcentajes sobre el total de unidades vendidas en el tercer trimestre del 2012 (solo incluye teléfonos, no incluye tabletas):

Evolución en las ventas de dispositivos móviles, según los sistemas operativos. http://en.wikipedia.org/wiki/Mobile_operating_system

Para cada uno de esos sistemas operativos hay uno o varios SDK (kit de desarrollo de software) con soporte para uno o más lenguajes de programación. Así, Android tiene un SDK para Java, iOS uno para Objective-C, Bada uno para C++, Symbian tiene SDK para dos lenguajes diferentes (C++ y Java) y BlackBerry ofrece SDK para C++ (aunque da soporte a múltiples lenguajes y plataformas).

Para una persona o empresa pequeña que quiera programar una aplicación para la mayoría de dispositivos que hay en el mercado, esta disparidad de lenguajes y kits de desarrollo complica considerablemente la creación multidispositivo. La solución pasa a veces por centrarse en un solo sistema operativo (en especial en el caso de los desarrolladores que trabajan por su cuenta) o bien usar alguna de las alternativas que ofrecen la posibilidad de crear aplicaciones multidispositivo como, por ejemplo, Phonegap, Appcelerator, Corona SDK y Adobe AIR.

Phonegap

Phonegap es posiblemente la alternativa más conocida, es de código libre (licencia Apache 2.0) y permite crear aplicaciones para Android, iOS, RIM, Bada, Windows Phone, Symbian y otros. Usa HTML5 + CSS + JavaScript para el desarrollo, con lo cual el resultado es como un conjunto de páginas web empaquetadas que funcionan sobre un navegador. Es una buena opción para desarrolladores con una buena base de JavaScript, aunque, para conseguir que el aspecto sea el de una aplicación móvil (en vez del de una página web), será conveniente usar frameworks como jQuery mobile o jQTouch (plugin para jQuery) que facilitan hacer que aplicaciones web tengan aspecto de aplicaciones móviles.

Las aplicaciones creadas con Phonegap se ejecutan sobre el motor del navegador de los dispositivos móviles. Dependiendo del sistema operativo tienen acceso a todas o a casi todas las funciones del dispositivo (cámara, GPS, acelerómetro, por ejemplo) y también al DOM, con lo que permiten el uso de frameworks como jQuery que faciliten la programación.

Phonegap permite la creación de aplicaciones multidispositivo sin necesidad de grandes conocimientos de los diferentes sistemas operativos. El desarrollo es sencillo para personas con conocimientos de HTML y JavaScript y además tiene una buena documentación y muchos ejemplos. Sin embargo, las aplicaciones no tendrán un gran rendimiento y, si no se cuida el aspecto, parecerán páginas web más que aplicaciones.

Phonegap es gratuito (aunque pertenece a Adobe), aunque el soporte es de pago. Añadir que Adobe cedió el código fuente de Phonegap a la fundación Apache que continua su desarrollo bajo el proyecto Cordova.

Appcelerator

Appcelerator permite crear aplicaciones para iOS y Android usando JavaScript como lenguaje de programación. A diferencia de Phonegap, Appcelerator compila el JavaScript y genera un código que se ejecuta directamente en el dispositivo. Como no se ejecuta sobre el navegador, no tiene el DOM disponible y los controles son los del dispositivo. Esto hace que la aplicación tenga una apariencia más acorde con el dispositivo a la vez que gana algo de rendimiento. A cambio, las aplicaciones dependen del sistema operativo sobre el que van a correr, así que, si se quiere hacer una aplicación que funcione en los dos sistemas, será necesario adaptarla.

Las aplicaciones creadas con Appcelerator se ejecutan sobre un entorno de ejecución de JavaScript (V8, por defecto, o Rhino para Android y JavaScriptCore para iOS) que está escrito en código nativo y donde el código de la aplicación se interpreta.

Appcelerator es gratuito, aunque el soporte es de pago.

Adobe Air para dispositivos móviles

Adobe Air para dispositivos móviles es la propuesta de Adobe para la creación de aplicaciones para dispositivos móviles usando ActionScript. El entorno de desarrollo puede ser tanto Flash Builder como el propio Flash o el Flex SDK, open source y gratuito, que facilita la creación de aplicaciones. La principal ventaja de Air es el lenguaje de programación, mucho más potente que JavaScript.

La ejecución de las aplicaciones Air se hace en un entorno propio, que es el que hace de intermediario entre la aplicación y el dispositivo. Esto permite que las aplicaciones se puedan ejecutar prácticamente sin cambios en distintos dispositivos (Android, iOS y BlackBerry) aunque, a cambio, no usa controles nativos y el rendimiento es algo más reducido que en una aplicación nativa.

Pero quizás la gran ventaja de Flex/Air con respecto a Phonegap o Appcelerator sea el entorno de programación, mucho más completo e intuitivo. A cambio, el precio, 250 dólares la versión estándar, puede ser una limitación.

En resumen

En general, la creación de aplicaciones para dispositivos móviles siempre será más eficiente si se crea directamente usando las herramientas que proporciona el desarrollador del sistema operativo. Esto significa que deberá reprogramarse la aplicación para los diferentes sistemas, teniendo en cuenta sus características y usando el SDK adecuado. Cuando esto no pueda ser así, el uso de herramientas que permiten programar una vez para todos los dispositivos simplifica la programación, aunque puede reducir la eficiencia del resultado final. Escoger una u otra opción dependerá del desarrollador, de sus habilidades como programador o del tiempo y dinero que pueda destinar al proyecto.

Publicado por Carlos Casado Martínez

Licenciado en informática por la Universitat Politècnica de Catalunya, es profesor del Grado de Multimedia y del Máster de Aplicaciones Multimedia de la UOC.