Instalación del SDK de Java
Desarrolla y sube aplicaciones Java de Google App Engine con el kit de desarrollo
de software (SDK) de Java de App Engine.
El SDK incluye software para un servidor web que puedes ejecutar en tu propio
equipo para probar las aplicaciones Java. El servidor simula todos los servicios de
App Engine, incluida una versión local del almacén de datos, el servicio Cuentas
de Google y la capacidad de extraer URL y enviar mensajes de correo electrónico
desde tu equipo a través de las API de App Engine.
Obtención de Java
Google App Engine es compatible con Java 5 y Java 6. Cuando la aplicación Java
se ejecuta en App Engine, lo hace a través de la máquina virtual (JVM) 6 y de las
bibliotecas estándar. Sería conveniente que utilizaras Java 6 para compilar y
probar la aplicación, y asegurarte de que el servidor local se comporte de forma
similar a App Engine.
Para los desarrolladores que no puedan acceder fácilmente a Java 6 (como, por
ejemplo, los que utilizan Mac OS X), el SDK de App Engine es compatible con
Java 5. Puedes subir a App Engine clases compiladas y JAR creados con Java.
Si es necesario, descarga e instala el kit de desarrollo de Java SE (JDK) para tu
plataforma. Los usuarios de Mac pueden consultar elsitio de desarrolladores Java
de Apple, donde pueden descargar e instalar la última versión del kit de desarrollo
de Java disponible para Mac OS X.
Una vez instalado el JDK, ejecuta los siguientes comandos desde una línea de
comandos (en Windows, Símbolo del sistema; en Mac OS X, Terminal) para
comprobar que se pueden ejecutar y para determinar la versión que está
instalada. Si tienes instalado Java 6, estos comandos mostrarán un número de
versión similar a 1.6.0. Si tienes instalado Java 5, el número de versión será
similar a1.5.0.
java -version
javac -version
Uso de Eclipse y del complemento de Google para Eclipse
Si utilizas el entorno de desarrollo de Eclipse, la forma más fácil de desarrollar,
probar y subir aplicaciones App Engine es utilizar elcomplemento de Google para
Eclipse. El complemento incluye todo lo necesario para crear, probar e
implementar la aplicación por completo en Eclipse.
El complemento está disponible para las versiones 3.3 y 3.4 de Eclipse. Puedes
instalarlo con la función "Software Update" de Eclipse. Las ubicaciones para la
instalación son las siguientes:
Complemento de Google para la versión 3.3 de Eclipse (Europa):
[Link]
Complemento de Google para la versión 3.4 de Eclipse (Ganymede):
[Link]
Si quieres obtener información detallada sobre cómo utilizar la función "Software
Update" para instalar el complemento y sobre cómo crear un proyecto nuevo,
consulta Uso del complemento de Google para Eclipse.
Obtención del SDK
Si utilizas Eclipse y el complemento de Google, puedes instalar el SDK de App
Engine desde Eclipse mediante la función "Software Update". Si aún no lo tienes,
instala el componente SDK de Java de Google App Engine utilizando las
ubicaciones anteriores.
Si no utilizas ni Eclipse ni el complemento de Google, puedes descargar el SDK de
Java de App Engine como un archivo ZIP.
Descarga el SDK de Java de App Engine. Descomprime el archivo en una
ubicación adecuada de tu disco duro.
Nota: al descomprimir el archivo, se creará un directorio, cuyo nombre es similar
a appengine-java-sdk-X.X.X, en el queX.X.X es el número de versión del SDK. En
este documento, nos referiremos a este directorio como appengine-java-sdk/.
Una vez descomprimido el archivo, puedes renombrar el directorio.
Prueba de una aplicación de demostración
El SDK de Java de App Engine incluye varias aplicaciones de demostración en el
directorio demos/. La versión final de la aplicación de libro de invitados, que
crearás con este tutorial, está incluida en el directorio guestbook/. Esta
demostración se ha compilado previamente para que puedas utilizarla de
inmediato.
Si utilizas Eclipse, el SDK se ubica en el directorio de instalación de Eclipse,
enplugins/[Link].sdkbundle_VERSION/, en el
que VERSION es un identificador de versión del SDK. Desde la línea de comandos,
cambia el directorio de trabajo actual por este directorio para ejecutar el comando
siguiente. Si utilizas Mac OS X o Linux, puede que tengas que asignar a los
archivos de comandos permisos de ejecución para poder ejecutarlos (como ocurre
con el comando chmod u+x dev_appserver.sh).
Si utilizas Windows, inicia la demostración de libro de invitados en el servidor de
desarrollo mediante la ejecución del siguiente comando en el símbolo del sistema:
appengine-java-sdk\bin\dev_appserver.cmd appengine-java-sdk\demos\guestbook\war
Si utilizas Mac OS X o Linux, ejecuta el siguiente comando:
./appengine-java-sdk/bin/dev_appserver.sh appengine-java-sdk/demos/guestbook/war
El servidor de desarrollo se inicia y detecta las solicitudes en el puerto 8080.
Accede a la siguiente URL a través de tu navegador:
[Link]
Para obtener más información sobre la ejecución del servidor web de desarrollo
desde la línea de comandos, incluida la forma de cambiar el número de puerto que
utiliza, consulta la referencia del servidor web de desarrollo.
Para detener el servidor, asegúrate de que la ventana de símbolo del sistema esté
activa y, a continuación, pulsa Control-C.
Creación de un proyecto
Las aplicaciones Java de App Engine utilizan el estándar Java Servlet para
interactuar con el entorno del servidor web. Algunos archivos de la aplicación, que
incluyen clases compiladas, JAR, archivos estáticos y archivos de configuración,
están organizados en una estructura de directorio que utiliza el formato
estándar WAR para aplicaciones web Java. Puedes utilizar el proceso de
desarrollo que desees para desarrollar servlets web y para generar un directorio
WAR. (Los archivos del archivo WAR no son compatibles con el SDK).
Directorio del proyecto
Para este tutorial, utilizarás un único directorio denominado Guestbook/ para todos
los archivos del proyecto. Un subdirectorio llamado src/ contiene el código fuente
Java y otro subdirectorio llamado war/ contiene la aplicación completa organizada
en formato WAR. El proceso de compilación compila los archivos fuente Java y
coloca las clases compiladas en la ubicación apropiada en war/.
El directorio completo del proyecto es similar a:
Guestbook/
src/
...Java source code...
META-INF/
...other configuration...
war/
...JSPs, images, data files...
WEB-INF/
...app configuration...
lib/
...JARs for libraries...
classes/
...compiled classes...
Si utilizas Eclipse, crea un nuevo proyecto haciendo clic en el botón "New Web
Application Project" de la barra de herramientas: Asigna al proyecto un nombre
(Project name) de Guestbook y un paquete (Package) de guestbook. Desactiva la
casilla "Use Google Web Toolkit" y asegúrate de que la casilla "Use Google App
Engine" esté activada. Para obtener más información, consulta Uso del
complemento de Google para Eclipse. El asistente creará la estructura de
directorio y los archivos descritos a continuación.
Si no utilizas Eclipse, crea la estructura de directorio descrita a continuación.
Mientras lees los archivos descritos en esta sección, crea los archivos con los
nombres y ubicaciones especificados.
También puedes copiar la nueva plantilla del proyecto, que se incluye en el SDK,
en el directorio appengine-java-sdk/demos/new_project_template/.
La clase Servlet
Las aplicaciones Java de App Engine utilizan el API Java Servlet para interactuar
con el servidor web. Un servlet HTTP es una clase de aplicación que puede
procesar y responder solicitudes web. Esta clase amplía la
clase [Link] o a la [Link].
El proyecto del libro de invitados comienza con una clase Servlet simple que
muestra un mensaje.
Si no utilizas el complemento de Eclipse, crea los directorios para la
ruta src/guestbook/ y, a continuación, crea el archivo de clase Servlet descrito a
continuación.
El directorio src/guestbook/ incluye un archivo
denominado [Link] que contiene lo siguiente:
package guestbook;
import [Link];
import [Link].*;
public class GuestbookServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
[Link]("text/plain");
[Link]().println("Hello, world");
}
}
El archivo [Link]
Cuando el servidor web recibe una solicitud, decide qué clase de servlet ejecutar
mediante un archivo de configuración conocido como "descriptor de
implementación de la aplicación web". Este archivo se denomina [Link] y se
ubica en el directorio war/WEB-INF/del WAR. WEB-INF/ y [Link] forman parte de
la especificación del servlet.
El directorio war/WEB-INF/ incluye un archivo denominado [Link] que contiene lo
siguiente:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"[Link]
<web-app xmlns="[Link] version="2.5">
<servlet>
<servlet-name>guestbook</servlet-name>
<servlet-class>[Link]</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>guestbook</servlet-name>
<url-pattern>/guestbook</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>[Link]</welcome-file>
</welcome-file-list>
</web-app>
Este archivo [Link] declara un servlet denominado guestbook y lo asigna a la
ruta de la URL /guestbook. También indica que siempre que el usuario extraiga
una ruta de la URL que no haya sido asignada a un servlet y represente una ruta
del directorio dentro del WAR de la aplicación, el servidor deberá buscar un
archivo denominado [Link] en el directorio y mostrarlo si lo encuentra.
El archivo [Link]
App Engine necesita un archivo de configuración adicional para poder desarrollar y
ejecutar la aplicación. Este archivo se denomina [Link] y se ubica
en WEB-INF/ junto a [Link]. Incluye la ID registrada de la aplicación (Eclipse la
crea a partir de una ID vacía que rellena el usuario), el número de versión de la
aplicación y listas de archivos que se deben tratar como archivos estáticos (por
ejemplo, imágenes y CSS) y archivos de recursos (por ejemplo, JSP y otros datos
de aplicación).
El directorio war/WEB-INF/ incluye un archivo denominado [Link] que
contiene lo siguiente:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="[Link]
<application></application>
<version>1</version>
</appengine-web-app>
[Link] es específico de App Engine y no forma parte del estándar
servlet. Puedes encontrar archivos de esquema XML que describen el formato de
este archivo en el SDK, dentro del directorio appengine-java-sdk/docs/. Para
obtener más información sobre este archivo, consulta Configuración de una
aplicación.
Ejecución del proyecto
El SDK de App Engine incluye una aplicación de servidor web que puedes utilizar
para probar tu aplicación. El servidor simula los servicios y el entorno App Engine,
que incluyen restricciones en la zona de pruebas, el almacén de datos y los
servicios.
Si utilizas Eclipse, puedes iniciar el servidor de desarrollo en el depurador de
Eclipse. En el menú "Run", selecciona "Debug As > Web Application". (Si no
encuentras esta opción de menú, selecciona el menú "Window > Reset
Perspective...", haz clic en "OK" y, a continuación, vuelve a probar el
menú "Run"). Consulta Uso del complemento de Google para Eclipse para
obtener información detallada sobre la creación de la configuración de depuración.
Si no utilizas Eclipse, consulta Uso de Apache Ant para una secuencia de
comandos de generación que puede crear el proyecto e iniciar el servidor de
desarrollo. Para iniciar el servidor con esta secuencia de comandos de
generación, introduce el comando ant runserver. Para detener el servidor, pulsa
Control-C.
Pruebas de la aplicación
Inicia el servidor y, a continuación, accede a la siguiente URL a través de tu
navegador:
[Link]
El servidor ejecuta el servlet y muestra el mensaje en el navegador.
Uso del servicio de usuarios
Google App Engine ofrece varios servicios útiles basados en la infraestructura de
Google a los que se puede acceder a través de aplicaciones utilizando una serie
de bibliotecas incluidas en el kit de desarrollo de software (SDK). Uno de ellos es
el servicio de usuarios, que te permite integrar tu aplicación con cuentas de
usuarios de Google. Con el servicio de usuarios, los usuarios de tu aplicación
podrán utilizar sus cuentas de Google existentes para acceder a ella.
Utilizaremos el servicio de usuarios para personalizar el saludo de esta aplicación.
Uso del servicio de usuarios
Edita src/guestbook/[Link] según se indica para que se parezca
a lo que se muestra a continuación.
package guestbook;
import [Link];
import [Link].*;
import [Link];
import [Link];
import [Link];
public class GuestbookServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
UserService userService = [Link]();
User user = [Link]();
if (user != null) {
[Link]("text/plain");
[Link]().println("Hello, " + [Link]());
} else {
[Link]([Link]([Link]()));
}
}
}
Si utilizas Eclipse y tu servidor de desarrollo se ejecuta en el depurador, al guardar
los cambios realizados en el archivo, Eclipse compila el nuevo código de forma
automática y, a continuación, intenta insertarlo en el servidor en ejecución. Los
cambios realizados en las clases, JSP, archivos estáticos y [Link] se
reflejan de inmediato en el servidor en ejecución sin necesidad de reiniciar. Si
realizas cambios en [Link] u otros archivos de configuración, debes detener e
iniciar el servidor para ver los cambios.
Si utilizas Ant, debes detener el servidor y volver a crear el proyecto para ver los
cambios realizados en el código fuente. Los cambios realizados en las JPS y
archivos estáticos no requieren que se reinicie el servidor.
Vuelve a crear tu proyecto y reinicia el servidor en caso necesario. Para probar la
aplicación, visita la URL del servlet en tu navegador:
[Link]
En lugar de mostrar el mensaje, el servidor te solicita una dirección de correo
electrónico. Introduce una dirección de correo electrónico (como, por
ejemplo, alfred@[Link] y, a continuación, haz clic en "Log In". La aplicación
muestra un mensaje que ahora contiene la dirección de correo electrónico que has
introducido.
El nuevo código de la clase GuestbookServlet utiliza el API de usuarios para
comprobar si el usuario ha accedido con una cuenta de Google. Si no es así, se
redirige al usuario a la pantalla de acceso a Cuentas de
Google. [Link](...)devuelve la URL de la pantalla de
acceso. La función de acceso sabe redirigir al usuario a la aplicación por la URL
transferida acreateLoginURL(...), que en este caso es la URL de la página
actual.
El servidor de desarrollo sabe cómo simular una función de acceso a Cuentas de
Google. Si se ejecuta en tu equipo local, se redirige a la página en la que puedes
introducir una dirección de correo electrónico para simular un acceso a la cuenta.
Si se ejecuta en App Engine, se redirige a la pantalla real de Cuentas de Google.
Ahora has accedido a tu aplicación de prueba. Si vuelves a cargar la página, el
mensaje vuelve a aparecer.
Para permitir el acceso al usuario, proporciona un enlace a la pantalla de acceso,
generado por el método createLogoutURL(). Ten en cuenta que un enlace de
salida no permitirá el acceso del usuario a ninguno de los servicios de Google.