Conoce las aplicaciones RIA y olvídate de las instalaciones

Las aplicaciones RIA (Rich Internet Applications) son independientes del sistema operativo y se ejecutan sin necesidad de una instalación previa. Zoho, Gmail o Pixlr son algunos ejemplos, pero su número va creciendo de día en día

Conoce las aplicaciones RIA y olvídate de las instalaciones

18 enero 2009

Una aplicación RIA es ejecutada en el interior de un navegador y se caracteriza y diferencia de las aplicaciones web corrientes por presentar un comportamiento similar al de las de escritorio. El aspecto fundamental es que no se precisa una actualización de la página completa, que actúa como interfaz de usuario cada vez que se interactúa con la funcionalidad que ofrece el programa.

¿Cómo se consigue que una aplicación web tenga un comportamiento similar al de un programa de escritorio? Las técnicas son varias y varían en el grado de éxito con el que consiguen alcanzar esa similitud. Si creásemos una escala de semejanza entre los dos paradigmas de interfaz de usuario, en la parte inferior, nos encontraríamos con las aplicaciones AJAX.

Éstas siguen estando basadas exclusivamente en XHTML/CSS y JavaScript, como cualquier sitio web, recurriendo a DOM y un objeto con el que cuentan todos los navegadores (XMLHttpRequest) para actualizar partes concretas de la interfaz y comunicarse con el servidor sin renovar la página completa.

En un nivel superior, dentro de esa hipotética escala de similitud, se encontrarían aquellas aplicaciones cuya interfaz de usuario resulta más funcional al no estar basada exclusivamente en XHTML y CSS. Ejemplos de este tipo de programas son los desarrollados con Adobe Flash y Microsoft Silverlight. Para que puedan ser ejecutadas, este tipo de aplicaciones requieren la instalación de un plug-in en el navegador, que es el que ofrece los servicios que necesitan.

Limitaciones y soluciones

A pesar de la mejora que implica en el comportamiento de las aplicaciones web, la disponibilidad de una interfaz de usuario más rica y ágil, no fundamentada exclusivamente en la transición entre páginas de un sitio, siguen existiendo limitaciones inherentes a su propia naturaleza.

Una aplicación web es, por definición, un software alojado en la Red y que precisa de ésta para su correcto funcionamiento. En el momento en que carezcamos de una conexión a Internet, no resulta posible su uso, ya que no se puede acceder al servidor que aloja la interfaz de usuario y los datos empleados por la aplicación.

Una primera aproximación a la solución de este problema/limitación es la que ofrece Google Gears a través de una fina capa de software expuesta en forma de API para el programador, que permite conservar localmente los datos que precise la aplicación para su funcionamiento.

En realidad, Gears no tiene nada que ver con el desarrollo de proyectos RIA, de hecho, puede emplearse en cualquier página web, no siendo más que una interfaz que facilita la persistencia de la información accesible desde el navegador. Éste, el cliente web, sigue siendo la plataforma que ejecuta la interfaz de usuario. En este sentido, Gears no aporta ninguna funcionalidad.

En contraposición, productos como Silverlight o Flash ofrecen al desarrollador todos los elementos necesarios para diseñar interfaces de usuario avanzadas, gracias a un motor de ejecución que opera sobre el navegador en un entorno restringido por cuestiones de seguridad.

En este sentido, no hay gran diferencia entre dichas alternativas y un applet Java, lo único que cambia es el complemento que debe instalarse en el navegador. No solamente se depende de este último, sino también de la existencia de una conexión activa con el servidor que aloja la aplicación.

Adobe AIR aporta la capa de persistencia de Google Gears, las capacidades RIA de AJAX, Silverlight o Flash y, además, la posibilidad de prescindir totalmente del navegador, tratando las aplicaciones directamente como si fuesen programas de escritorio.

El núcleo de AIR

La ejecución de aplicaciones AIR requiere de la instalación previa de un núcleo, el entorno de ejecución de AIR, que puede obtenerse gratis desde http://get.adobe.com/es/air. Actualmente, se encuentra disponible para distintas versiones de Windows, para Mac OS X y para GNU/Linux, por lo que una aplicación AIR puede ser ejecutada en prácticamente cualquier ordenador.

En cierta manera, podría decirse que el entorno de ejecución de Adobe AIR se comporta como una máquina virtual independiente de la plataforma software y hardware. En este aspecto, sería similar al entorno de ejecución de Java. La diferencia estriba en los servicios que ofrece esa máquina virtual que, a la postre, determina el tipo de aplicaciones a las que se dirige.

En el núcleo de AIR se combinan dos partes, un motor de renderizado web con capacidad para procesar interfaces compuestas de XHTML/CSS y que utilizan DOM desde JavaScript para aportar la funcionalidad en el cliente y el motor de Flash Player 9, lo cual le permite ejecutar aplicaciones basadas en Flash y ActionScript 3. También incorpora la capacidad para, independientemente del tipo de aplicación, tratar con documentos en formato PDF.

