# Apache Flex

O Apache Flex (anteriormente chamado de Macromedia Flex até 2005 e Adobe Flex até 2012) é uma tecnologia lançada em março de 2004 pela Macromedia, que suporta o desenvolvimento de aplicações complexas interativas para a internet, chamados de RIA, baseadas na linguagem de script ActionScript da plataforma do Macromedia Flash.
A versão inicial possuía um SDK, um IDE e uma integração com o J2EE, conhecido como Flex Data Services. Desde que a Adobe adquiriu a Macromedia em 2005, as versões subsequentes do Flex começaram a requerer uma licença para o Flex Data Services (inicialmente era um produto separado e que posteriormente foi rebatizado como LiveCycle Data Services).
Em abril de 2007, a Adobe anuncia planos de abrir o código do Flex 3 SDK. Mas continuam proprietárias e comerciais o Adobe Flash Player, aplicativo pelo qual são visualizados as aplicações Flex, e o Flex Builder, a IDE utilizada para desenvolver aplicações Flex.

## Visão geral

É possível verificar que as aplicações feitas em Flash oferecem ao usuário uma experiência mais complexa, onde a produtividade é envolvida pela facilidade de uso e interatividade em tempo real, mais difícil de se conseguir com HTML. Desenvolver aplicações ricas com o Flash para programadores de aplicações tradicionais torna-se de início estranho, pois o Flash trabalha com uma linha do tempo (timeline) que facilita o trabalho dos designers, mas pode confundir programadores iniciantes desta ferramenta. O Flex remove esta barreira, fornecendo aos programadores um novo caminho de desenvolvimento de aplicações RIA, buscando prover um fluxo de trabalho e um modelo de programação familiar aos desenvolvedores. Utilizando MXML e XML, oferecendo uma construção rápida e facilitada do layout de GUI. A interatividade com o usuário ocorre através do uso do ActionScript, o coração da linguagem Flash que se baseia na linguagem de programação ECMAScript.
O Flex SDK vem com um conjunto de componentes incluindo botões, list boxes, árvores de acesso, data grids e muitos outros objetos de controle de texto, além de contêineres de layout. Componentes de gráficos são disponíveis como complementos. Outros atributos são os web services, arraste e solte, caixas de diálogo modais, animações, status da aplicação, validações, e outras interações que rodeiam uma aplicação do tipo framework.
Em um modelo Cliente-servidor ou multicamada, aplicações Flex servem como a camada de aplicação. Ao contrário de aplicações HTML que se baseiam em páginas, o Flex mantém o estado do cliente onde mudanças significativas de visualização não necessariamente requerem uma carga de uma nova página. Similarmente, Flex e Flash possuem muitas formas de enviar e carregar informações para a camada-servidor sem que isto provoque uma recarga de tela por parte do cliente. Embora estas funcionalidades eram consideradas vantagens perante o HTML e o JavaScript no passado, o aumento do uso de XMLHttpRequests na maior parte dos navegadores têm feito com que a carga assíncrona de dados seja também uma prática comum em aplicações baseadas em HTML.
Tecnologias que são comumente comparadas com o Flex incluem o OpenLaszlo, Ajax, XUL, JavaFX e tecnologias desenvolvidas pela Windows Presentation Foundation, como o Silverlight.

## Linguagem MXML

Os arquivos desenvolvidos em Flex quando compilados possuem a extensão MXML, a qual é uma linguagem de marcação. Para visualizar uma aplicação MXML o usuário faz uma requisição para o servidor Flex, que converte o arquivo MXML em SWF (formato binário do Flash), este será exibido no Flash Player.

## Recursos do Flex

Flex SDK - O Flex SDK é um compilador em modo caractere. É possível desenvolver aplicações Flex gratuitamente utilizando este compilador. O programador utiliza algum editor de sua preferência (Eclipse, Bloco de Notas, Dreamweaver, etc), salva o arquivo MXML e através do SDK compila este arquivo para binário (.swf).
Flex Builder - O Flex Builder é bastante intuitivo. É um framework de desenvolvimento que oferece várias facilidades ao usuário, uma delas são os componentes. Estes componentes podem ser arrastados até o palco, configurados os parâmetros e depois feita a programação no modo de código. A grosso modo pode-se comparar ao Borland Delphi que tem essas funcionalidades de componentes prontos e programáveis, mas voltado para web.
Flex Data Services - oferece um conjunto de avançados recursos de gerenciamento de dados no lado do servidor que permitem aos desenvolvedores fornecer rapidamente aplicativos Flex que fazem intenso uso de dados.

## Histórico de lançamentos

