quarta-feira, 28 de abril de 2010

GWT (Google Web Toolkit) - Seus problemas acabaram

Esse pequeno artigo tem por objetivo fazer uma breve introdução sobre o Google Web Toolkit, explicando seu funcionamento básico, suas características, e orientar o leitor na criação de seu primeiro projeto com o GWT, o que não levará mais do que 10 minutos, os mais bem gastos de sua vida como desenvolvedor Java para a Web.

Cenário
Booooooommmmm. Isso que você ouviu foi a Internet surgindo, revolucionando nossas vidas e a forma como trabalhamos e nos relacionamos. Realmente foi uma revolução. Com elas as pessoas podiam "navegar" entre páginas, obtendo toda a informação de que precisam, a qualquer hora e em qualquer lugar. Bom, vamos pular essa parte que todo mundo já conhece e observar esse evento um pouco mais de perto.

Quando a Internet surgiu, quando ela foi projetada ou "criada" digamos assim, não se tinha idéia da proporção que ela poderia atingir, nem mesmo das mais diversas aplicações que ela teria. Quando a Internet  (enteda por protocolo HTTP e HTML) foi projetada, as pessoas achavam que o máximo que ela poderia fazer era ligar páginas de texto e apresentar algumas imagens. Ninguém tinha idéia do quanto isso poderia se expandir.

Problema
Mas (in)felizmente aconteceu. A Internet se popularizou, e as pessoas começaram a perceber o quão valiosa ela era, pois permitia o acesso a informação de forma simples, rápida e eficiente. Com isso, não demorou muito para que a Internet começasse a ser usada para o desenvolvimento de aplicações.

Pensando como um usuário: por que eu vou querer um software que precisa ser instalado e constantemente atualizado, que consome o processador e a memória do meu computador, seu eu posso ter isso na Internet, que não precisa que eu instale nada para executar meu programa (exceto o navegador é claro), não exige atualização de software e eu posso acessar de qualquer computador a qualquer hora que eu quiser?

A questão é óbvia, cada vez mais as empresas estão querendo que seus sistemas rodem na Web, apenas com um navegador, disponíveis a qualquer hora e lugar, até mesmo de um celular.

O problema, é que a Internet não foi projetada para isso. Ela não foi idealizada com esse objetivo, e desenvolver um sistema é totalmente diferente do que desenvolver um site com um monte páginas. Em resumo, é como se estivéssemos usando a ferramenta errada para fazer o nosso trabalho. Pois ela não foi projetada para fazer isso.

O resultado disso é o surgimento de milhares de frameworks, bibliotecas, API's e outras aberrações da natureza que tentam fazer o desenvolvimento de aplicações Web ser menos doloroso. O GWT é apenas mais uma delas, mas na minha opinião, dessa vez os caras acertaram em cheio.

Google Web Toolkit: O que é?
O GWT é uma ferramenta desenvolvida pela Google, que te permite desenvolver verdadeiras aplicações Web, como se fosse uma aplicação Swing, sem que você precise se preocupar com POST, GET, URL's,  etc.

E como se apenas isso já não fosse bom o suficiente, ele também reduz a quase zero a programação com HTML e Javascript. Parece mágica né? Pois é, eu ainda acho mágica :-D.

Como a mágica funciona?

Simples:
  • o navegador entende apenas HTML, CSS e Javascript;
  • para desenvolver uma aplicação séria, precisamos de uma linguagem de programação séria: Java;
Então vamos programar em Java e depois converter para Javascript e HTML! Fácil né?! Como não pensamos nisso antes?

Pode parecer loucura, mas é isso mesmo que o GWT se propõe a fazer: você desenvolve seu programa em Java e o GWT vai compilar ele e traduzir para Javascript. Dessa forma você pode usar quase todos os frameworks Java que conhece, junto com sua IDE de desenvolvimento preferida, e deixar que o GWT depois traduza isso para Javascript e HTML.

Duvido! Me mostre!
Já dizia um sábio amigo meu: "Um exemplo prático vale por mil palavras". Então vamos a ele.

Primeiro você precisará do Eclipse e do GWT. Em seguida, você pode achar interessante instalar o plugin do Eclipse, que automatiza a criação de novos projetos e outros recursos do GWT.

Depois disso, tudo que você precisa fazer é ir até o diretório descompactado do GWT e executar o comando abaixo para criar o seu projeto:

webAppCreator -out TesteGWT com.teste.testegwt.TesteGWT

Pronto, com isso a estrutura básica de seu projeto será criada. Em seguida, você pode mover o diretório que foi criado para o seu workspace do Eclipse e importar o projeto.

O básico que você precisa saber:
  • No GWT existe o lado client e o lado server. Tudo que ficar na pasta client será traduzido para Javascript. Tudo o que ficar no lado server, rodará na JVM do servidor Web que estiver hospedando a aplicação.
  • No lado cliente você só pode usar as classes do GWT e as principais classes do Java (String e por aí vai). Você não pode querer usar o Hibernate por exemplo no lado cliente, pois o GWT não saberá como traduzir isso para Javascript. No entento, no lado do servidor você pode usar todas as API's Java que você conhece, pois no server roda Java mesmo.
  • Você acessa o lado servidor fazendo chamadas assíncronas (AJAX) para o seu serviço, o que no final das contas será convertido para servlets e POST's.
  • Para cada serviço que você cria, deve haver uma interface assíncrona e outra síncrona, e certamente, uma implementação dessa interface.
Para executar o projeto, rode a tarefa "devmode" do Ant. Depois que a janela abrir, clique no botão "Launch Default Browser", aguarde até iniciar, instale o plugin do navegador que será solicitado, e voila.

Sugiro que você examine o código do projeto de exemplo e entenda o que está acontecendo. Você percebera como as chamadas para o lado do servidor são feitas através de AJAX de uma forma muito simples e transparente. Sugiro também que você dê uma olhada no site do GWT, onde você encontrará muita documentação e exemplos de como fazer coisas mais interessantes com o GWT.

Minha avaliação pessoal dessa ferramenta é que ela é extremamente eficiente, simples e fácil de usar. Sugiro fortemente que, caso você seja um desenvolvedor Java, dê uma olhada mais de perto. Existem muitas outras coisas interessantes que podem ser feitas, e o GWT facilita muito o desenvolvimento de aplicações Web.

Se tiveres alguma dúvida pode entrar em contato comigo. Terei prazer em ajudar.
Não esqueçam de comentar.

Abraços, DKeller.

Um comentário: