Terça-feira, 21 de Abril de 2009

Google Java AppEngine - Vejamos as Vantagens...

Este é o segundo post da série de artigos sobre o Google Java AppEngine. Para saber mais, leia o primeiro que fala sobre as primeiras impressões do serviço. Ou acompanhe pelo nosso RSS.

Para facilitar o entendimento do que eu encontrei no Java GAE, eu classifiquei os aspectos em prós e contras. Nesse post vou começar falando das vantagens, e posteriormente falarei do que eu achei ruim na utilização da plataforma

Prós

  • Fácil utilizacao do eclipse com o plugin: Impressionante como eles simplificaram e "oficializaram" um plugin do eclipse para a utilização da infraestrutura do google. Agora só precisa baixar a versão do eclipse com suporte a JEE e cadastrar o site do plugin no "Install and Updates" para instalar o plugin. Esse novo plugin tem suporte a desenvolvimento com GWT (sem precisar de nenhuma lib adicional), teste da app em servidor local com suporte a cache e bigtable, "one click deploy" para jogar sua app nas nuvens, e suporte a todas as apis que o google disponibiliza no desenvolvimento java no GAE (vou listá-las mais a frente).
  • Servidor local para testes: Agora vc pode desenvolver e testar localmente suas aplicacoes antes de jogá-las nas nuvens. O servidor local do GAE facilita demais os testes que o desenvolvedor terá que fazer, sem ter que ficar testando as apps na "produção". O servidor do google já vem com suporte a BigTable, Memcached, e as outras apis que o google fornece no serviço. Só para constar, a api de envio de email não funciona localmente, acredito eu que seja para evitar a proliferação de spams.
  • Forte utilizacao de padroes java: Fiquei muito feliz de saber que o google tem programadores muito bem qualificados e que sabem tirar o melhor proveito do java, utilizando padrões conhecidos e interfaces para disponibilizar suas funcionalidades (ao contrário de muitos que adoram re-inventar a roda). Da sopa de letrinhas consegui listar nessa primeira passada: JDO, JPA, Jcache, JSP, Servlet, JavaMail e WAR.
  • Quota muito boa para um serviço free: As cotas para são bem generosas para um ambiente free. Algo como 500 mb de banco de dados (ops, bigTable), entre 1 e 2 gb de transferência entre os serviços. Segundo consta no blog oficial, a infra deles suporta uma página que é capa do digg ou que aparece no slashdot.
  • Dashboard da app: Para quem gosta de ficar sempre de olho no consumo de cpu, consulta no banco de dados, tempo de processamento de cada request, gráficos de monitoramento, o dashboard é uma mão na roda. Inclusive existe um recurso que permite vc navegar entre as entidades que vc guardou no BigTable, bem no estilo do MyPhpAdmin (só que bem simplificado).
  • Quantidade de instâncias de servidores: Pra que se preocupar com a quantidade de instâncias de servidores sua app está usando? Deixa o google cuidar disso! Segundo a documentação, acredita-se que em um ambiente otimista, um servidor consegue administrar 300 requisições por segundo e, caso seja detectado um pico na quantidade de requisições, novas instâncias serão criadas para balancear a carga.
  • Abstração de apis de serviços pré-configurados: Serviços úteis (como cache, manipular imagens, pegar dados da internet) que o todo webadmin quer usar, mas às vezes falta expertise ou tempo para estudar, estão disponíveis para usar sem qualquer configuração prévia. Quer guardar um objeto no cache? cache.put(obj). Quer baixar um rss? reader.get(urlLocation). E tudo sem se preocupar com qual cpu vai executar o serviço e como vai ser feito. Vc só tem que pedir.
  • Boas práticas por default: Sabe aquelas boas práticas que todo desenvolvedor web deveria implementar (mas muitos não implementam) como Gzip condicional, etag, cache, etc.? Bom, isso já vem por padrão no GAE. Isso ajuda o google a economizar banda e recursos, e ajuda vc a otimizar seu site.

Continue lendo os artigos sobre o Google Java AppEngine no JornalJava.com.

Domingo, 12 de Abril de 2009

Google Java AppEngine - Primeiras Impressões

java google app engine

Essa semana saiu uma notícia que vários desenvolvedores java estavam esperando (e pedindo) por parte do google: O Google AppEngine agora tem suporte a java.

Para quem não sabe o AppEngine tinha somente suporte a python, mas agora qualquer javeiro pode fazer o deploy de seus servlets nos servidores do google. Tive a satisfação de conseguir uma conta no app engine java e fazer o deploy de uma app simples, somente para testar a infra do google. E assim, fiz uma série de artigos falando sobre o que descobri. Antes de tudo, quero deixar aqui uma reclamação sobre o que eu acredito que seja um bug, pois consegui somente a duras penas cadastrar um nome de uma app que já não estava cadastrado, apesar de tentar os nomes mais esdrúxulos possíveis (ex.: asfdae1335.appspot.com).

Falando rapidamente sobre o que o google disponibilizou para os desenvolvedores java:

  • Plugin de desenvolvimento para eclipse: até que enfim o google disponibilizou um plugin com suporte a criação de projetos do GWT e já com todas as bibliotecas (e interfaces dos serviços) que pode-se utilizar no app engine. Também existe um botão no estilo "one-click-deploy" que permite a publicação da app direto nos servidores do google
  • Bibliotecas de serviços: como o ambiente do app engine tem uma série de limitações (como várias restrições na lib IO) para garantir o uso partilhado dos servidores, o google disponibilizou algumas bibliotecas para fazer coisas bem comuns em app web, como mandar email, editar imagens, pegar conteúdo de urls, uso servidores de cache, etc.
  • Suporte a agendamento de tarefas: para aquelas tarefas básicas como atualizar a base de dados, limpar o cache, mandar emails diários, etc. Funciona assim: vc cria e cadastra um servlet que deverá fazer a tarefa desejada; depois vc edita um arquivo que vai ficar no diretório da sua app com as configurações de tempo, intervalos, prazo, etc...
  • JDO e JPA como interface do BigTable: parece que ficou fácil guardar e mapear os dados do BigTable (sistema de arquivos e base de dados do google). Agora basta colocar uma anotação no seu POJO que ele pode ser persistido na base do google, com direito a sharding automático e sem se preocupar com questão de espaço.

Acompanhem mais notícias que estarei publicando aqui sobre o Google Java AppEngine na prática.

Domingo, 7 de Dezembro de 2008

Video Tutorial - Hello World Android no Eclipse

Para aqueles que estão coçando de curiosidade sobre o celular do google (vulgo android), aqui vai um video tutorial explicando como configurar o eclipse e rodar sua primeira app em java no emulador oficial do gadget mais cobiçado, depois do iPhone. O interessante é que eles colocaram um subset das apis mais populares java (lang, math, util, etc) muito similar ao GWT. Agradecimentos ao nosso colaborador carioca e meu amigo Lucio Camilo. Valeu!
Confere aí: