O Google App Engine ou GAE é uma plataforma para desenvolvimento e hospedagem de aplicações Web da Google. É baseado em cloud-computing e disponibiliza os recursos do servidor de forma gratuita (até um certo ponto) através de vários servidores e data centers.
As linguagens oferecidas nessa plataforma, por padrão, são Java e Python. Há ainda a possibilidade de se estender esse suporte através da plataforma Java e poder executar Groovy, JRuby, Scala, Clojure, Jython e Quercus. Há algumas restrições como utilizar somente as classes da lista branca do Google App Engine, não se pode criar novas threads, entre outros.
Se você quiser saber mais a respeito, pode ver os posts do Rafael Nunes no Globalcoders. Esse post foi motivado pelo interesse dos meus alunos no concurso da Globalcode. Tem um pessoal bem bacana participando.
O primeiro passo para configurar o ambiente é instalar o eclipse e o plugin do GAE. Estou utilizando a versão Helios do Eclipse e a instalação dele e de outros plugins pode ser encontrada na tag eclipse do blog. Após a instalação, abrir o Eclipse, Ir em Help, Eclipse Marketplace e procurar por Google Plugin for Eclipse e clicar em Install.
Verificar se estão selecionadas todas as opções e clicar em Next. Concordar com os termos se deseja prosseguir e clicar em Finish. Pressione OK caso o Eclipse lhe alerte sobre software não assinado e ao finalizar a instalação clique em Restart Now. Ao iniciar você deverá perceber que apareceram novos ícones. O primero ícone é utilizado para criar uma nova aplicação do GAE. Você também pode criar uma nova aplicação pelo menu: File, New, Other, Google, Web Application Project e clicar em Next. Realize uma dessas operações, preencha o nome e o pacote do seu projeto e desmarque a opção Use Google Web Toolkit. Pressione Finish.
O GAE utiliza servlets para se comunicar com com o servidor. Após criar a aplicação, ele irá criar a estrutura da aplicação com os descritores web.xml e app-engine.xml. Como o nome do meu projeto é meio estranho, ele cria também uma servlet "Hello World" com um nome estranho. Para alterar o nome da servlet criada, clique com o botão direito nela, Refactor, Rename. Selecione os outros checkbox para alterar outras referências textuais (comentários e descritores) e clique em Next.
Clique em Finish para ele atualizar o web.xml e a Servlet. Ainda é necessário atualizar o mapeamento da servlet no web.xml. Abra o arquivo e edite a seu contento. O meu ficou assim:
<?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>OlaMundoServlet</servlet-name> <servlet-class>br.com.thiagovespa.gae.samples.helloworld.OlaMundoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>OlaMundoServlet</servlet-name> <url-pattern>/olaMundo</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
Abra o arquivo index.html e altere o conteúdo dele para algo mais apropriado. O meu ficou assim:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Olá Google App Engine</title>
</head>
<body>
<h1>Olá Google App Engine!</h1>
<table>
<tr>
<td colspan="2" style="font-weight:bold;">Servlets:</td>
</tr>
<tr>
<td><a href="olaMundo">Olá Mundo!</a></td>
</tr>
</table>
</body>
</html>
Altere o código da servlet para mostrar algo diferente:
package br.com.thiagovespa.gae.samples.helloworld;
import java.io.IOException;
import javax.servlet.http.*;
@SuppressWarnings("serial")
public class OlaMundoServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setContentType("text/plain");
resp.getWriter().println("Olá Mundo");
}
}
Clique com o botão direito no projeto, Run As, Web Application. Aguarde a seguinte saída:
Oct 3, 2010 4:32:25 PM com.google.apphosting.utils.jetty.JettyLogger info INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger Oct 3, 2010 4:32:25 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml INFO: Successfully processed /development/workspace/workspace-thiagovespa/thiagovespa-gae-samplehelloworld/war/WEB-INF/appengine-web.xml Oct 3, 2010 4:32:25 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml INFO: Successfully processed /development/workspace/workspace-thiagovespa/thiagovespa-gae-samplehelloworld/war/WEB-INF/web.xml Oct 3, 2010 1:32:25 PM com.google.appengine.tools.development.DevAppServerImpl start INFO: The server is running at http://localhost:8888/
Você também pode entrar em modo de depuração clicando com o botão direito no projeto e Debug As, mas não o faremos no momento. Abra a url http://localhost:8888/ em um browser de sua preferência e está feita a sua primeira aplicação no GAE.




[...] This post was Twitted by thiagovespa [...]
[...] This post was mentioned on Twitter by Thiago G. Vespa, Thiago G. Vespa. Thiago G. Vespa said: Novo post: Começando com Google App Engine http://j.mp/9Y0pKI [...]
MUITO bom cara. Me ajudou bastante.
Parabéns, ótimo post 😀