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  que 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.


2 Responses to “Introdução ao GWT”

  1. gamarra Says:

    Parabéns pelo artigo, bastante direto e claro.
    Estou ansioso pelos proximos.

    Deixo aqui algumas dúvidas que tenho sobre o uso do gwt.
    Não como sua obrigação de responder, mas apenas para compartilhar experiências :-)

    Integração com outros frameworks: Hoje eu utilizo o spring com o hibernate e acho um conjunto excelente para o backend da aplicação. Como seria a integração do gwt nesse contexto, existe uma padrão para essa integração ? não necessariamente com a dobrabinha spring/hibernate, mas como outros frameworks voltados para o backend da aplicação.

    Segurança da aplicação: o acegi vem de lambuja no spring e seu uso é muito simples. Novamente como integrar o gwt nesse contexto, ou, existe alguma solução especifica para o gwt?

    Aplicação quick start: muitos frameworks vem com uma aplicação modelo para ser estudada e ampliada, novamente no caso do spring, o appfuse é o melhor exemplo. Vc conhece alguma coisa nesse sentido para o gwt?

    Por fim, na maioria das aplicações web, existe uma parte institucional, composta geralmente de texto e imagens e uma parte voltada a aplicação,com consultas e cadastros, geralmente disponí­vel após um login, exemplo dessas aplicações, portais de bancos. Como o gwt se encaixa nesse contexto, deve-se fazer todo o site baseado em gwt ? ou usar algo mais tradicional para essa parte texto/ imagens como jsp/jsf e deixa a cargo do gwt apenas a parte da aplicação?

    Abraços e até o próximo artigo.

  2. Ely Says:

    ola pessoal….. Antes de mais agradecer o suporte que vocês tem dado ao pessoal…. :p
    Estou com Problemas:(, comecei a usar o GWT a pouco tempo, tenho o GWT a funcionar com o eclipse e uso como servidor o apache 2.2 . Como sou um 0 a esquerda nessas andanças Precisava de dicas…
    Tudo tava bem até que “com.google.gwt.user.client.rpc.StatusCodeException”…….
    o codigo responsavel seria este ”
    Statement stm = con.createStatement();// instancia um statment

    ComandosSql comandosSql = new ComandosSql();// intancia um comandosSql
    ” Alguem me pode ajudar??

Leave a Reply

You must be logged in to post a comment.