BT

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?

Avalie esse artigo

Relevância
Estilo/Redação

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
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.