Esse artigo faz parte da revista Java Magazine edição 52. Clique aqui para ler todos os artigos desta edição 

me>Curso

Desenvolvimento Ajax com Java Parte 1:

O Objeto XML http Request

 

 

O desenvolvimento na web já não é mais o mesmo; tornou-se popular o termo “Web 2.0”, que reúne tecnologias novas (e algumas nem tanto) para criar formas diferenciadas de interação entre o usuário e sites, portais ou aplicações: uma Web de “segunda geração”. Dentre as várias tecnologias da Web 2.0, sem dúvida a mais importante é o Ajax – acrônimo para Assyncronous JavaScript And XML (JavaScript e XML Assíncronos). Mas, como veremos nesta série, a tecnologia Ajax é muito mais do que apenas JavaScript e XML.

Este mini-curso apresenta os fundamentos da tecnologia Ajax, sem necessariamente “ocultá-los” dentro de toolkits e bibliotecas. A idéia é iniciar mostrando a tecnologia “nua e crua”, para que o desenvolvedor tenha mais autonomia para lidar com questões de estabilidade, performance e segurança em suas aplicações Ajax. Com o progresso da série, as técnicas apresentadas serão relacionadas com sua utilização dentro dos vários toolkits que fornecem acesso fácil a recursos Ajax. Além disso, serão apresentadas outras ferramentas de produtividade, como plug-ins de depuração para navegadores web.

No dia-a-dia do desenvolvimento, a demanda por produtividade exige que tenhamos cada vez mais abstrações ou APIs de alto nível. Mas nenhuma abstração de TI é perfeita. Em toda pilha de tecnologias, detalhes da implementação subjacente freqüentemente “vazam” das camadas inferiores para as camadas superiores. Ignorar como funcionam as camadas inferiores às vezes dificulta assegurar uma alta qualidade para nossas aplicações. Por isto, esta série visa fechar o espaço entre as várias ferramentas de produtividade (toolkits, frameworks, taglibs etc.) disponíveis para o desenvolvedor Java envolvido com aplicações Ajax, e as suas bases tecnológicas.

Esta primeira parte é focada no uso do objeto XMLHttpRequest para implementar várias modalidades de transferência de informações entre um back-end hospedado no container web e um front-end baseado no navegador. Para rodar os exemplos, será necessário apenas um container web aderente às especificações Servlet 2.4 e JSP 2.0, por exemplo o Tomcat 5.0 ou superior.

As próximas partes irão focar nas demais tecnologias essenciais para aplicações Ajax – DHTML, JavaScript e XML – mas sempre sob a perspectiva de um desenvolvedor Java EE. Também não deixaremos de expor ao longo da série outras tecnologias que foram se tornando populares com a evolução do Ajax, por exemplo o JSON (JavaScript Object Notation) e a arquitetura REST (Representational State Transfer).

 

Conceituando o Ajax

O Ajax representa uma ruptura com o funcionamento padrão tradicional das aplicações web, no qual toda e qualquer interação com o servidor envolve a carga de uma nova página e o descarte completo da página anterior. A idéia é fazer com que uma aplicação web se pareça menos com uma coleção de páginas (um site web) e mais com uma aplicação gráfica desktop, em que pequenas partes das telas são atualizadas pontualmente em resposta às ações do usuário.

A idéia de se construir aplicações web “mais interativas” não é nova, e nos últimos anos houve várias tentativas de se obter este resultado utilizando tecnologias como frames HTML (incluindo os iFrames) e DHTML1. Mas todas elas, quando usadas de maneira isolada, ou esbarravam em alguma limitação do próprio navegador, ou criavam sua própria cota de problemas, limitando sua aplicabilidade efetiva

 

Nota1: DHTML é nada mais do que a capacidade de se modificar a estrutura de tags HTML de uma página programaticamente, por meio de código JavaScript embutido na própria página.

 

 

Quanto ao aspecto visual, os avanços do CSS (Cascading Style Sheets) já permitiam criar aplicações web com visual tão sofisticado quanto aplicações desktop e o JavaScript fornecia a capacidade de se reagir a eventos dos controles de formulários, ou mesmo de se “fabricar” controles inexistentes no HTML padrão.

Mas foi o objeto XMLHttpRequest, uma extensão inicialmente proprietária ao padrão ECMAScript2, que permitiu usar os recursos do HTML, CSS e JavaScript para algo mais do que criar efeitos visuais “bonitinhos” dentro do navegador. Este objeto era originalmente parte do conjunto de controles ActiveX fornecido pela Microsoft para manipulação de documentos XML, e posteriormente foi incorporado ao conjunto de objetos pré-definidos do interpretador JavaScript dos demais navegadores.

A grande novidade introduzida pelo objeto XMLHttpRequest foi a capacidade de se gerar requisições HTTP diretamente a partir do código JavaScript e depois processar os documentos retornados por estas requisições sem a intervenção do visualizador de HTML embutido no navegador web. O documento retornado seria preferencialmente interpretadocomo um documento XML, e seu conteúdo depoisprocessado pelo código JavaScript por meio da API DOM3.

 

Nota 2: Este é o nome “oficial” do JavaScript, conforme padronização da linguagem pelo ECMA. JavaScript é marca registrada pela Netscape; por isso a Microsoft chama sua implementação de JScript.

 

 

Nota 3: O DOM, ou Document Object Model (Modelo de Objetos do Documento), é uma API para manipulação de documentos XML em memória como uma estrutura de árvore, definida pelo W3C para ser independente da linguagem de programação. Esta API também está disponível para uso no lado do servidor Java EE como parte do JAXP, incorporado ao próprio Java SE na versão 1.4.

 

 

O uso do XML como formato de dados fornece ao código JavaScript independência da tecnologia empregada no servidor web e deixa aberta a possibilidade de uma aplicação inteiramente baseada em um navegador web consumir diretamente web services. Mas, como XML é na essência um formato textual, o objeto XMLHttpRequest permite ainda o acesso ao conteúdo bruto, “não-parseado” do documento retornado. Isto oferece alternativas para os que consideram o overhead gerado pelo processamento de XML (e o consumo adicional de largura de banda) demasiadamente elevados. Veremos, mais adiante, uma destas alternativas, o JSON (JavaScript Object Notation).

Os desenvolvedores do objeto ActiveX original na Microsoft estavam atentos ao fato de que uma requisição HTTP na internet poderia demorar vários segundos (até minutos) para ter sua resposta inteiramente recebida pelo navegador. Assim conceberam o XMLHttpRequest com suporte a requisições assíncronas. Em vez de o código JavaScript ficar esperando pelo documento de retorno (como uma aplicação normalmente aguarda por dados na leitura de um arquivo em disco), o método responsável pelo envio da requisição retorna imediatamente. Isso permite ao código JavaScript atender a outros eventos gerados pela interação do usuário com a página – ou, por exemplo, gerar uma animação indicando o progresso da operação.

 

...

Quer ler esse conteúdo completo? Tenha acesso completo