Développer avec le SDK de Google App Engine

Pour commencer à développer un application pour Google App Engine, je pense qu'il est préférable d'utiliser un IDE avec le bon plug-in. Cependant, pour comprendre les mécanismes sous-jacents, l'utilisation en ligne de commande est toujours très instructive.



Installation du SDK

L'environnement de développement est basé sur un JDK, en version 5 ou 6, et du SDK de Google App Engine. Celui-ci fournit l'API spécifique à GAE et tout ce qui est nécessaire pour disposer de l'API et des classes spécifiques et pour simuler l'exécution locale d'une application GAE.

L'installation du SDK est assez simple : j'ai téléchargé l'archive ZIP pour Java, que j'ai décompressée, dans le répertoire de mon choix (/opt/java).

Structure de l'application

Pour exécuter mon application en local, il faut qu'elle soit dans un répertoire, avec une structure de répertoire similaire à une archive war standard, avec un répertoire WEB-INF et son fichier web.xml. Il faut toutefois ajouter le fichier spécifique à GAE, appengine-web.xml.

   mywar/
       *.jsp
       css/*.css
       js/*.js
       WEB-INF/
           web.xml
           appengine-web.xml
           lib/*.jar
           classes/... (classes compilées)
           appengine-generated/... (généré par le SDK)

Remarque : le répertoire est appengine-generated est créé par le SDK, il est inutile de le créer soi-même.

Configuration de l'application

Le fichier appengine-web.xml est nécessaire pour lancer l'application. Ce fichier contient au moins une description succincte de l'application : son identifiant et sa version. Attention, il n'est pas question d'utiliser les numéros de versions traditionnels x.y.z, car le '.' est interdit ; Seuls sont autorisés les chiffres, lettres (sans accents) et le caractère '-'.

 <?xml version="1.0" encoding="utf-8"?>
 <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
     <application>myapp</application>
     <version>1-alpha</version>
 </appengine-web-app>

Le fichier web.xml est aussi obligatoire, même si on n'y met rien ; eh non, ce n'est pas encore du JavaEE 6.

 <?xml version="1.0" encoding="utf-8"?>
 <web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
 </web-app>

Tester l'application

Le SDK fournit des scripts permettant de lancer un serveur Web local et d'y déployer notre application :

/opt/java/gae-java-sdk/bin/dev_appserver.sh mywar/

L'application est alors accessible à l'adresse http://localhost:8080/.

Si on a une autre application est déjà à l'écoute sur le port 8080, il est possible de lancer l'application sur un autre port.

/opt/java/gae-java-sdk/bin/dev_appserver.sh --port=8180 mywar/

Déployer l'application

Avant de pouvoir déployer l'application, il faut évidemment être enregistré et avoir créé une application. Avec un compte, on peut en créer 10. Au moment de la création, on renseigne un identifiant et une description. L'identifiant doit faire entre 6 et 30 caractères et servira à construire l'URL : http://myapp.appspot.com. L'identifiant doit être reporté dans le fichier appengine-web.xml, dans l'élément <application> La description fait entre 4 et 30 caractères ; on pourra noter que les caractères spéciaux sont interdits, y compris les caractères accentués.

Tout est prêt pour envoyer notre application sur le serveur, via le script appcfg.sh.

/opt/java/gae-java-sdk/bin/appcfg.sh update mywar/

Le script demande la saisie du mail qui a été utilisé pour créer le compte GAE, ainsi que le mot de passe. Une fois déployée, l'application est accessible à l'URL http://myapp.appspot.com. A chaque update, GAE vérifie si la version existe, auquel cas il la met à jour, ou si il s'agit d'une nouvelle version. La première version envoyée est automatiquement la version par défaut, mais pour promouvoir les versions suivantes, il faut passer par la console de gestion. Chaque version a sa propre URL http://1-alpha.myapp.appspot.com, par exemple.

Conclusion

On le voit ici, on peut commencer à développer une application pour Google App Engine avec un JDK, le SDK et un éditeur de texte. Les commandes utilisées dans cette page sont des scripts shell prévus pour Linux ou pour MacOS ; des commandes équivalentes, en .cmd sont fournies pour Windows.

Les phases préliminaires d'enregistrement du compte et de l'application sont les mêmes que pour le développement plus civilisé, avec un IDE comme Eclipse ou Netbeans. Reste maintenant à étudier toutes les spécificités du développement Google App Engine et de faire les bons choix. D'autres pages de JTips présentent (ou présenteront) les solutions que j'aurais adoptées, et je consignerai les raisons de mes choix, et mes impressions dans des billets sur Google App Engine de mon blog.