terça-feira, 30 de março de 2010

Tagged under: ,

Vaadin - Parte 1

Caros colegas do JavaBahia. Fui convidado por Serge e aqui estou para escrever alguns artigos técnicos. Neste início de jornada, vou começar apresentando para vocês o Vaadin. Embora meu contato com o Vaadin ainda seja inicial, estou utilizando-o a apenas uma semana, me sinto à vontade para compartilhar com vocês o que já aprendi.

O Vaadin usa internamente o GWT para renderizar sua tela. Logo, você deve pensar, ele deve funcionar de forma semelhante ao GWT. Sim e não. De fato, você irá construir toda sua user interface de forma idêntica ao GWT. Ou seja, usando paineis, definições de layouts e por aí vai. Lembra muito a forma de construir interfaces no Swing, para quem já trabalhou com esta plataforma quando ainda não existia editores visuais.

Para aqueles que nunca viram ou usaram o GWT, veja abaixo um exemplo bastante simples de uma tela contendo um botão que exibe um alerta na tela. Exemplo extraído do sítio do GWT.

public class ButtonExample implements EntryPoint {

public void onModuleLoad() {

Button b = new Button("Jump!", new ClickHandler() {

public void onClick(ClickEvent event) {

Window.alert("How high?");

}

});

RootPanel.get().add(b);

}

}

No Vaadin a história é muito parecida. A diferença é que você estará usando os widgets do próprio Vaadin e não do GWT. E o que são widgets? Simples, são os componentes que você usa para construir a interface. Um botão é um widget. Um campo texto também, uma janela, uma lista.

Há ainda uma diferença marcante entre o uso do GWT puro e do Vaadin. Esta diferença é, para mim, a mais peculiar e que torna o uso do Vaadin mais interessante. Trata-se da comunicação entre servidor e cliente. No uso do GWT você faz chamadas Ajax para obter dados do servidor e preencher campos da tela ou apresentar outros tipos de informações. Você criará classes especificamente para realizar esta comunicação.

O GWT chama essas classes de GWT RPC, ou GWT Remote Procedure Call. Neste esquema você precisará criar duas interfaces e uma classe: uma interface que estende de RemoteService. Outra que contém os mesmos métodos da interface anterior, mas com os métodos com assinatura diferente e a classe concreta que implementa de fato a obtenção dos dados do servidor. Não entendeu? Dá uma olhada no próprio exemplo do Google em http://code.google.com/intl/pt-BR/webtoolkit/doc/1.6/tutorial/RPC.html.

O Vaadin, então, é differente? Novamente, sim e não. O Vaadin também se comunica por Ajax com o cliente, mas aqui está a principal diferença: de fato, a interface do Vaadin é construída no próprio servidor e enviada para o cliente que é responsável em construir os widgets informados. Ou seja, se você precisa apresentar uma lista (combobox) na tela contendo as informações de uma tabela, você a preenche no servidor e o Vaadin manda para o cliente a ordem: crie um combobox com tais dados. Observe que também todo evento lançado por um widget também é tratado no servidor. Neste momento, aposto que você deve estar pensando: caramba, então este Vaadin deve ser muito lento, sempre fica enviando dados para construir a tela entre servidor e cliente.

Da experiência até o momento que tive, não verifiquei esta lentidão. Para uma intranet, o Vaadin me parece ser uma excelente opção. O que me parece ainda melhor é a produtividade. A construção da interface é rápida e não há necessidade de se criar classes adicionais para realizar a comunicação servidor-cliente. Este aspecto fica transparente para o desenvolvedor.

Mas vamos deixar de tanta conversa e ver logo um exemplo de uso do Vaadin, obtido no sítio dos desenvolvedores.

public class MyprojectApplication extends Application {

@Override

public void init() {

Window mainWindow = new Window("Myproject Application");

Label label = new Label("Hello Vaadin user");

mainWindow.addComponent(label);

setMainWindow(mainWindow);

}


}

Inicialmente, você deve observar que sua classe de entrada, ou seja, aquela que inicia sua aplicação, deve estender da classe Application, que faz parte da arquitetura do Vaadin. Uma vez criada sua classe, você deve sobrescrever o método init e, partir daí, iniciar a construção de sua interface. Aqui você pode usar todos os widgets disponíveis do Vaadin. Não conhece todos oswidgets? Então acesse o endereço http://demo.vaadin.com/sampler/ e conheça todos os componentes de interface.

Mais uma sugestão, use também o plugin para o Eclipse do Vaadin, pois fornece algumas facilidades para a criação de sua aplicação. Este primeiro artigo serviu apenas para apresentar o framework e aguçar sua curiosidade. Nos próximos, iremos apresentar alguns widgets e peculiaridades deste framework. Até lá!

1 comentários:

Cleber Santos disse...

Marlon Silva Carvalho parabéns pela explicação. Estou conhecendo agora o Vaadin que me foi indicado pelo Rafael Nunes da Globalcode aqui de São Paulo, e já estou gostando muito dele.
Fico no aguardo dos próximos posts!