Al igual que Safari y Chrome, Adobe ha elegido como motor de renderizado web el software de código abierto WebKit (http://webkit.org). Esto significa que una interfaz de usuario construida exclusivamente con técnicas web, como los ya mencionados XHTML, CSS, DOM y JavaScript, debería tener en AIR exactamente la misma apariencia y comportamiento que en los dos navegadores citados. AIR, no obstante, no es un navegador genérico.

El paquete de desarrollo

Cualquier aplicación web de tipo AJAX puede convertirse en una aplicación AIR de manera inmediata, sólo se necesita el paquete de desarrollo para Adobe AIR que el fabricante ofrece gratuitamente en www.adobe.com/es/products/air/tools/sdk.

Actualmente, este paquete está disponible únicamente para Windows y Mac OS X, pero, una vez que el entorno de ejecución ya ha aparecido también para GNU/Linux, es de esperar que el paquete de desarrollo también lo haga en poco tiempo.

Asumiendo que todos los módulos de la aplicación web, posiblemente ya en explotación, se tienen alojados en una carpeta, no hay más que crear un archivo XML describiendo la aplicación, usar la herramienta ADT que incluye el kit de desarrollo para firmarla y empaquetarla y, finalmente, distribuirla a los clientes, por ejemplo, facilitando un enlace en una página web. A partir de ese momento, esa aplicación, que antes necesitaba un navegador y una conexión a Internet, podrá ejecutarse como si fuese una de escritorio, en su propia ventana.

Convertir en aplicaciones AIR cualquier aplicación web, sea o no AJAX, resulta interesante, pero lo será aún más si éstas aprovechan los servicios que les ofrece el motor de ejecución de AIR. Para ello, no hay más que agregar a las páginas XHTML una etiqueta script haciendo referencia al módulo AIRAliases.js, que también forma parte del paquete de desarrollo gratuito, y usar desde guiones JavaScript los diversos métodos y propiedades que expone el objeto AIR.

De esta forma, será posible, por ejemplo, acceder al sistema de archivos local, actualizar automáticamente la aplicación o recuperar/almacenar información de una base de datos.

Además de la utilidad que asume la firma y empaquetado, el paquete de desarrollo también incluye un depurador con el que es posible comprobar el funcionamiento de la aplicación antes de empaquetarla, así como módulos JavaScript que facilitan la inspección de objetos. Todos estos elementos se utilizan desde la línea comandos del sistema, siendo necesario tener instalado el JRE de Java para que funcionen.

Si se emplea como herramienta de desarrollo web el programa Dreamweaver, también de Adobe, hay disponible una extensión que simplifica el proceso de firma y empaquetado de los proyectos, generando aplicaciones AIR sin necesidad de recurrir a la línea de comandos.

Resumiendo

Adobe AIR no aporta ningún lenguaje nuevo de composición de interfaces, ya que éstas se disponen con XHTML/CSS, con Flash o bien con MXML en Flex, ni un nuevo lenguaje de script capaz de procesar los ya conocidos JavaScript y ActionScript, ni entornos nuevos de trabajo, sino que ofrece complementos para Dreamweaver, Flash CS3 y Flex Builder.

En realidad, Adobe AIR solamente aporta una serie de herramientas básicas accesibles directamente desde la línea de comandos, distribuidas gratuitamente en un SDK, y un entorno de ejecución ligero, potente y multiplataforma.

Es precisamente este último, el entorno de ejecución, el aspecto novedoso de AIR, al combinar en el mismo todos los elementos necesarios para ejecutar como software de escritorio las aplicaciones web clásicas y AJAX, los programas escritos con Flash y también con Flex, que, hasta ahora, precisaban de un navegador y una conexión a Internet.

Desarrollos AIR con Flash/Flex

La inclusión del motor de Flash dentro del entorno de ejecución de Adobe AIR se complementa con una extensión, también ofrecida gratuitamente, que permite a los desarrolladores que usan Flash CS3 Professional generar aplicaciones AIR.

Flash Player es uno de los plug-ins más difundidos entre los navegadores, ya que son millones los sitios web que aportan contenido dinámico construido con Flash, desde sencillas animaciones hasta aplicaciones completas de cierta complejidad.

Ese módulo se ejecuta en el interior de un navegador y, a su vez, hace correr aplicaciones descargadas desde un servidor. El motor de AIR permite ejecutar esos mismos programas, pero sin precisar el navegador, basta con empaquetar el proyecto en formato AIR y podrá ser lanzado en cualquier equipo donde se haya instalado el núcleo, sin más.

Las aplicaciones Flex son programas de tipo RIA que se basan en la ejecución de una interfaz de usuario desarrollada con MXML y ActionScript 3 y que, por tanto, puede ser ejecutada en el cliente siempre que se cuente con Flash Player.

MXML es un lenguaje de descripción de interfaces, basado en XML, que el compilador de Flex traduce, conjuntamente con el código ActionScript, en módulos SWF. Opcionalmente, es posible definir también módulos que se ejecutarán en el servidor, facilitando a la interfaz la realización de operaciones que no sea posible llevar a cabo directamente en el cliente.

Si para desarrollar las aplicaciones Flex se emplea Flex Builder, el entorno de trabajo basado en Eclipse, bastará con elegir la opción Project>Export Release Version para firmar y empaquetar el proyecto en forma de aplicación AIR.

De utilizarse solamente el SDK de Flex, sin Flex Builder, el proceso será similar al descrito antes para empaquetar aplicaciones AJAX, recurriéndose a la herramienta ADT del paquete de desarrollo de AIR para firmar y empaquetar la aplicación.