* Flex 1.0 – Março de 2004
* Flex 1.5 – Outubro de 2004
* Flex 2.0 (Alpha) – Outubro de 2005
* Flex 2.0 Beta 1 – Fevereiro de 2006
* Flex 2.0 Beta 2 – Março de 2006
* Flex 2.0 Beta 3 – Maio de 2006
* Flex 2.0 Final- 28 de Junho de 2006
* Flex 2.0.1 – 5 de Janeiro de 2007
* Flex 3.0 Beta 1 – 11 de Junho de 2007
* Flex 3.0 Beta 2 – 1 de Outubro de 2007
* Flex 3.0 Beta 3 – 12 de Dezembro de 2007
* Flex 3.0 – 25 de Fevereiro de 2008
* Flex 3.1 – 15 de Agosto de 2008
* Flex 3.2 – 17 de Novembro de 2008
* Flex 3.3 – 4 de Março de 2009
* Flex 3.4 - 18 de Agosto de 2009
* Flex 3.5 - 18 de Dezembro de 2009
* Flex 4.0 - 22 de Março de 2010
* Flex 4.1 - 1 de Julho de 2010
* Flex 4.5 - Setembro de 2010

## Macromedia Flex Server 1.0 e 1.5

A Macromedia inicialmente desenvolveu as versões do Flex 1.0 e 1.5 tendo como nicho de mercado empresas de desenvolvimento. A companhia oferecia a tecnologia a um preço que girava em torno de US$ 15.000 por PC. Como requisitos mínimos o servidor J2EE. Cada licença do servidor incluía 5 licenças para o Flex Builder IDE.

## Adobe Flex 2

A Adobe modificou significativamente a linha do produto com a versão 2. O centro do Flex 2 SDK consistia em um compilador de linhas de comando e uma completa biblioteca de classes de componentes e utilitários, disponibilizada gratuitamente para download. Aplicações completas desenvolvidas em Flex podiam ser desenvolvidas totalmente utilizando unicamente o SDK, que não possuía limitações ou restrições comparadas com a mesmo SDK incluído com o Flex Builder IDE.
A nova versão do Flex Builder utilizava a plataforma da IDE de código aberto Eclipse. A companhia lançou duas versões para o Flex Builder 2, Standard e Professional. A versão profissional incluía a biblioteca de componentes para desenvolvimento de gráficos.
Junto com a versão 2, foi introduzida uma nova versão do ActionScript, chamado de ActionScript 3, utilizando-se da última especificação do ECMAScript. Para o uso do ActionScript 3 e Flex 2, é necessário ter a versão 9 ou mais recente de Flash Player. Com isto, o Flash Player 9 incorporou uma máquina virtual mais robusta.

## Adobe Flex 3

Com o code-nome Moxie, a versão Beta do Flex 3 foi lançada em junho de 2007. A principal característica é a integração com as novas versões dos produtos da Adobe, como o Adobe AIR e novas ferramentas de design na IDE.
A versão 3.4 do Adobe Flex já está disponível para download desde 4 de março de 2009.
Em 25 de fevereiro de 2008, a Adobe lançou o Flex 3 e Adobe AIR 1.0. Em 18 de dezembro de 2009 a Adobe lançou o Flex 3.5.

## Adobe Flex 4

Com o codinome Gumbo, Flex 4 foi lançado em 22 de março de 2010. A ferramenta de desenvolvimento Flex 4 é chamado "Adobe Flash Builder".
Alguns temas que têm sido mencionados pela Adobe e foram incorporadas Flex 4 são as seguintes:
* Design in Mind: A estrutura foi projetada para uma colaboração contínua entre designers e desenvolvedores.
* Desenvolvimento Acelerado: ser capaz de tomar o desenvolvimento de aplicações, desde a concepção à realidade rapidamente.
* Melhorias na plataforma horizontal: desempenho Compiler, aprimoramentos da linguagem, os componentes BiDi, texto melhorado (Flex 4 inclui o novo layout de texto Framework ).
* Suporte completo para o Adobe Flash Player 10 ou superior.
* Ampliando Horizontes: Encontrar maneiras de fazer um quadro leve, com suporte de implementação em tempo de execução, MXML runtime.
* Simplificação esfola do que as versões anteriores.
* Integração com o Adobe Flash Catalyst.
* Modelos personalizados
O software está disponível em duas versões: Standard e Premium . A Premium adiciona as seguintes características;
* Ferramentas de teste
* Profilers
* Memória e desempenho
* Um feixe de testes automatizados de modo que você pode se conectar a todas as ferramentas de teste de liderança
* Suporte FlexUnit
* Linha de comando construir capacidade
* O Monitor de rede nova