BT
x A sua opinião é importante! Por favor preencha a pesquisa do InfoQ sobre os seus hábitos de leitura!

Escrevendo aplicações HTML5 com Google App Engine, Google Closure Library e Clojure

por Jean-Jacques Dubray , traduzido por Rafael Marques em 16 Nov 2010 |

O Stefan Richter, CTO da Freiheit.com, explicou esta semana no Google Developer Day realizado em Munique, a sua visão sobre escrever aplicações ricas para internet utilizando HTML5 e o Google App Engine. Em particular, ele acha que será um pouco mais difícil construir um componente do lado cliente utilizando HTML5 do que comparado a componentes do lado servidor.

Nos dias pre-Web, o modelo de aplicações do lado cliente era baseado em widgets, eventos e manipuladores de eventos que geralmente resultavam em cadeias de eventos complexos e difíceis de manter. Em aplicações com 2 camadas, as pessoas acessavam bases de dados diretamente através de seus manipuladores de eventos. Com a renderização de páginas do lado do servidor, a página geralmente é criada de uma só vez, uma requisição e uma resposta por vez.

Stefan explica que com o HTML5, "você deverá gerar" mais e mais código HTML no lado do cliente. Uma maneira que eles tem feito e experimentado é uso o Google Closure Templates.

Closure Templates é um sistema de templates tanto do lado servidor como do cliente que permite construir dinamicamente HTML e elementos de UI... Closure Templates foi implementado tanto para JavaScript quanto para Java, tornando possível você utilizar os mesmos templates tanto no servidor quanto no cliente.

Ele também recomenda centralizar a manipulação de eventos e somente encapsular estado em widgets customizados quando for necessário.

Do ponto de vista do lado servidor, ele questiona "Nós realmente precisamos de classes e objetos para transportar dados?" Eles geram o acesso ao armazenamento de dados no servidor utilizando Clojure Macros. As mesmas estruturas são utilizadas no lado servidor e no lado cliente:

Nós estamos utilizando pares Chave / Valor como estrutura primária... Eu acredito que este é o futuro do desenvolvimento de sistemas. Sem diferenças de impedância, sem mais OR mappers, sem mais passos de transformação.

O Clojure trabalha internamente com pares Chave / Valor. Nós podemos recuperá-los do Google Datastore, e enviá-los ao cliente como JSON.

O Stefan sugere você tentar ir o mais longe possível, somente com pares Chave/ Valor, e escrever código funcional utilizando JavaScript sem efeitos colaterais para manipular esses dados.

Durante a sua palestra ele anunciou uma série de princípios para a próxima geração de RIAs:

  • Você deve estar apto a entender o código apenas lendo
  • Não tente escrever aplicações no estilo de programas como Windows Desktop no browser
  • Esteja preparado para renderizar a maioria do seu código HTML no lado cliente
  • Não escreva código JavaScript do jeito que você escreve código Java. Esqueça tudo o que você aprendeu escrevendo código Java.
  • Planeje para operações offline
  • Você precisará ter uma idéia em como lidar com modificações concorrentes
  • Você precisa enviar notificações
  • Envie o log de exceções do lado cliente para o servidor

A aplicação Deadline foi desenvolvida seguindo estes princípios.

Estará o HTML5 (e o Cloud) mudando a arquitetura e o modelo de programação das aplicações ricas para internet? Estarão os desenvolvedores e arquitetos preparados para esta mudança? O que você acha?

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT