FLEX: El sabor de Adobe para RIA

Hablar de una tecnología como Flex con una perspectiva de Web 2.0 forzosamente nos lleva a entender parte de la evolución de la industria del software, darnos cuenta del porqué del sufijo 2.0, y conocer un término que está íntimamente ligado con Flex, nos referimos a la expresión de RIA (Rich Internet Application).

Evolución de las Aplicaciones
Como sabemos, las tecnologías y arquitecturas de las aplicaciones de software están en continua evolución para satisfacer mejor las necesidades de tanto los usuarios como los departamentos de TI. Es así que pasamos por los “mainframes”, y luego por la arquitectura cliente/servidor, cuyas características permitían una mayor productividad, a costa de complicaciones en la distribución y despliegue.

Posteriormente, un nuevo modelo vio la luz, y fue tiempo de darse cuenta del potencial del web como un ambiente para ejecución de aplicaciones. En este modelo, los navegadores actúan como clientes ligeros donde se interpreta HTML, y a través de este se hacen peticiones y se reciben respuestas de un servidor. Comúnmente esta interacción también se conoce como arquitectura basada en páginas. Con este modelo se resolvieron los problemas de distribución y despliegue, ya que las aplicaciones residen en el servidor. Sin embargo, esto se logra a costa de la experiencia del usuario. Esto se debe a las limitantes de HTML, así como del protocolo HTTP.

Es entonces que llegaron las denominadas RIA (Rich Internet Applications). Este término fue acuñado en el 2002 por la empresa Macromedia, y en ese entonces significaba muchas cosas pero todo se veía sintetizado en la frase “Experience that matters”. Las RIAs proponían una experiencia para el usuario muy diferente a la interacción de cambio de página de las aplicaciones web tradicionales, aquellas que en ese momento se fueron haciendo obsoletas y formaron parte de lo que se conoce como Web 1.0

Una RIA combina lo mejor de dos mundos:
> Aprovecha las ventajas del web como plataforma para entregar aplicaciones.
> Brinda al usuario una experiencia por lo menos comparable a la de las aplicaciones de escritorio actuales.
En una RIA se eliminan los viajes innecesarios al servidor, lo cual impacta positivamente el desempeño de las aplicaciones, ya que la mayor parte del procesamiento se ejecuta en el cliente. Este es un cliente enriquecido (rich client) cuya funcionalidad va mucho más allá del comportamiento default de un navegador web. Algunas tecnologías utilizadas para clientes enriquecidos son los prácticamente extintos Java Applets, o el novedoso Silverlight de Microsoft por citar algunos, pero sin duda alguna el de mayor adopción a nivel mundial es el Flash Player de Adobe.

Nociones de Web 2.0
Fue en el año 2004 cuando Tim O’Reilly utiliza el término Web 2.0, aunque nunca ha sido definido un esquema formal para decir qué sitio es 2.0 y qué sitio no lo es. Si algo se ve lo suficientemente “cool” se agrega el mote de 2.0.

De los principios más socorridos al momento de hablar de Web 2.0 tenemos:
> Usar la Web como plataforma.
> Datos como una fuerza de negocios
> Tomar los efectos de la red para crear una arquitectura de participación
> Innovación en los sistemas y sitios web
> Modelo de negocios ligero
> Facilidad de adopción

Flex 2: RIA para Web 2.0
Habiendo dicho todo esto, podemos enfocarnos en una tecnología que está creando bastante eco en la comunidad de desarrolladores de aplicaciones web: Adobe Flex. A grandes rasgos, Flex es un framework para desarrollar aplicaciones web que son ejecutadas en la plataforma Adobe Flash. Actualmente, Flex se encuentra en su versión 2, y todo lo que mencionamos en este artículo se refiere a esta versión.

En su comportamiento, las aplicaciones hechas con Flex son similares a las aplicaciones Ajax: permiten actualizaciones dinámicas hacia la interfaz de usuario UI, y también tienen la habilidad de enviar y recibir datos del servidor de forma asíncrona. Una ventaja adicional es que las aplicaciones hechas en Flex pueden ser consideradas multiplataforma debido a la ubicuidad de su cliente (Flash Player). Muchos argumentarán que Ajax también es multiplataforma, lo cual en teoría es cierto. Sin embargo, en la práctica nos encontramos con que los diferentes navegadores tienen distintos niveles y mecanismos de implementación de Javascript y CSS, mientras que Flash Player es una sola máquina virtual estándar para todos los navegadores y sistemas operativos. Además, sería incorrecto comparar directamente ambas tecnologías, ya que en esencia Flex es un framework y una plataforma de desarrollo, mientras que Ajax es una serie de técnicas de desarrollo que explotan el objeto XmlHttpRequest.

