Universitat Oberta de Catalunya

Flash MX 2004: Apuesta por los estándares

El lanzamiento de Flash MX 2004 supone una actualización realmente interesante del lenguaje ActionScript. Comercialmente se pasa de la versión 1.0 a la nueva versión 2.0, donde la compatibilidad hacia atrás no está asegurada y por tanto es necesario analizar detenidamente las nuevas características del lenguaje. En este artículo se van a presentar algunas de las principales novedades a tener en cuenta.

ActionScript 2.0 y Flash Player 7

La primera novedad que nos encontramos al publicar una película con esta nueva versión de Flash aparece en el menú de Configuración de la Publicación. En la pestaña Flash dispone ahora de tres menús desplegables: la versión del reproductor destino, el orden de carga y un nuevo menú donde se especifica la versión de ActionScript. Mediante este nuevo menú le especificamos a Flash la versión de ActionScript que hemos utilizado en la película y por tanto se utiliza un compilador adaptado a la versión 1.0 o el nuevo compilador 2.0. Este hecho nos puede dar una primera idea de la importancia de los cambios en la nueva versión del lenguaje.

Por otra parte, como es de esperar, se introduce una nueva versión del reproductor, el Flash Player 7.

Este reproductor se adapta a las nuevas características del lenguaje, por tanto para que las nuevas características se soporten la película tendrá que publicarse con este reproductor como destino y deberá visualizarse con la misma versión del reproductor, ya que en caso contrario es posible que ciertas características no se visualicen en versiones antiguas del reproductor.

Novedades en la sintaxis del lenguaje

Las novedades incorporadas en el lenguaje suponen una convergencia de ActionScript al estándar ECMA-262, de forma que en esta versión se incorporan características muy interesantes y conocidas por los programadores familiarizados con este estándar. A continuación se comentan algunos de los principales cambios:

Sensibilidad a las mayúsculas y minúsculas

La nueva versión del lenguaje es sensible a las mayúsculas y minúsculas. Este hecho provoca que dos variables o nombres de función que se diferencien simplemente en alguna mayúscula o minúscula son interpretadas como variables o funciones distintas. Por ejemplo las variables “bola” y “Bola” se interpretan como distintas cuando la película es publicada mediante la versión 2.0 de ActionScript.

Por otra parte, el Flash Player 7 sólo es sensible a las mayúsculas y minúsculas cuando la película que está reproduciendo ha sido publicada especificando como destino la versión 7 del reproductor. De esta forma si la película se publica eligiendo la versión 6 o una inferior el reproductor no tendrá en cuenta estas diferencias.

Así pues nos encontramos en dos niveles distintos: en primer lugar el nivel de compilación donde la sensibilidad de mayúsculas o minúsculas viene definida por la versión de ActionScript que se especifica en la publicación y un segundo nivel donde sólo el reproductor versión 7 diferencia las mayúsculas y minúsculas cuando la película se publica para esta versión.

Sintaxis de barras invertida

La sintaxis de barra invertida en las rutas a los objetos ya no es soportada por la versión 2.0, de forma que se produce un error de compilación cuando un script utiliza esta sintaxis. Esto hace imprescindible modificar todas las rutas especificadas con esta sintaxis si se desea publicar con las capacidades de la versión 2.0.

Posibilidad de tipado estricto de datos

Con la nueva versión es posible indicar el tipo de las variables definidas. Ahora es posible indicar el tipo de datos que se envían como parámetros de entrada y/o salida de una función. Esta característica permitirá detectar errores en el nivel de compilación, cuando a una variable definida de un cierto tipo se le asigna un valor de un tipo distinto.

Soporte de programación orientada a objetos

Este soporte es proporcionado por la introducción del modelo de objetos estándar implementado en otros lenguajes de programación como Java o Javascript 2.0. Se introducen las palabras clave class, interface, extends e implements, y se usan en la creación de clases utilizando las bases de la orientación a objetos como la herencia, la encapsulación y el polimorfismo.

La única limitación viene dada por el hecho de que las clases se deben definir en ficheros as externos y ser importadas en los scripts de la película.

Nuevo modelo de componentes

Por otra parte, Flash MX 2004 introduce un nuevo modelo de componentes, que se conoce como versión 2. Este modelo rompe con el anterior, adquiere las características de la orientación a objetos y sus principales beneficios se basan en la introducción de una estructura jerárquica de componentes creada a partir de la herencia de objetos básicos, un número mayor de componentes disponibles y la implementación de un modelo de gestión de eventos acorde con el estándar ECMA-262, y por tanto análogo al existente en Javascript 2.0.

De este modelo de componentes posiblemente las estrellas o al menos los elementos más impactantes son los nuevos componentes de conectividad con datos externos, ya que suponen un gran salto respecto la versión anterior, solucionando gran parte de las limitaciones y problemas existentes.

A continuación se comentan brevemente dos componentes que posiblemente proporcionen mayores posibilidades a los programadores con necesidades de interconexión.

Componente XMLConector

Este nuevo componente es una evolución del XMLSocket disponible en la versión MX. La principal limitación del componente XMLSocket era que establecía una conexión mediante sockets que servía para intercambiar documentos XML, pero se tenía que asignar puertos TCP específicos para establecer el canal de comunicación. La limitación o problema aparecía en que los actuales firewalls o proxys tienden a cerrar todos los puertos TCP a excepción de los más importantes o estándar como el 80 del protocolo HTTP. De esta forma no podía asegurarse una comunicación mientras no se controlasen todos los firewalls entre los dos nodos y por tanto era prácticamente imposible exceptuando aplicaciones de Intranet.

El componente XMLConector establece el mismo intercambio de documentos XML, pero la conexión la realiza por el puerto 80 utilizando el protocolo HTTP. De esta forma se evita el problema que provocan los proxys o firewalls.

Componente WebServiceConnector

Este componente permite el acceso a servicios web publicados en un servidor SOAP estándar. De esta forma se da un paso más allá en la comunicación de la película Flash con fuentes de datos externas, de forma más simple que mediante el paso de variables con el objeto loadVars implementado en la versión MX.

Así pues, con este componente y sus clases asociadas es posible ejecutar métodos definidos en un servidor e implementados en cualquier lenguaje de programación (Java, PHP, ASP), con la única condición de que se cumpla el estándar SOAP del W3C.

También existe un tercer componente, que se conoce como Flash Remoting, que utiliza un protocolo propietario de Macromedia conocido como AMF. De este componente se asegura una mayor optimización del ancho de banda pero la contrapartida es que se utiliza un protocolo propietario, con los inconvenientes que esto supone.

Estos componentes no están solos, se presenta una infraestructura de integración de datos donde los componentes sólo suponen la parte de la infraestructura que se encarga de la comunicación de los datos. Existe un conjunto de componentes y clases que permitirá tratar los datos recibidos desde la fuente externa, desde el almacenamiento, filtrado y traducción hasta el enlazado en componentes visuales como listas o tablas.

Conclusión

Flash MX 2004 no supone una versión más con cuatro características diferenciadas que justifican la publicación. En esta versión se apuesta por los estándares de la web como el ECMA-262 en la sintaxis del lenguaje, XML como formato de intercambio de información y SOAP como mecanismo de acceso a métodos de servidor.

Las posibilidades ofrecidas por esta versión pueden suponer un salto como arquitectura cliente-web no solamente basado en la animación, sino adquiriendo un mayor ámbito en aplicaciones estándar web gracias a sus posibilidades de integración en arquitecturas J2EE, .NET o PHP.