sábado, maio 27, 2006

JavaOne e mais Ajax

Ajax
Ontem o tempo estava bom para pesquisar e resolvi dar uma olhada como andavam as coisas sobre Ajax pelo mundo a fora. Claro, muita coisa existe e, obviamente, não dá pra olhar tudo. Assim, vai abaixo os comentários sobre o que eu andei olhando e minhas percepções.
Vários frameworks e APIs existem para o Ajax, como o Backbase, Dojo, Rico, GWT, DWR e outros. O DWR eu já tinha ouvido falar e consiste em uma API que permite a chamada de métodos remotos assincronamente, usando as funções de callback, as quais eu já comentei no post passado. Basicamente o DWR é composto de um conjunto de scripts que são atachados a página e um componente que roda no servidor, ou um servlet. Ele cuida do marshalling de dados entre as partes e as funções callback são o elo de ligação entre o java e o javascript. Bom, mas isso todo framework Ajax faz! OK, mas o DWR possui soluções boas e exemplos de como integrá-lo a outros componentes mais "pesados", como o JSF e o Struts. Outra API é a Backbase. Ela também oferece os recursos do DWR mas agrega componentes próprios, os quais funcionam como taglibs do JSF. Fora isso ambos são iguais. O Rico é outro framework que objetiva RIA (Rich Internet Applications) com Ajax. Olhando os exemplos do site, mais parece que os caras estão tentando fazer um "Power Point" com as aplicações. Vi muito efeito de drag-and-drop, mas muito pouco sobre coisas úteis para desenvolvedores de sistemas de dados, como integração com frameworks (JSF, Struts, WebWork, ...) ou interação com elementos de back-end (EJBs, Webservices, ...). O Dojo é mais num no cenário. Achei o site bastante "fraco", principalemente para algo "ajaxiano". Finalmente, achei o GWT, ou melhor dizendo o Google Web Toolkit. Mesmo na versão beta, esse vale um post no Coisiboa. Em suma, com ele você pode até esquecer que programa na web - nada mais de HTML se não quiser. Ele possui um framework próprio de componentes UI, tal como o Swing. Também possui um bom suporte a eventos e, pasmem, traduz seu código-fonte em Java para Javascript com muita precisão. O Ajax vem embutido (pra variar) com as funções callback. Também tem uma boa documentação, exemplos e utilitários para criar aplicações de template e projetos no Eclipse (mas não é um plugin, é um utilitário de linha de comando). Obviamente, tem limitações: não suporta sintaxe Java 5, faz restrições em funcionalidades e APIs nativas do Java (como List, Threads...) e tem que cuidar coisas como serialização de objetos. Fiz uma aplicação de teste com ele e gostei do resultado.

JavaOne
O JavaOne rolou esse mês e, claro, o assunto não poderia ser outro: o J2EE 5 e o Mustang. O J2EE saiu e muitas coisas estão para mudar. Dicas sobre como usar corretamente (os famosos) blueprints nos vastos recursos da plataforma (annotações, defaults, injeção de recursos, ...) e como integrar ferramentas foram tópicos discutidos nas sessões do evento. Sobre o Mustang as boas novas foram, claro, para os recursos desktop. O suporte nativo para TrayIcon, o gerenciador de layout GroupLayouyt (que ainda deve ser incluso), e a classe Desktop, para integração nativa de recuros do SO. Outros "improvements" menores como ajustes na API 2D e gerenciamento de threads do Swing. Ben Galbraith ainda deu boas dicas sobre como usar as Actions do Swing (e isso me lembra muito o que estou implementando no Merlin) e como externalizar recursos como layout e aparência no Swing com o uso de CSS. Finalizando, indicou fortemente o uso de gerenciadores de layout como o GroupLayout (do Matisse Netbeans) e o FormLayout (do JGoodies).

Como disse, o Ajax veio pra ficar. Quer saber mais sobre ele é só procurar no Google. Um bom início é o Ajaxian e o Ajax Resource Developer Center. O J2EE 5 pra mim não é novidade, pois já usamos ele a um bom tempo na 3Layer. O que muda é que agora as coisas podem acontecer "sem poréns". O Mustang tá no forno. Não me atrevi a usar ele na íntegra, pois "core" é "core". Assim, somente no ambiente de teste. Sabe como é: é bom, mas temos tempo ainda.

Alguns links relacionados
http://java.sun.com/javaone/sf/sessions/general/javablueprints_thursday.jsp
http://java.sun.com/javaone/sf/sessions/general/mustang_thursday.jsp
http://java.sun.com/javaone/sf/sessions/general/eight_ways_dev_swing.jsp
http://java.sun.com/javaone/sf/sessions/general/intro_ajax.jsp
http://java.sun.com/javaone/sf/sessions/general/sun_friday.jsp
Prototipe JavaScript Framework
Scriptaculous (outro framework Ajax)

0 comentários: