quinta-feira, 10 de dezembro de 2009

Anunciado o lançamento oficial do GWT 2.0

Google anuncia em 08/dez/2009 o aguardado lançamento do GWT 2.0: http://googlewebtoolkit.blogspot.com/2009/12/introducing-google-web-toolkit-20-now.html
Tradução para o português, por Fábio Miranda:

Introduzindo o SpeedTracer

Speed Tracer é uma nova e poderosa ferramenta de análise de performance para o Chrome que dá a você insights sem precedentes sobre o funcionamento interno de qualquer aplicação web - não apenas aquelas criadas com o GWT. Quer descobrir porque sua aplicação parece uma lesma? SpeedTracer pode ajudá-lo a encontrar a resposta. Veja uma demonstração no video:

(Ah, o SpeedTracer foi desenvolvido com o GWT!)

O que há de novo?

Este video destaca algumas das novas funcionalidades bacanas trazidas pelo GWT 2.0:

Abaixo são descritos em detalhes algumas das novidades do novo GWT SDK (kit de desenvolvimento GWT) e do novo GPE (Google Plugin para o Eclipse).

Mais eficiência com o novo Modo de Desenvolvimento e Compilações Intermediárias

  • GWT 2.0 melhora enormemente o cliclo de edição/atualização ao introduzir um novo método de depuração chamado modo de desenvolvimento, que permite que um projeto seja debugado com o navegador de sua escolha - sim, o seu navegador, e não um imposto pelo GWT! O modo de desenvolvimento conta com um novo plugin para o navegador, chamado Plugin de Desenvolvimento GWT, que torna possível ao projeto Java criar uma ponte de debug para qualquer navegador que tenha o plugin instalado. Detalhes técnicos à parte, esta nova forma de debugar simplesmente parece melhor.
  • Ao colocar a experiência de debug diretamente no navegador, o modo de desenvolvimento torna possível usar as ferramentas de desenvolvimento próprias de cada navegador, em combinação com o debug do Java. Ou seja, agora você pode debugar código Java no Firefox, enquanto simultaneamente usa grandes ferramentas como o Firebug, para visualizar as estruturas DOM e experimentos com CSS. O mesmo vale para o Ditto/Safari e assim por diante com os demais navegadores.
  • O novo GPE inclui suporte aperfeiçoado para iniciar e controlar o modo de desenvolvimento, incluindo uma nova View que registra as mensagens do logging diretamente numa Eclipse View (nota do tradutor: em versões anteriores, o log de mensagens do GWT era feito através do Hosted Mode). 
  • É possível iniciar o modo de desenvolvimento manualmente, através de uma interface Swing, que pode rodar completamente fora do contexto do eclipse, incluindo outras IDEs.
  • O modo de desenvolvimento também suporta debug em múltiplos navegadores, significando que é possível conectar a mais de um tipo de navegador em uma única sessão de debug. É uma ótima forma de rapidamente assegurar que o projeto funciona corretamente com a maioria dos navegadores, sem a necessidade de reiniciar o depurador Java.
  • E finalmente, o modo de desenvolvimento funciona através de uma rede. Por que isto é legal? Porque você pode facilmente testar os navegadores em sistemas operacionais diferentes daquele que você está desenvolvendo. Por exemplo, suponha que você esteja desenvolvendo em uma IDE no Linux. É possível, em uma simples sessão de debug, conectar através da rede para visualizar a aplicação que você está executando - e depurá-la - no Internet Explorer em um Windows, bem como no Safari em um Mac OS X, ou Chrome no Windows, ou Firefox no OS X... O ponto é que você pode desenvolver usando a plataforma de sua preferência enquanto pode debugar em cada combinação de navegador / sistema operacional que seus usuários possam ter.
  • Caso você necessite compilar frequentemente o código para Javascript - apesar de que esperamos que o modo de desenvolvimento irá reduzir dramaticamente que você tenha essa necessidade - você agora pode contar com a flag -draftCompile, a qual acelera o tempo de compilação, pois deixa de lado as otimizações de código. Para ser claro, você definitivamente não deverá mais fazer deploy de Javascript compilado, o que pode poupar tempo durante builds contínuos intermediários (que não sejam builds de produção).

Interfaces Declarativas com o UIBinder

  • GWT 2.0 introduz numa nova forma mais produtiva e poderosa de construir codigo de interfaces de usuário, chamada UIBinder. Ela facilita a separação dos aspectos visuais da UI da lógica da aplicação. Para construir a UI, simplesmente junte HTML e elementos de widgets GWT de forma declarativa em um template XML UIBinder (um arquivo na forma *.ui.xml). Você pode então colocar a lógica da aplicação em um arquivo *.java correspondente.
  • UIBinder torna muito mais fácil envolver designers web mais diretamente no workflow de desenvolvimento. Por exemplo, desenvolvedores podem copiar e colar mocks HTML fornecidos por um web designer. 
  • Nós também temos notado que alguns designers web gostam de editar templates UIBinder diretamente e usar o ciclo de edição/atualização rápido do modo de desenvolvimento à medida que eles fazem experiências com a UI. É bem mais divertido modelar usando widgets interativos do que mocks HTML passivos.
  • Incorporar seus próprios widgets customizados em um template UIBinder é exatamente igual a usar quaisquer um dos widgets nativos do GWT.
  • UIBinder também ajuda a prevenir bugs subtos, como erros de digitação dos IDs, de colocar em produção código com bugs, ao validar em tempo de compilação todas as referências cruzadas entre os pares de arquivo .ui.xml e o .java.
  • O GPE agora vem com wizards UIBinder, auto-completar de código, e refactoring para ajudar a usar o UIBinder de forma eficiente.

Visual perfeito ("pixel-perfect") com painéis de layout

  • Alcançar o visual (look and feel) exatamente do jeito que você deseja é algo que tradicionalmente requer artemanhas e truques com HTML e CSS. Antes de GWT 2.0, mesmo os widgets GWT não eram capazes de abstrair totalmente algumas das dores de cabeça relacionadas a layout que poderiam ocorrer. Porém, GWT 2.0 introduz novos painéis de layout que realmente tornam possível criar o layout que você deseja. A aplicação de exemplo "Mail" no GWT SDK foi atualizada de modo a mostrar como isto funciona.
  • Painéis de layout criam um sistema de layout no topo do CSS padrão. Devido ao fato que eles trabalham sobre o CSS (e não ignorando o CSS), painéis de layout continuam a funcionar de forma previsível mesmo na presença de estilos CSS customizados que você necessite incluir. E devido ao fato que layout baseado em CSS é tratado nativamente dentro da engine de renderização do navegador, nenhum JavaScript precisa ser executado durante o layout. Como resultado, o layout é mais rápido e fluido: você poderá notar especialmente a velocidade ao redimensionar a janela do navegador.
  • Como é de se esperar, painéis de layout funcionam especialmente bem com o UIBinder. Com apenas algumas linhas de XML, você consegue criar layouts realmente sofisticados, incluindo transições animadas, divisórias, e assim por diante.

Melhorias de Código

  • Uma nova funcionalidade chave no GWT 2.0 é o code-splitting guiado pelo desenvolvedor. É muito mais fácil explicar com uma analogia: quando você está assitindo a um filme online, você definitivamente não deseja baixar o filme inteiro antes de começar a assitílo, certo? Você quer que o filme inicie instantaneamente, e o resto pode ser baixado aos poucos. O mesmo é válido para aplicações web. Iniciar aplicações não deve fazer você sentir como se estivesse instalando alguma coisa. Você apenas quer ver as coisas acontecerem ao clicar em um hyperlink. Cod Splitting é uma ferramenta que pode ajudá-lo a obter exatamente isso.
  • Pode soar complicado, mas code splitting é na verdade fácil. Apenas encontre um local em sua aplicação onde você gostaria de retalhar parte do código e usar o novo e mágico método GWT.runAsync() para criar um split point. Ao ir continuamente adicionando split points toda vez que isto fizer sentido, você pode de forma fácil e segura retalhar a sua aplicação de forma a assegurar que o download inicial inclua somente a quantidade mínima de código necessária para iniciar a aplicação.  O compilador automaticamente organiza os fragmentos de código adicional para serem baixados mais tarde. E, ao invés de manualmente dividir o código "na unha" através de declarações <script> o GWT automaticamente faz o trabalho pesado de assegurar que todas as dependências necessárias sejam baixadas na ordem correta. Como exemplo, a aplicação Showcase incluída no GWT SDK foi atualizada para mostrar o funcionamento do code splitting.
  • Além de code splitting, há também melhorias fundamentais à habilidade do compilador em produzir JavaScript. Adicionamos otimizações para tornar o código compilado menor e mais rápido. se você já possui projetos GWT existentes, pode experimentar grandes benefícios simplesmente fazendo um upgrade, recompilando, e provando que suas aplicações iniciam e executam mais rápido. GWT 2.0 inclui otimizações de grande impacto, e já vimos reduções no tamanho do JavaScript compactado variando entre 3% e mais de 20%.

Otimização de recursos com o ClientBundle

  • ClientBundle extende e generaliza o padrão de agrupamento de recursos que foi criado com o ImageBundle no GWT 1.4. Com uma simples interface Java, você pode em tempo de compilação otimizar e embutir recursos diretamente em código JavaScript compilado. Por exemplo, ao embutir imagens, você consegue evitar ineficientes round-trips de HTTP. ClientBundle prov~e suporte a uma ampla variedade de recursos, incluindo imagens, texto e até mesmo CSS>
  • Você ouviu bem , CSS. CssResource é uma nova e poderosa framework para gerenciar estilos. Suporta uma nova sintaxe extendida de CSS para definir sprites, named constraints, escopos, seletores condicionais e assim por diante. Ela também otimiza agressivamente seu CSS ao remover comentários e espaços em branco, e ao obfuscar nomes de classes.
  • ClientBundle é também extensível. Você pode criar seus próprios tipos de recursos e enganchá-los para dentro da framework ClientBundle para manter suas interfaces de recursos coerentes enquando agrupa quaisquer tipos de recurso que você considerar conveniente.

Agradecimentos Especiais

GWT 2.0 é o ápice de muitos meses de desenvolvimento colaborativo, e em nome de todo o time GWT, nós gostaríamos de agradecer ao time do WebKit, com os quais trabalhamos de perto e adicionamos a instrumentação de baixo nível necessária para tornar possível o Speed Tracer.
E, como sempre, profundos agradecimentos à comunidade de desenvolvedores GWT, muitos dos quais bravamente baixaram o GWT diretamente do trunk SVN, testando as novas funcionalidades ainda em progresso, e auxiliando a encontrar bugs, e até mesmo submetendo correções para os bugs que encontravam

Get Started!

Acredite ou não, nós nem chegamos perto da superfície de todos os novos recursos que o GWT oferece. Como sempre, GWT é Open Source e gratuito para utilizar. Esperamos que você dê ao menos uma olhada no GWT 2.0.
Happy Coding! Nos vemos online!

Um comentário:

  1. Ótimo Post Fábio!

    Ainda estou utilizando a GWT 1.7 em conjunto com a GXT 2.0 e já acho ótimo, mas realmente havia o pecado da demora na compilação, mas isso melhorando já é 50%, vou testar pra ver em funcionamento.

    Abraços

    ResponderExcluir