Elementos de Flex
La plataforma de Flex está formada por los siguientes elementos:
> ActionScript 3.0 – Un lenguaje de programación orientado a objetos basado en la última especificación ECMAScript.
> Flash Player 9 – La siguiente generación de esta popular pieza de software que incluye una Máquina Virtual (AVM2) que permite ejecutar el código significantemente más rápido.
> MXML – Un lenguaje basado en XML que permite manipular los componentes de la aplicación de una forma eficiente.
> Compilador y Depurador – Un compilador en línea de comandos así como un modelo de depuración en tiempo de ejecución.
> Flex Framework – Una librería de componentes de interfaz de usuario GUI, tales como botones, data grids, acordeon, paneles, controles de árbol, etc. Fáciles de personalizar basándose en CSS o mediante Skins.
> LiveCycle Data Services ES Express – Una plantilla de aplicación Web entregada en un servidor J2EE para comunicarse con el cliente Flash Player mediante una serie de servicios de comunicación, manejo de datos y mensajería y con amplias posibilidades de integración con los sistemas actuales.

Estos elementos están incluidos en un SDK gratuito que se puede descargar del sitio de Adobe.

Adicionalmente, están las herramientas de desarrollo, las cuales tienen un costo.
> Flex Builder 2 – Un IDE construido sobre Eclipse, que permite un ambiente de trabajo visual para construir las interfaces enfocándose siempre en el usuario y a la vez una vista de código muy familiar a los programadores.
> Charting Components – Una serie de componentes enfocados a la parte de reportes y gráficas, muy socorridos para crear Dashboards, aplicaciones colaborativas y reportes.
> LiveCycle Data Services ES Departamental y Enterprise – Versiones de LiveCycle Data Services ES para 100 usuarios concurrentes o sin límite de usuarios en concurrencia respectivamente.

Figura 2. Estructura de la plataforma Flex

La figura 2 muestra los principales elementos de la plataforma Flex, y la figura 3 muestra el flujo de trabajo bajo el que funcionan estas aplicaciones.

Figura 3. Flujo de trabajo para aplicaciones Flex

Consideraciones sobre Flex 2
Muchas tecnologías se ven ir y venir hoy en día, pero son pocas las que se vuelven parte del cajón de herramientas de los programadores. Al crear Flex 2, Adobe tomo en cuenta diversas consideraciones para maximizar su adopción y facilitar la curva de aprendizaje. De hecho, Flex está pensado de forma que sea muy sencillo para los desarrolladores de Java dar el salto hacia esta plataforma. Algunas de las características que contribuyen a esto son:
ActionScript 3.0 es muy similar a Java
> Flex Builder está construido sobre Eclipse, uno de los IDEs más populares
> La gran mayoría de las tecnologías Java (EJB, POJO, Hibernate, JMS, etc.) se integran fácilmente con Flex.

También existen diversas opciones de integración para aprovechar las características de Flex desde la plataforma .NET, algunos ejemplos son WebOrb y Fluorine.

Otras características atractivas de Flex 2 pueden ser:
> Esta basado sobre un mecanismo de seguridad sólido
> Es capaz de “senderear” datos en tiempo real a la interfaz.
> Soporta altas tasas de actualización de imagen (refresh rate) en entidades de datos grandes.
> A través de la máquina virtual de Flash Player 9, soporta compilación just-in-time (JIT).

Una visión al futuro de Flex
Por ahora, solo falta que los desarrolladores se den cuenta del gran potencial que tiene esta tecnología, que ha tenido una evolución muy rápida. Pensando en un futuro próximo, pronto veremos un complemento a Flex llamado Adobe Integrated Runtime (AIR) –anteriormente conocido como el nombre clave “Apollo”–, que es un ambiente de ejecución que permitirá portar al escritorio aplicaciones RIA de forma transparente e independiente del sistema operativo.

Así mismo, la próxima versión de Flex se encuentra a la vuelta de la esquina con la importante noticia de que se hará una apuesta hacia el mundo del código abierto, lo que permitirá a terceros integrar esta tecnología dentro de sus productos y crear sus propias soluciones basadas en ella.

Acerca del autor
Edgar Parada es un Adobe Certified Instructor, consultor de Adobe, colaborador de diversos centros de capacitación e instructor activo en la DGSCA/UNAM. Actualmente dirige Activ (www.activ.com.mx), un Adobe Authorized Training Center especializado en tecnologías como Flex, Flash Lite y Flash Media Server. Es parte del equipo del primer grupo de usuarios en español enfocado en Flex: MadeInFlex ( www.madeinflex.com) y también es manager de Riactive ( www.riactive.com.mx), el grupo de usuarios oficial en México para Flex. edgarparada@activ.com.mx