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á!

quarta-feira, 24 de março de 2010

Tagged under: , , , , , , , , , , ,

LinguÁgil 2009 - Misturando Linguagens e Agilidade - VÍDEOS das palestras

O LinguÁgil 2009 - Misturando Linguagens e Agilidade é um evento reune algumas das principais comunidades de TI da Bahia, buscando estimular aprendizado e discussões em torno de linguagens de programação e metodologias ágeis.

Em www.linguagil.com.br estão disponíveis todas as palestras realizadas na edição 2009, realizada em novembro do ano passado em Salvador. Tem muita coisa legal, vale a pena conferir:
  • Manifesto 2.0 - Alexandre Gomes (SEA Tecnologia)
  • Extreme Programming (XP) na Prática - Dairton Bassi (AgilCoop/Neurobox)
  • Ruby e Rails, um ecosistema perfeito - Daniel Lopes (Área Criações)
  • FrameWARks PHP - Cake, Zend, Code Igniter, Symfony - Márcio Albuquerque, Leonardo Thomas, Marcelo Curi, Sandro Franco (Serpro)
  • Linguagens para a Máquina Virtual Java (JVM) - Groovy, Ruby, Scala, Ioke e Clojure - Felipe Rodrigues (Fratech)
  • Desmistificando BI com Pentaho - Open Source Business Inteligence - Thiago Mariano (Serpro)
  • O Ágil e o Mercado - Henrique Landim (Partner Process)
  • As novidades do JSF 2.0 / JSF Scrum Toys - Alberto "Spock" Lemos (Globalcode)
  • PHP não é coisa de moleque - Felipe Ribeiro (UFCG)
Estamos trabalhando - junto com os grupos AgileBahia, RailsBahia, PHPBahia e PythonBahia - para a realização do LinguÁgil 2010 no 2o semestre (setembro). A lista http://groups.google.com/group/linguagilcolaboracao foi criada para quem quiser colaborar. Toda contribuição será muito bem vinda!