De que se trata o artigo:

Este artigo apresenta o framework BlazeDS para auxílio na integração do Flex com Java em busca de maior performance na comunicação e como utilizar os recursos avançados do BlazeDS para desenvolver RIAs de qualidade.


Para que serve:

Serve para aqueles que pensam em utilizar ou estão utilizando soluções de interfaces baseadas no Adobe Flex e estão em busca da melhor maneira de utilizar o Flex com Java.


Em que situação o tema é útil:

O conteúdo deste artigo é útil quando há a necessidade de criar uma interface para o usuário final de qualidade e com desempenho na troca de dados entre o cliente e o servidor.

Integrando Flex com Java utilizando o BlazeDS:

O Adobe Flex é um framework open source utilizado para a construção de Rich Internet Applications que contém todas as formas de comunicação com serviços existentes no mercado, como HTTP, web services e também Remoting.

Para que o suporte a Remoting fique funcional, é necessário a utilização de um DataServices no back-end. Um dos melhores e mais maduros é o BlazeDS, uma solução desenvolvida pela própria Adobe. Utilizar Remoting em aplicações que exigem performance é sem dúvidas a melhor escolha, pois a comunicação entre o cliente e o servidor passa a ser feita de forma binária, compacta e trafegando somente objetos; nada de texto como nos outros modelos de comunicação.

O Flex também suporta nativamente o recurso de tráfego de mensagens (data-push, semelhante à JMS), utilizando os componentes producer e consumer.

Dentre as etapas do desenvolvimento de um projeto de software web, o desenvolvimento de interfaces aprimoradas e customizadas sempre demanda mais tempo. Principalmente no modelo atual, no qual o desenvolvedor na maioria das vezes tem de se preocupar em resolver problemas que a tecnologia escolhida não visa atender, como por exemplo, a incompatibilidade da solução desenvolvida com todos os browsers presentes no mercado.

Quando se trata de aplicações ricas, o usuário não está mais contente só com uma interface agradável. Por causa das aplicações presentes na internet construídas pelos grandes players de mercado, como o Google, Yahoo, Microsoft, os usuários estão querendo cada vez mais aplicações mais interativas, dinâmicas, e com dados em tempo real. Em outras palavras, não se espera sistemas onde há a necessidade de procurar um dado, interpretar e gerar um conhecimento, mas cresce cada vez mais a procura de sistemas com dashboards compostos por relatórios e gráficos com foco na área de conhecimento em que está sendo utilizado, dados estes vindos em tempo real, trazendo o estado atual da organização onde o sistema está implantado.

A Adobe identificando essas necessidades criou o Adobe Flex como solução para a construção de interfaces ricas, hoje disponível como open source para a comunidade. Também criou soluções baseadas em Java para dar todo o suporte necessário para as aplicações ricas, estes chamados de DataServices, que detêm várias funcionalidades que envolvem performance e mecanismos que visam resolver problemas comuns no desenvolvimento cotidiano de software.

Hoje no mercado existem vários DataServices para serem usados com interfaces baseadas no Flex. O oficial criado pela Adobe chama-se LiveCycle DataServices (LCDS), solução Java EE proprietária, porém robusta e recomendável para softwares de grande porte. A Adobe também criou o Blaze DataServices (BlazeDS), este disponível para a comunidade como software open source sob os termos da GNU Lesser General Public License Version 3, publicada pela Free Software Foundation.

Há outros DataServices disponíveis como open sources, dentre os mais famosos está o Granite DataServices (GraniteDS) criado e mantido por Franck Wolff, na qual se destaca por integrações nativas com EJB3, JBoss Seam, SpringFramework, Guice/Warp, implementação de Data Push (modelo arquitetural de software conhecido como Comet) e solução para cache no lado do cliente (Tide). Existe também o Exadel Flamingo que é uma solução que serve tanto para o Flex quanto para o JavaFX, focado em integrar de forma nativa ao JBoss Seam ou o Spring Framework. O Flamingo traz suporte nativo ao protocolo Hessian, não presente nos outros data services. Ele também é composto por vários componentes que atuam no lado cliente, como por exemplo, validadores aprimorados, serviços de binding etc.

O BlazeDS é o data services favorito do momento: isso se dá por ser criado pela própria Adobe, por ser parte do oficial LCDS e principalmente por estar ganhando espaço na comunidade Java. Por exemplo, a Spring Source iniciou um projeto chamado “Spring-Flex” que contém soluções para integrações com o BlazeDS e o SpringFramework. Portanto, este artigo aborda as principais funcionalidades do BlazeDS e como integrá-lo com Java.

O Blaze Data Services

O BlazeDS é um framework construído em Java que suporta a tecnologia de remoting e web messaging, habilitando o desenvolvedor a distribuir e publicar os dados provido de serviços no back-end em tempo real ou não para interfaces baseadas no Adobe Flex e no Adobe AIR.

O BlazeDS é composto por boa parte do LCDS, não presentes apenas funcionalidades que dizem respeito a gerenciamento de dados (data management) como sincronização de dados, suporte a aplicações off-line e paginação de dados; também não inclui geração de relatórios PDF ou suporte nativo a deployment em portais. O BlazeDS apesar de não ter essas funcionalidades, é composto por diversas outras funcionalidades que colaboram para o desenvolvimento de aplicações ricas. A Figura 1 exibe o BlazeDS em contraste com o LCDS (LiveCycle DataServices).

Figura 1. BlazeDS em contraste com o LiveCycle DataServices

Conforme as RIAs foram evoluindo, houve a necessidade de criação de opções para uma melhor conectividade de dados. O modelo chamado de Remoting baseado em RPC (Remote Procedure Call) simplifica o consumo de serviços construídos e publicados com Java. Uma interface baseada em Flash como o Flex, consegue acessar os métodos que compõem os serviços diretamente, algo como realizar uma chamada meuServico.meuMetodo() diretamente. Para que isso seja possível, criou-se o formato chamado AMF (AMF-Action Message Format) para o tráfego dos dados; trata-se de um formato binário com compactação baseado no SOAP, que pode ser executado sobre o protocolo HTTP.

Utilizando Remoting via AMF, ganha-se performance, permitindo que as aplicações carreguem os dados até 10 vezes mais rápido do que se carregasse em um formato baseado em texto, como XML e SOAP. Quando se trata de uma RIA construída em Flex que atuará em um ambiente corporativo, utilizar o BlazeDS ou qualquer outro DataServices que suporte remoting é a melhor opção, principalmente quando há um grande fluxo de dados.

Características do BlazeDS

A Tabela 1 exibe as principais características do BlazeDS.

Característica

Descrição

Serviços Disponíveis

Remoting

Remoting providencia um modelo de chamadas e respostas para acessar dados a partir de aplicações em Flex ou Ajax. É possível criar aplicações que fazem requisições assíncronas para serviços remotos, incluindo serviços HTTP, baseados em web services SOAP e invocação direta em objetos Java nativos, podendo ser simples classes em Java, serviços encapsulados em beans do Spring Framework, ou então EJBs. Este modelo de serviço providencia uma transferência de dados transparente entre os tipos de dados do ActionScript (Flex) e o Java, incluindo suporte às especificações do Java 6.

...

Quer ler esse conteúdo completo? Tenha acesso completo