Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Artigo WebMobile 9 - Construindo um WebChat com JAVA e AJAX
Artigo Originalmente publicado na WebMobile 9.
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?

![]()
Construindo um WebChat com JAVA e AJAX
Leitura Obrigatória: WebMobile 5, Entendendo o AJAX.
...e então o AJAX explodiu... Rapidamente saiu do status de curiosidade para o de grande promessa. E a promessa logo se tornou realidade. Hoje o AJAX é um dos assuntos mais comentados nas rodas dos desenvolvedores web. Está presente nos mais diferentes tipos de sites e sistemas web. Ele também se tornou uma das bases do que se convencionou chamar de Web 2.0: uma idéia com nome pretensioso cuja proposta básica é a de que os sites se tornem tão interativos que os usuários não precisem mais instalar programas em seus computadores, mas os utilizem diretamente pela web. Uma página e componentes interativos seriam baixados de um site e seriam a interface para o usuário usar um programa cuja boa parte do código roda no servidor. O AJAX é uma das ferramentas usadas para implementar esta idéia que põe em prática um velho slogan do JAVA: "The Network is the Computer" (A rede é o computador).
Entretanto, para esse cenário se tornar realidade foi preciso simplificar o uso do AJAX e torná-lo mais "acoplável" ao código que roda no servidor. A manipulação direta do XMLHttpRequest e a necessidade de definição de documentos XML para cada requisição transformavam o uso do AJAX numa tarefa de baixa produtividade e de difícil manutenção. Mas a comunidade open-source é rápida, e logo dela surgiram diversas bibliotecas com o objetivo de facilitar o uso do AJAX em grandes sistemas. Uma das bibliotecas que revolucionaram a forma de usar o AJAX é chamada de DWR (Direct Web Remoting).
Neste artigo será apresentada a arquitetura do DWR e veremos como utilizá-la para criar aplicações de forma muito mais rápida e simples. Também será descrito em detalhes os passos necessários para a utilização do DWR em uma aplicação AJAX. Será usado um servidor web Java baseados no padrão Servlet 2.3. O artigo assume que o usuário saiba como utilizar este tipo de servidor para criação de contextos e manipulação de arquivos de configuração. Como esta implementação usa generics para diminuir o tamanho do código, você precisa da versão 1.5 da máquina virtual Java para fazer o exemplo funcionar.
DWR e objetos distribuídos
O nome dado ao DWR (Direct Web Remoting) é a primeira dica sobre sua arquitetura. Sua idéia central é a criação de um mecanismo de objetos distribuídos baseado nas tecnologias que possibilitam a existência do AJAX. Assim, quem já conhece tecnologias como CORBA e Java RMI vai se sentir bastante à vontade com os termos usados para descrever a utilização do DWR.
Como todo mecanismo de objetos distribuídos, o DWR baseia-se na geração de objetos proxy (também chamados de Stubs) no lado cliente e na operação de despachantes (dispatchers) no lado servidor. Proxy é um dos padrões de projeto clássicos (design patterns) normalmente usado em sistemas de objetos distribuídos. Neste tipo de sistema, os objetos proxy são usados para implementar referências que apontam para objetos hospedados em máquinas remotas. Um proxy implementa a interface de um objeto hospedado num servidor e consegue "esconder" do programador todo o processo de comunicação pela rede. Assim, é possível trabalhar com objetos remotos da mesma forma como se trabalha com objetos "normais". Com isso o programador não precisa mais se preocupar com a complexidade dos detalhes de comunicação e pode se concentrar nos requisitos funcionais do seu sistema.
A "mágica" que o DWR faz é justamente a criação automática de proxies em JavaScript para uso de objetos Java em um servidor de aplicações web. O DWR usa XML e o XMLHttpRequest para serializar e trafegar automaticamente os dados que correm entre os objetos Java e seus correspondentes
O esquema funciona de acordo com a Figura 1. O código Java/JavaScript existente na figura é o suficiente para ver um exemplo do DWR funcionando. O objeto folhaPag no código JavaScript é o proxy criado automaticamente pelo DWR que pode ser usado para fazer chamadas a um objeto instanciado no contexto do servidor web como se o mesmo estivesse presente na memória do browser! É obvio que a natureza assíncrona do AJAX traz uma certa incompatibilidade com o modelo clássico de RPC/RMI. No caso da figura, observe que ainda é necessário o uso de funções de callback.
"
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Marcelo Burgos Morgade Cortizo
É Analista de Sistemas Pleno da PETROBRAS S.A., Msc. em Redes de Computadores e entusiasta do Java há quase 10 anos.



