GWT (Parte 1) – Visão Geral Janeiro 4, 2007
Posted by viniciusdiniz in GWT, Java, Web.trackback
GWT é uma ferramenta para construção de interfaces Web mais amigáveis e rápidas. Guarde isso… interface… essa é a proposta do GWT, pelo menos por enquanto. Tenho trabalhado e utilizado o GWT em alguns projetos. Gostaria de passar algumas lições que já aprendi com esse produto que está tão em evidência no momento.
Vou começar destacando os principais pontos que todos deveriam saber para começar a utilizar o GWT.
1. Tudo que você codifica em java na parte cliente, vira javascript (Ver o tópico http://loogica.wordpress.com/2006/11/30/gwt-voce-entendeu/)
Como tudo da parte cliente vira javascript, é muito bom você ter uma boa noção de javascript para não querer usar Reflection, Serialização, etc na parte cliente. Pois qualquer pessoa que conheça javascprit pode ver que não se consegue ainda fazer essas coisas com essa linguagem.
2. GWT é para a parte da interface do seu sistema.
O GWT foi feito para facilitar e agilizar o processo de desenvolvimento das interfaces de aplicações WEB utilizando AJAX. Não é uma boa prática embutir o código de lógica do negócio nas classes do lado cliente da aplicação. É muito comum as pessoas, utilizando GWT, colocarem toda a lógica da aplicação junto com a lógica de apresentação e só utilizarem o lado servidor para executar lógicas específicas de persistência.
Ex: Ter toda a lógica de validação, verificação de privilégios, relacionamentos nas classes do lado cliente e só chamarem uma função insertUser(User u); no lado servidor. Que vai ter somente a persistência desse objeto User.
Meu comentário sobre do post http://loogica.wordpress.com/2006/11/30/gwt-voce-entendeu/
“O que acontece com isso? Perda de escalabilidade. Se você quiser integrar sua aplicação com um ambiente desktop, mobile, etc etc você terá que reescrever toda a lógica de negócio e pior, se tiver que alterá-la, vai ter que repetir a alteração para todos os ambientes, pois o GWT não se aplica a outro ambiente sem ser Web.”.
O problema, na minha opinião, está em tudo ser Java. Todo o código são classes Java e os desenvolvedores perdem a referência do conceito MVC. Sempre fomos acostumados a fazer os famosos códigos HTML/Javascript que correspondiam a camada de apresentação da aplicação. Com isso nunca nos preocupamos com a separação desta.
3. Tente entender como o produto funciona e não como utilizá-lo.
É primordial entender como as coisas são feitas no produto. Como classes Java viram javascript e tem o mesmo comportamento no browser? Como é feita a comunicação cliente/servidor? Como em um evento javascript, é transformado em uma chamada ao servidor?
Entendendo como o produto funciona, no final, você vai saber muito bem como utilizá-lo.
4. Utilização e leak de memória no browser.
A evolução das aplicações web está acontecendo em uma velocidade que está difícil de acompanhar. Mas não há como negar que existe uma tendência muito grande de se fazer tudo web. Hoje em dia já existem várias aplicações web que são cópias de aplicações desktop.
O GWT foi no ponto certo. Pegou uma área ainda meio crua no mercado que é a utilização de ajax e a construção de interfaces mais amigáveis em HTML/Javascript. Junto com isso, existe a possibilidade de organização, reaproveitamento e toda uma organização de código que antes eram bem mais complicadas de se ter.
Finalmente, com interfaces cada vez mais poderosas e complexas, automaticamente aumentam o consumo de memória de quem exibe essa interface, que no caso é o browser. Como no GWT tudo vira JavaScript, é bom pensar em como é feita a utilização de memória desse código. Um exemplo básico de leak de memória em javascript utilizando o IE é explicado no link http://javascript.crockford.com/memory/leak.html . Quando criarem um painel e não forem reutilizá-lo, pensem se a memória que o mesmo utiliza está sendo desalocada.
Experimente abrir o Firefox e deixar por um ou dois dias uma aba com o GMail aberto para você ver qual será o consumo de memória do Firefox (válido para IE, Opera, etc).
Se algo estiver equivocado, incompleto, ou se quiserem complementar, fiquem a vontade para escrever.
Essa foi a primeira parte. Vou publicar mais alguns pontos, boas práticas, bibliotecas, etc sobre GWT.
Abraços!
hjfg
Eu não gostei do artigo.
Achei que só serve para desenvolvedores Javascript\HTML, não para quem mais interessa: o público de desenvolvedores Java.
É, o artigo não foi bem pro lado Java da coisa, mas que GWT é uma super ferramenta, isto é. O bom de GWT é que você programa apenas em Java (exceto quando se usa códigos JNI), e consegue bolar as interfaces que você deseja fácil-fácil, sem precisar conhecer HTML e Javascript, além de também possibilitar a construção de aplicações cliente/servidor robustas (basta saber fazer). =)
Eu não acho problema em todo o código do GWT ser escrito em Java, muito pelo contrário. O Google foi muito inteligente em focar nos programadores Java, pois além de Java ser uma linguagem forte e ter um número sempre crescente de programadores, não é todo mundo que tem tempo (ou paciência) pra aprender/construir uma aplicação utilizando diretamente Javascript ou AJAX (que é totalmente hardcore pra fazer “na mão”).
Um abraço
Primeiramente gostaria de agradecer os comentários e avisar também que o endereço do blog mudou para http://www.loogica.net/wordpress .
Não sei se fui claro no meu post, mas o que quis chamar a atenção é que justamente as pessoas que usam o GWT acham que só precisão ter conhecimento Java e com isso acabam misturando as coisas.
O foco do post realmente não foi Java. Acho que devemos sempre ficar antenados nas tecnologias que aparecem. Na minha opinião não adianta focar só no Java, ainda mais em desenvolvimento Web. Saber também HTML, JavaScript, CSS, entre outras é um bom diferencial. E no post quis explicitar exatamente isso. Com o “vício” que temos já de programar em Java, as vezes não damos conta que o GWT, na minha opinião, não é puro Java e sim uma nova forma de escrever JavaScript pegando alguns pontos da linguagem Java vide que o código da parte cliente é “compilado” pelo GWT para virar JavaScript. Pois, conhecendo JavaScript, vejo um mapeamento direto de tudo o que eu faço no GWT para como ficaria em JavaScript. Lógico que a organização, manutenção e entendimento do código ficam bem melhores com o código em “Java”.
Pode parecer estranho mas existem milhões de restrições no código da parte cliente do GWT justamente por esse código ser transformado em JavaScript.
E para finalizar, falar de GWT e não focar em JavaScript/Html é quase que impossível, já que o propósito dele é justamente facilitar a construção de interfaces HTML com JavaScript.
Pelo menos eu construí essa opinião pelo trabalho que já desenvolvi utilizando o GWT.
Finalizando, concordo que nem todo mundo deve conhecer tudo de JavaScript e Html para utilizar GWT, mas devíamos pelo menos conhecer o que acontece com o nosso código “Java”.
Quanto mais opiniões, melhor para o blog, pois enriquece o conteúdo do post.
Valeu!
Abs
Bom, achei o artigo interessante e ao mesmo tempo informal, o que o torna fácil de ler, eu estou pesquisando sobre GWT e ainda não sei muito sobre JavaScript ou HTML, mas quero aprender, e peço aos programadores que já tem experiência, que me indiquem bons livros, me dêem conselhos e se possível postem o msn para discutirmos possíveis dúvidas e troca de informações, conto com a colaboração de vocês programadores.
Desde já agradeço a atenção.
Putz, eu sou desenvolver Java (Swing) há 6 anos e também desenvolvo para web somente com PHP.
Sinceramente continuo completamente perdido sem entender como funciona realmente esse GWT.
Até criei um projetinho no Netbeans (sou usuário do netbeans há 5 anos) e GlassFish, mas mesmo assim não entendi ainda.
Acho que vou continuar lendo por aí pra ver o que consigo entender.
Como fazer para rodar um projeto GWT no ie7 ou firafox? Já tentei sem conseguir…