Este é o primeiro de uma série de N artigos para mostrar como desenvolver uma aplicação que roda na nuvem com essa sopa de letrinhas que dessa vez ao invés de atrapalhar vai ajudar muito.
Nesse primeiro artigo vamos entender o que é cada coisa e porque você iria querer usá-los além de instalar o básico e executar nosso Hello World.
Quem é quem
GAE (Google Application Engine)
GAE é a plataforma de infraestrutura como serviço (IaaS) do Google. Basicamente a idéia é que o Google oferece sua robusta e gigantesca infraestrutura para que você publique suas aplicações e tenha os benefícios de disponibilidade e escalabilidade que essa infraestrutura já tem sem que você tenha que se preocupar com processamento, armazenamento, links de comunicação, energia, segurança e todo o capacity planning e a redundância para esses itens.
No conceito de IaaS você paga apenas pelo que usar (em geral mensuráveis em banda, processamento e armazenamento) e com isso pode suportar um crescimento rápido assim como picos com um custo muito mais baixo do que se fosse criar a infraestrutura em um datacenter.
Há várias outras opções mas uma vantagem significativa do GAE é que você pode usar tudo isso gratuitamente para aprender e até mesmo para iniciar seu site e somente quando precisar ultrapassar os limites do gratuito (que são até bem grandes) é que você precisa se preocupar com o dinheiro. Em tempo, uma observação importante é que o Google não é muito bom em definir um modelo comercial para seus produtos corporativos e você corre o risco de descobrir daqui a pouco que o modelo comercial do GAE fica pouco competitivo em relação aos concorrentes que não tem uma versão gratuita de chamariz; isso aconteceu com o Google Maps e com o Google Applications que só agora estão entrando nos eixos comercialmente.
GWT (Google Web Toolkit)
O Google Web Toolkit é um toolkit de código-fonte aberto permitindo desenvolvedores a criar aplicativos com tecnologia Ajax em linguagem de programação Java. GWT suporta cliente-servidor, desenvolvimento e debugging em qualquer IDE Java.
Para continuar falando de Google o GWT é uma poderosa ferramenta para desenvolver o frontend da sua aplicação web usando avançados recursos de Javascript (AJAX, Partitioning, Lazy Loading), comunicação (RPC & cia), depuração (debug) e teste (junit).
Escrevendo código Java bem conhecido com suas classes, eventos, gerenciadores de tela e outros recursos, o GWT compila tudo para HTML, CSS e Javascript otimizados para vários navegadores deixando você livre de boa parte da chatice de programar interface web (pelo menos para mim). Você ainda conta com um plugin para Eclipse para facilitar a vida.
Você com certeza já viu um site escrito com GWT se usa o Gmail ou Wave. Dê uma espiada nos exemplos.
Spring
Bem, Spring é o Spring. Para mim é assustador ver que o framework da moda-super-bacana que eu conheci logo no início se tornou uma empresa com tantos produtos e linhas de negócio, mas de qualquer modo aqui vamos falar apenas de uma perna do ecossistema com o Spring Enterprise.
O Spring é uma plataforma de desenvolvimento Java que abstrai muita complexidade inerente ao desenvolvimento de grandes soluções e fornece muitos serviços de forma transparente. Ele surgiu em resposta a difícil e complexa tarefa de construir aplicações com os servidores de aplicação JEE e através da integração de diversos frameworks leves tornou mais fácil e rápido o desenvolvimento sem abrir mão da robustez & cia.
No nosso caso podemos querer usá-lo para suportar objetos de negócio, layers de serviços, manipulação de dados e camadas de aplicação no lado servidor.
Spring Roo
SpringRoo é a última moda em ferramenta de produtividade. Entenda bem, é uma ferramenta de produtividade (RAD), não uma plataforma ou framework para desenvolvimento e execução de software.
Trata-se de uma ferramenta que gera código e mantém a integridade nas alterações buscando boas práticas utilizando dezenas de tecnologias como várias soluções da família Spring, JMS, Tiles, Dojo, Hibernate, Selenium, JUnit, Solr e vários outros.
Para nosso caso queremos usá-lo porque ele assume a responsabilidade por gerar muito código extra e tedioso que uma aplicação GWT precisa (DTO, views, presenters, etc.) e as mantém em sincronismo mesmo que você altere o código Java diretamente, ele também vai nos dar suporte do Spring para codificarmos nossa aplicação no servidor e integrar a comunicação entre cliente (GWT) e Servidor (Spring). Além disso vamos deixar que ele se preocupe com as configurações para publicarmos a aplicação no GAE.
Hello World
Pré-requisitos:
Só isso. Depois ele (na verdade o Maven) se encarrega do resto (GWT, Spring, GAE & cia).
Agora vamos criar uma aplicação GWT para o HelloWorld (GAE virá no próximo artigo):
- Abra o console (prompt de comando) e inicie o ROO (digite ROO se você seguiu as instruções de instalação)
C:\Temp>roo
____ ____ ____
/ __ \/ __ \/ __ \
/ /_/ / / / / / / /
/ _, _/ /_/ / /_/ /
/_/ |_|\____/\____/ 1.1.0.M1 [rev 3a0b8a3]
Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
roo>
- Crie o projeto indicando o top-level-package;
roo> project --topLevelPackage br.com.smota.helloworld Created ... br.com.smota.helloworld roo>
br.com.smota.helloworld roo> persistence setup --provider DATANUCLEUS --database GOOGLE_APP_ENGINE
br.com.smota.helloworld roo> entity --class ~.Mensagem
~.Mensagem roo> field string --fieldName texto --notNull
~.Mensagem roo> controller all --package ~.web
~.web roo> gwt setup Created ... Managed ... Created ... br.com.smota.helloworld roo>
br.com.smota.helloworld roo> exit
C:\Temp>mvn gwt:run
Não se preocupe, as dependências ficam em cache e o Maven vai reutilizá-las (você só precisa esperar muuuito a primeira vez). Para um HelloWorld parece muita dependência e código, aguarde para adicionarmos algumas funcionalidades nos próximos passos.
Se ficar impaciente assista esse vídeo. Até a próxima!
Sem posts relacionados.