Que es Flex? June 20
Constantemente me preguntan, y tal vez a ustedes también, que es Flex. Lo siguiente es la respuesta que le envié a un amigo mió la semana pasada respondiendo a esta pregunta, y aunque es una respuesta corta, asume cierta familiaridad con lo que es Flash y al menos experiencia con otro lenguaje de programación Web.
Que es Flex?
Esencialmente Flex es un conjunto de librerías – o framework – para desarrollo de UI ( user interface por sus siglas en ingles). Aunque ActionScript 3.0 (AS3) es el lenguaje para programar aplicaciones usando el Flex framework, AS3 no es Flex. Si el código AS3 que se programe utiliza los componentes y métodos definidos en el Flex framework, entonces se esta usando Flex. Es decir, AS3 no es por si solo Flex.
Action Script es el lenguaje utilizado desde siempre para programar aplicaciones Flash. AS3 es la última versión y es compilado en bytecode y este es interpretado por el Flash Player ( tal como el Java Virtual Machine (JVM) interpreta Java bytecode). AS3 tiene muchas características de un lenguaje orientado a objetos aunque no todas. Tiene manejo de excepciones, procesamiento de eventos, clases e interfaces entre otras cosas. Y comparado con sus antecesores AS3 ha sido una gran mejora. AS3 es ahora un lenguaje robusto que permite el uso de buenas y mejores prácticas de programación.
Ahora bien, es completamente posible usar AS3 sin Flex, se pueden crear componentes en AS3 sin haber usado nunca componentes o métodos en Flex. Flex Builder – el IDE de Adobe para desarrollo Flex – permite compilar proyectos AS3. Estos proyectos en si, serian aplicaciones Flash hechas en AS3.
Ahora hablando de los componentes y comportamientos en el Flex framework es más fácil explicarlo si analizamos un componente incluido con Flex. Escojamos por ejemplo el TabNavigator, el TabNavigator puede fácilmente adicionado a una aplicación Flex y configurarlo para que responda a ciertos eventos a través de su API ya que el TabNavigator esta fabricado en Flex, tal como un componente Tab en Visual Basic. Dentro de Flex existen varias categorías para estos componentes, unos son contenedores de UI, otros para navegación en la aplicación, otros para efectos y transiciones, y otros para llamar servicios en el servidor. No existe un componente TabNavigator como parte de AS3. Este es un componente dentro del Flex framework.
Por otro lado, un ejemplo de comportamiento en Flex es el data binding, que en pocas palabras se comporta de la siguiente forma: cambien una propiedad y otros componentes pueden responder automáticamente sin la necesidad de que el programador registre manualmente todas estas conexiones (listeners) entre eventos. El puro AS3 no tiene data binding.
Si se usan los componentes y comportamientos fabricados dentro del Flex framework entonces se esta usando Flex. Aun si nunca se usa MXML o el Flex Builder. En teoría se podrían crear mas frameworks como Flex usando AS3, aunque eso es precisamente lo que Adobe ya hecho creando Flex para nosotros, : ) MXML es un atajo en vez de usar AS3, ya que permite declarar componentes Flex usando etiquetas (tags) en vez de script - como HTML en una pagina Web. La mayoría de aplicaciones Flex contienen MXML para crear la interface o UI y AS3 para crear la lógica. A final de cuentas en tiempo de compilación Flex toma el MXML y lo usa para generar código fuente en AS, y entonces lo compila como si hubiera sido escrito en AS3. Se podría usar Flex sin nunca haber escrito MXML y esto seria como usar la plataforma Java sin nunca haber escrito JSPs. Y tal como Java convierte JSPs a servlets y entonces los compila, el compilador Flex convierte MXML a código fuente ActionScript y entonces lo compila. No se tiene que usar MXML, ya que todo lo que se hace en MXML puede ser declarado usando AS3 usando las clases de los componentes y comportamientos de Flex – tal como se podría escribir cada JSP como un servlet, o cada pagina ASP.NET como un IE HTTPHandler, o cada pagina PHP como un script cgi. Pero es muy conveniente usar MXML, es menos engorroso en términos de mantenimiento a largo plazo. MXML es un gran atajo para el UI en Flex.
Con respecto a FlexBuilder este es solo una herramienta para crear aplicaciones Flex. Tiene un vista de diseño – design view -, que puede usarse rápidamente para crear un UI en Flex, pero esta solo sirve para cosas simples. FlexBuilder es como usar Eclipse para Java, es solo una herramienta, no la plataforma o el lenguaje. Flex esta contenido en un SDK y Adobe ofrece los comandos para compilar proyectos Flex, así que se puede usar cualquier editor de texto en lugar de Flex Builder. Finalmente, esta respuesta no pretende cubrir 100% lo que es Flex, pero mas bien busca ubicar lo que es Flex en relación con ActionScript y Flash, tecnologías mas conocidas para la gente agena o nueva a Flex. En un futuro explicare como esta compuesto el Flex framework, y la línea de productos que lo acompañan y su lugar dentro del presente conjunto de opciones para desarrollo Web, especialmente en el universo de Rich Internet Applications

Heinmer Jul 24
Gracias por tu explicación, esta muy completa!
Ricardo Guerra Oct 29
Muy interesante este informe!!!
sabgto Nov 8
Estoy decidiendo con que plataforma hacer una aplicación. Estoy analizando flex y me he encontrado con un problema. Cuando dibujo (vector graphics), la figura o shape que dibujo, puede encimarce sobre otros controles, esto es, se sale de su contenedor. Si dibujo un circulo muy grande, parte de este circulo se dibuja sobre los botones y otros controles, se sale de su contenedor. He estado buscando por la red y no hay información sobre esto o no la he encontrado. Es esto normal o hay que hacer algo especial para que el dibujo no se salga de su contenedor?. Creo que flex es un buen producto y se me hace muy raro que pueda suceder esto. Te agradesco de antemano la ayuda que me puedas proporcionar.
Saludos.