Concurso “The Biggest Ever GWT Giveaway Contest!” API’s Google para o GWT
set 11

Hoje dou início a uma série de artigos introdutórios sobre GWT, com os quais pretendo mostrar melhor as características da tecnologia ao mesmo tempo que com o decorrer desta série iremos construindo um aplicativo web completo.

Neste primeiro artigo irei escrever basicamente sobre o que é GWT, o porquê esta tecnologia é uma opção para o desenvolvimento de aplicações web e, por fim, irei mostrar algumas de suas características básicas.

 

O que é GWT ?

 

Basicamente GWT (Google Web Toolkit) é um conjunto de ferramentas de desenvolvimento, uma API e um conjunto de componentes visuais projetadas para o desenvolvimento de aplicações Web. A principal diferença entre GWT e outros frameworks é que o código que é executado no browser é feito em Java ao invés de Javascript. Por mais que Javascript seja uma linguagem de programação com muitos defensores, utilizar Java para implementar a camada de apresentação possui várias vantagens tais como: a linguagem de programação Java é fortemente tipada e o seu código é compilado, assim, muitos erros são encontrados em tempo de compilação; existem muitas IDEs (excelentes, conhecidas e gratuitas) para o desenvolvimento em Java; por fim, a quantidade de programadores Java é muito maior do que a quantidade de programadores Javascript.

Além das razões citadas acima, o código produzido por GWT é compatível com os browsers mais utilizados e desenvolver código HTML+CSS+Javascript que funcione bem em todos os browsers não é uma tarefa das mais triviais (quem já tentou isso sabe do que eu estou falando).

 

Por quê GWT ?

 

Fazer um sistema de informação em Java envolve muito mais tarefas do que simplesmente a codificação do sistema. Atualmente até mesmo a tarefa de escolher as tecnologias que serão utilizadas em cada camada da aplicação não é das mais simples. GWT, por exemplo, é só mais um framework para a camada de apresentação de uma aplicação, existem muitos outros bons frameworks para a mesma finalidade (ex: Struts, JSF, Flex, Silverlight, Wicket, etc).

Com os novos frameworks (principalmente Adobe Flex, Microsoft Silverlight e Java FX) a questão mais difícil de responder é HTML ou não HTML ? A grande diferença destas novas opções é que o seu resultado é muito mais bonito do quê uma página HTML tradicional (e isto é obtido com muito menos esforço). Porém, o bom e velho HTML ainda é (e será por muito tempo) útil, pois seja em desktops quanto em dispositivos móveis, qualquer coisa que tem conexão com a web possui automaticamente alguma forma de mostrar conteúdo HTML (e Javascript). Por fim, através do seu hosted mode, GWT permite que os desenvolvedores fazer debug à camada de apresentação das suas aplicações Web ! Além de também ser possível construir testes de unidade (com o JUnit por exemplo).

Sendo assim, GWT é a opção para quem quer publicar suas aplicações Web em HTML, porém prefere codificar em Java do quê em Javascript.

 

Características do GWT

 

Compilador de Javascript:

A característica mais interessante do GWT é o seu compilador de Java para Javascript. GWT converte um subconjunto (bastante grande) da linguagem de programação Java para Javascript. Basicamente toda a sintaxe da linguagem Java é suportada (inclusive a sintaxe Java 5, suportada a partir do GWT 1.5) com algumas poucas exceções:

  • nem todas as classes da biblioteca padrão de Java são emuladas, ex: LinkedList, StringTokenizer, Logging e BigNumber são algumas das classes que estão faltando. Uma lista completa destas classes pode ser vista em http://code.google.com/

webtoolkit/documentation/jre.html;

DeveloperGuide.Fundamentals.html#LanguageSupport

 

Economida de espaço:

Além disto uma preocupação constante da equipe do google enquanto desenvolvem o GWT é em torná-lo eficiente, produzindo código Javascript rápido e o menor possível. Para isto, uma das medidas tomada para otimizar o espaço ocupado pelo javascript gerado é produzir apenas o código que é utilizado, para isto, todo o código produzido é analizado para determinar se existe alguma parte que nunca é executada, qualquer trecho que não for executado é automaticamente removido do javascript gerado. Além disto, só são incluídas as funções da biblioteca que são utilizadas.

Outra característica que poucos programadores conhecem a respeito do comportamento dos browsers é que estes abrem normalmente uma ou duas conexões para fazer o download dos arquivos Javascript incluídos em uma página. Este download é feito de forma sequencial. Ou seja, há um tradeoff para os programadores Javascript tradicionais entre modularidade e velocidade. No caso do GWT, todas as funções Javascript são agrupadas em um único arquivo de modo a tornar mais ágil este processo de download. Por fim, todo o código gerado é ofuscado e compactado (utilizando um filtro gzip no servidor web), deixando o tamanho final dos artefatos muito menor do quê provavelmente um programador conseguiria fazer manualmente.

 

Múltiplos browsers:

Quem já precisou desenvolver algum código em Javascript para múltiplos browsers ou mesmo teve a oportunidade der ler algum código feito para este fim, provavelmente deparou-se com uma infinidade de “ifs” que tentam determinar qual o browser que está acessando a página para realizar a mesma tarefa com pequenas modificações. Os desenvolvedores do GWT além de isolar os programadores deste tipo de problema ainda tiveram uma idéia bastante interessante, o compilador de Javascript gera uma versão da aplicação para cada tipo de browser diferente e o servidor web fornece para cada cliente apenas a versão adequada ao seu browser.

 

Múltiplos idiomas:

Da mesma forma que o GWT gera uma versão diferente da aplicação para cada browser, a mesma estratégia é utilizada caso você utilize internacionalização em sua aplicação. Desta forma, o compilador Javascript gera a combinação de todos os idiomas com todos os browsers possíveis, assim, cada cliente recebe apenas a versão da aplicação para o seu browser e para o seu idioma.

 

Image bundle:

Um último recurso bastante interessante e novo (pois foi adicionado ao GWT apenas na versão 1.5) é o image bundle. Com ele é possível agrupar várias imagens em apenas um arquivo (normalmente faz sentido agrupar as mesmas imagens de uma página). Assim ao invés do browser abrir várias conexões TCP para fazer o download das imagens, só é necessário abrir uma conexão e, o código HTML+CSS gerado, automaticamente “quebra” as imagens e as exibe individualmente.

 

Conclusão

 

Neste artigo escrevi uma breve introdução à tecnologia GWT e às suas principais características. Espero ter mostrado que este é um conjunto de ferramentas bem interessante e que deve ser levado bastante a sério como alternativa para a construção dos seus próximos projetos. Além disto, eu gostaria de ressaltar que este é um projeto em forte desenvolvimento e que tanto os programadores do Google quanto à comunidade de usuários é bastante solícita e ajuda bastante nos forums oficiais (http://groups.google.com/group/Google-Web-Toolkit). Por fim, este é apenas o primeiro artigo de uma série, onde mostrarei os principais conceitos e faremos iterativamente uma aplicação web do começo ao fim, utilizando, é claro, GWT.


Deixe uma resposta