# Adobe Flex

Adobe Flex (hasta 2005 Macromedia Flex) es un término que agrupa una serie de tecnologías publicadas desde marzo de 2004 por Macromedia para dar soporte al despliegue y desarrollo de Aplicaciones Enriquecidas de Internet, basadas en su plataforma propietaria Flash.
Los programadores tradicionales de aplicaciones ven como un desafío adaptar la metáfora de la animación sobre la plataforma con la cual fue originalmente construido Flash. Flex minimiza elegantemente este problema proveyendo un flujo de trabajo y un modelo de programación que es familiar a los desarrolladores de aplicaciones.
Flex fue inicialmente lanzado como una aplicación de la plataforma J2EE o biblioteca de etiquetas JSP que compilaba en el lenguaje de marcas de Flex (MXML) y en el lenguaje ActionScript en aplicaciones Flash (archivos SWF binarios). Versiones posteriores de Flex soportan la creación de archivos estáticos que son compilados, y que pueden ser distribuidos en línea sin la necesidad de tener una licencia de servidor.
El objetivo de Flex es permitir a los desarrolladores de aplicaciones web construir rápida y fácilmente aplicaciones enriquecidas de Internet, también llamadas RIA. En un modelo multi-capa, las aplicaciones Flex son el nivel de presentación.
Flex destaca el desarrollo de interfaces gráficas de usuario usando un lenguaje XML llamado MXML. Este lenguaje también puede usarse para definir aspectos no visuales de una aplicación. ActionScript, un lenguaje interpretado basado en ECMAScript, puede usarse para lo relacionado con la lógica y para implementar funcionalidad personalizada a la aplicación.
Flex tiene varios componentes y características que aportan funcionalidades tales como Servicios Web, objetos remotos, arrastrar y soltar, columnas ordenables, gráficas, efectos de animación y otras interacciones simples. El cliente solo carga la aplicación una vez, mejorando así el flujo de datos frente a aplicaciones basadas en HTML (PHP, ASP, JSP, CFMX), las cuales requieren ejecutar plantillas en el servidor para cada acción. El lenguaje y la estructura de archivos de Flex buscan el desacoplamiento de la lógica y el diseño.
El servidor Flex también actúa como un gateway permitiendo al cliente comunicarse con servicios web XML y objetos remotos (tales como Coldfusion CFC, clases Java, y cualquiera que soporte el formato de mensajes de acciones).
Las alternativas a Flex son, entre otras, Google Web Toolkit, JavaFX, OpenLaszlo y Silverlight de Microsoft.

## Flex 1.0 y 1.5

Macromedia se dirigió al mercado de desarrollo de aplicaciones empresariales con sus versiones iniciales de Flex 1.0 y 1.5. La licencia por CPU costaba alrededor de USD 15 000. Estas versiones de Macromedia Flex usaban ActionScript 2. Necesario para la implementación, el servidor de aplicaciones de J2EE compilaba archivos escritos en MXML y ActionScript en aplicaciones Flash.

## Flex 2

Flex 2 cambia el modelo de licencias para abrir la puerta a una versión libre de esta tecnología, denominada "Flex Framework".
El nuevo Flex Builder 2 está basado en el entorno de desarrollo Eclipse. Los servicios orientados a empresas seguirán estando disponibles para aquellos que necesitan características avanzadas, tales como el testeo automático.
Flex 2 introduce el uso de una nueva versión del lenguajes de scripts ActionScript, Actionscript 3, que requiere reproductor Flash 9 o posterior para su funcionamiento.
Flex fue el primer producto de Macromedia en ser etiquetado como producto de Adobe, empezando por la versión 2.0.

## Flex 3

El 13 de febrero de 2008, Adobe anunció el lanzamiento de la versión 3 de su kit de desarrollo (SDK) para la plataforma Adobe Flex, bajo la licencia de código abierto Mozilla Public License. La característica más notable de este lanzamiento es su integración nativa con la plataforma Adobe Air que permite ejecutar aplicaciones RIA directamente en el escritorio. Las nuevas funcionalidades de Adobe Flex 3 incluyen:
* Soporte nativo para Adobe Air.
* Nuevo Framework para manejar cachés persistentes dentro de la plataforma Flash.
* Mejoras en el IDE comercializado por Adobe, Flex Builder 3.
* Integración con Creative Suite 3.
* Inclusión del componente Advanced DataGrid.
* Cambios en el tipo de licenciamiento (primeros pasos en el proceso de migración del SDK a código abierto).

## Flex 4

La versión 4 de Flex fue distribuida al público en marzo de 2010. Esta nueva versión busca facilitar el flujo de trabajo entre diseñadores y desarrolladores de aplicaciones RIA. Los principales objetivos Flex 4 son los siguientes:
* Diseño en mente: La arquitectura de personalización (Skinning en inglés) se simplifica.
* Productividad del desarrollador: Se mejoró el desempeño del compilador y se perfeccionó el proceso de enlazamiento de datos (data binding en inglés) de los componentes.
* Evolución del framework: se añadieron nuevos componentes y se modificó el SDK para aprovechar las características del nuevo Flash Player 10.
Uno de los cambios más notables en Flex 4 es la incorporación de una nueva arquitectura de componentes llamada Spark; ésta reemplaza a algunos de los componentes que existían en el espacio de nombres MX que era usado en las versiones anteriores de Flex.
La última versión del SDK es la 4.11.0, y se liberó bajo licencia Apache, versión 2.

## Integración con otras tecnologías

Las aplicaciones desarrolladas sobre la plataforma Flex pueden interactuar con otras tecnologías del lado servidor a través de la invocación de Web Services, REST o bajo el formato binario AMF. La interacción a través de AMF es bastante eficiente y de éste se han realizado implementaciones para diferentes lenguajes siendo el más popular Java.

## Proceso de desarrollo de una aplicación Flex

Los datos mostrados a continuación han sido extraídos directamente del archivo de ayuda de la versión 2.0 Beta 3:
* Definir una interfaz de aplicación usando un conjunto de componentes pre-definidos (formularios, botones,...)
* Ordenar estos componentes en el diseño de la interfaz de usuario.
* Usar estilos y temas para definir el diseño visual.
* Añadir comportamiento dinámico (una parte de la aplicación interactuando con otra, por ejemplo).
* Definir y conectar a servicios de datos según sea necesario (servicios HTTP).
* Compilar el código fuente en un archivo SWF que funcione en el reproductor Flash.

## Historial de versiones

* Flex 1.0 - marzo de 2004
* Flex 1.5 - octubre de 2004
* Flex 2.0 Alpha - octubre de 2005
* Flex 2.0 Beta 1 - febrero de 2006
* Flex 2.0 Beta 2 - marzo de 2006
* Flex 2.0 Beta 3 - mayo de 2006
* Flex 2.0 FINAL - 28 de junio de 2006
* Flex 2.0.1 - 5 de enero de 2007
* Flex 3.0 Beta 1 - 11 de junio de 2007
* Flex 3.0 Beta 2 - 1 de octubre de 2007
* Flex 3.0 Beta 3 - 12 de diciembre de 2007
* Flex 3.0 FINAL - 12 de febrero de 2008
* Flex 3.5 FINAL - 18 de diciembre de 2008
* Flex 4.0 Beta 1 - 13 de mayo de 2009
* Flex 4.0 Beta 2 - 22 de septiembre de 2009
* Flex 4.0 FINAL - 21 de marzo de 2010
* Flex 4.1 Update - 30 de junio de 2010
* Flex 4.5 FINAL - 3 de mayo de 2011
* Flex 4.6 SDK FINAL--