Document confidentiel -  Ce document est la propriété exclusive d’Ippon Technologies et il ne peut être reproduit, publi é  ou divulgu é  sans son autorisation préalable Sommaire Effectifs par agence Google App Engine for Java Avril 2009
Plan Introduction Pourquoi cette présentation ? Présentation Présentation des services La vue globale Le Cloud Computing La vision de Google Hello World GAE pas-à-pas L’infrastructure Les services Les outils GAE & GWT 1.6 Le bilan
INTRODUCTION
Introduction Google a annoncé le support de Java pour GAE le 07 avril 2009 GAE est un service qui permet de déployer des applications web sur l’infrastructure Google GAE supportait uniquement Python depuis un an Le service Python n’a pas eu un grand succès Java était le langage le plus demandé (devant PHP) pour GAE Java est déjà utilisé par Google pour Google Web Toolkit Annonce simultanée de GAE Java et GWT 1.6
PRÉSENTATION
Vue globale GAE: Dans les grandes lignes Service de Google pour héberger des applications Web Java Java !  => Format structure WAR Scalabilité / haute disponibilité Utilisation sous forme  http://xxxxx.appspot.com C’est gratuit avec des quotas C’est des contraintes à prendre en compte L’offre de services: Infrastructure (Matériel, données, réseau ...) Services (Cron, envoie de mail ...) Outils (Console d’administration, plugin Eclipse, script ANT ...)
Vue globale Infrastructure: OS: Linux JVM: Java 6 Mémoire: -Xmx10g => plutôt 1g X serveurs LoadBalancing / FailOver Moteur Web: Jetty Google File System (pour les déploiements) Data: BigTable (Sur GFS) Compression HTTP (en frontal ?) Cache statique (en frontal ?) ...
Vue globale Services: J2EE Moteur JSP, Servlet BigTable en accès JPA ou JDO ou API Mail Sécurité Cache mémoire (JSR 107) Autres Cron Gestion des images Import / Export data Accès aux logs Accès aux services extérieurs en HTTP / HTTPS Accès aux données entreprises : SDC HTTPS (certificat Thawte Consulting cc / Google INC) Personnalisation DNS Versionning ...
Vue globale Outils: Console d’administration / statistiques Plugin Eclipse Tâche Ant Serveur local avec simulation de l’environnement: bigTable GWT Restrictions ... D’autres outils de l’offre Python Import ?/ export  bigTable Extraction des logs
Vue globale Cloud Computing Google (Stats, logs, Quotas) Déploiement (Stats, logs, Quotas) SDC HTTP/S Utilisateurs Communication Déploiement Utilisateurs Administrateurs Web Server / Jetty Application Services Cron Mail URL  Fetch MemCache Images JPA / JDO BigTable GFS (Google File System) Console Administration Security WWW Entreprises API BigTable
Vue globale GAE répond enfin à un grand manque dans le monde Java:  Pas (peu) d’hébergement « gratuit » comme en PHP PHP est populaire grâce aux hébergeurs gratuits (Free, ...) Beaucoup de Blog, CMS, Wiki ... en PHP GAE est surtout l’offre Cloud Computing de Google Amazone est déjà présent sur le marché avec Java
Cloud Computing GAE: C’est l’offre Cloud Computing de Google On déploie dans les nuages, et ils se débrouillent pour que ça marche ! Au même titre qu’Amazone avec EC2, Microsoft, IBM ... Serveurs répartis dans le monde. Un déploiement = propagation automatique sur n serveurs Ne pas comparer GAE à OVH, dedibox ...
La vision de Google GAE est l’une des briques de la vision de Google: Plus besoin d’un OS comme Windows Un simple navigateur peut tout faire Applications à distance Données à distance  Briques: Google Mail Google Calendar Google Doc Google Map Google Android Google App Engine Google Chrome ... Le JavaScript est plus rapide Beaucoup d’attente d’HTML 5
HELLO WORLD
Hello World Les ingrédients: Java 5 ou 6 Eclipse 3.3 ou 3.4 Plugin GAE Site (Eclipse):  http://dl.google.com/eclipse/plugin/3.4 Doc:  http://code.google.com/intl/fr/appengine/docs/java/tools/eclipse.html Un compte GAE http://appengine.google.com/ La recette: Nouveau projet: « Web Application Project » Deploy to App Engine http://xxxxxxx.appspot.com/
Hello World Plugin: Très bien fait, simple et productif. A voir: Le projet web.xml Servlet => 100% standard  & très simple A voir: Le mode local Simulation de GAE en local: Restrictions BigTable ... A voir: DataNucleus lib DataNucleus JDO/JPA JDO !? Obsolète jdoconfig.xml DataNucleus Enhancer => « Enhancement of classes »
GAE PAS-À-PAS
GAE PAS-À-PAS L’infrastructure
GFS / BigTable Goggle File System A ne pas confondre avec GFS (Global File System) de RedHat Système de fichiers de Google Distribué sur plusieurs serveurs La perte d’un serveur n’est pas gênante => Duplication BigTable Système de base de données de google Utilisé pour Google (search), Gmail ... Basé su GFS Base de données répartie, très performante Pas de SQL => GQL Nécessité de créer des index pour les recherches Des contraintes à prendre en compte !
Personnalisation DNS Google offre la possibilité d’avoir son DNS Une seule IP pour tous les sites GAE Comme « Virtual Server » d’Apache En fonction du nom DNS, aiguillage vers le bon site Nécessité de configurer le CNAME pour vérification par Google.
Quotas Gratuit En respectant les quotas Quotas par jour Taux maximum Taux maximum / mn 7400 req/mn kill à 30s Suivi Suivi en temps réel Par la console
Quotas Payant Encore des quotas Mais plus élevés Taux maximum Taux plus important
HTTPS  HTTP et HTTPS disponible Certificat de Google Inc / Thawte Consulting cc Activation par appengine-web.xml Possibilité de forcer HTTPS dans web.xml <?xml version= &quot;1.0&quot; encoding=&quot;utf-8&quot;?> <appengine-web-app xmlns= &quot;http://appengine.google.com/ns/1.0&quot;> ...  <ssl-enabled>true</ssl-enabled> ... </appengine-web-app> <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <web-app xmlns=&quot;http://java.sun.com/xml/ns/javaee&quot; version=&quot;2.5&quot;> ... <security-constraint> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint>  </security-constraint> ... </web-app>
Compression & Cache Les ressources statiques Sont mises en cache par un équipement en frontal ? Ne compte pas dans les quotas Peuvent être explicitement déclarées Compression Fait par un équipement en frontal ? Automatique si le navigateur le supporte
Logs Log classique Log4j Consultable par la console Récupérable par les outils
Limitation Java Google doit assurer la stabilité: Pas de redémarrage de JVM Déploiements successifs Mutualisation des JVM (Class Loader) Et donc: Mêmes contraintes que J2EE http://java.sun.com/blueprints/qanda/ejb_tier/restrictions.html Pas d’I/O (socket, fichier) Pas de Thread API d’introspection Synchronisation des threads System.exit() ... La liste des classes du JRE supportées http://code.google.com/appengine/docs/java/jrewhitelist.html
Limitation Java Les Frameworks supportés Google tient à jour une liste des Frameworks supportés ou non:  http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine Fonctionne J2EE: Servlet, JSP, JPA, JavaMail, XML, JSF 1.1 Langage: Groovy Web: GWT, Struts, Wicket Apache: Commons, log4j Spring Ne fonctionne pas J2EE: WebServices, JMX, JNDI, EJB Hibernate JSF 1.2 Seam
GAE PAS-À-PAS Les outils
Console d’administration Général Statistiques Information sur les quotas (temps réél) Affichage des logs Liste des CRON BigTable Index Vue des données / requêtage Administration Logs d’administration Users Version DNS Gestion du contrat
Version Possibilité de déployer plusieurs versions Une version active Les autres accessibles:  http:// N .latest.xxxxx.appspot.com/ Le basculement « en production » se fait par la console Configuration Propriétés projet appengine-web.xml
GAE PAS-À-PAS Les services
Mail Mail API standard Très simple Gestion multi-part, pièce jointe Restriction sur l’émetteur: Seul admin private void mail(HttpServletRequest req, HttpServletResponse resp) throws Exception { Properties props = new Properties(); Session session =  Session.getDefaultInstance(props, null); Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress(&quot;xxxx.xxxx@gmail.com&quot;)); msg.addRecipient(Message.RecipientType.TO,  new InternetAddress(&quot;xxxx.xxxx@gmail.com&quot;,  &quot;xxxx xxxx&quot;)); msg.setSubject(&quot;Test Google App Engine&quot;); msg.setContent(&quot;<html><body><h1>Hello</h1> from Google App Engine<body></html>&quot;,  &quot;text/html&quot;); Transport.send(msg); }
MemCache Cache mémoire JSR 107 Partagé entre les serveurs Certainement sur BigTable Propriétés EXPIRATION_DELTA  (secondes) EXPIRATION_DELTA_MILLIS (millisecondes) EXPIRATION (date)
Sécurité Standard web.xml Uniquement compte Google Uniquement rôle admin Sinon ... do it yourself API Google user pour avoir des informations mail Surnom <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <web-app xmlns=&quot;http://java.sun.com/xml/ns/javaee&quot; version=&quot;2.5&quot;> <security-constraint> <web-resource-collection> <url-pattern>/admin/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> </web-app>
DataNucleus / JDO /JPA DataNucleus Choisi pour son moteur JPA / JDO multi support (LDAP, XML, JDBC ...) Ancien moteur JDO Léger Pas connu JDO Ils l’ont déterré !? Nécessite de l’« Enhancement » de classe JPA Le standard actuel (J2EE) Transformé en JDO par DataNucleus Limitations Pas de relation n/n Pas de fonction de groupe (min, max, sum ...) Pas de polymorphisme dans les requêtes ...
UrlFetch API HTTP standard Fonctionne en HTTPS SDC Permets de sécuriser les accès entreprise Agent à utiliser dans l’entreprise Activatation:  connection.setRequestProperty(&quot;use_intranet&quot;, &quot;true&quot;); Permet de faire des connexions du client vers GAE en mode keep-alive pour traverser les firewall. private void http(HttpServletRequest req, HttpServletResponse resp) throws Exception { URL url = new URL(&quot;http://www.google.fr&quot;); BufferedReader reader = new BufferedReader(new InputStreamReader( url.openStream() ,&quot;ISO-8859-1&quot;)); String line; while ((line = reader.readLine()) != null) { resp.getWriter().println(line); } reader.close(); }
Cron Possibilité d’avoir des traitements planifiés Fonctionne par appel d’URL Peut-être sécurisé Déclaration dans cron <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <cronentries> <cron> <url>/testappengine?param=cron</url> <description>Test cron 1 minute</description> <schedule>every 1 minutes</schedule> </cron> </cronentries>
GWT
GWT GWT existe depuis trois ans Solution de Google pour faire du RIA Développement en Java Compilation en JavaScript Développement semblable à Swing Concurrents: Flex (Adobe), SilverLight (MircroSoft), JavaFX (Sun) Les avantages: Développements rapides Développement & débuggage en Java Exécution sur le poste client Plus de problèmes de montée en charge Ergonomie et rapidité pour l’utilisateur GWT 1.6: Les nouveautés: Packaging War & déploiement simplifiés Adapté à GAE
GWT Démo http://ippongwt.appspot.com/ Fonctionne en local ou à distance Taille: 430 ko (javascript) Techno: GWT 1.6 EXT 2.0 Infra GAE
LE BILAN
GAE: Pour quoi faire ? Ce qu’il ne faut pas faire: Tenter de déployer une application existante: Alfresco, LifeRay, MuleESB ... Déployer des EAR / EJB Application type: IHM: Web RIA: Flex ou GWT Pas beaucoup de bande passante Pas beaucoup de CPU Service applicatif => Grosse granularité  Web 2.0 (JSF, ...) Attention à la granularité de la couche service Services distants Les Webservices ne sont pas encore utilisables Donc: Plutôt adapté aux nouveaux développements
Architecture type Utilisateurs HTML AJAX Utilisateurs GRPC Utilisateurs AMF GWT Flex Entreprise HTTP XML RIA Flex RIA GWT Web 2.0 Services distants Application JPA BigTable Application JPA BigTable Application JPA BigTable Application JPA BigTable
Contraintes BigTable  S’adapter aux contraintes de BigTable Pas de modélisation n/n Les FK ne peuvent pas être de type long Limitation JPA par rapport à JDO ? ... Import / export de données Outils primitifs en Python Import non supporté Sécurité standard limitée sur compte Google Performances Les serveurs sont aux US: 250ms de ping BigTable ne semble pas rapide sur les petites requêtes Confidentialité Les données sont chez Google Question de confiance
Perspectives GWT Les entreprises sont en phase d’étude ou d’adoption de RIA Jahia est déjà en GWT (admin), Noheto en cours Les RIA vont remplacer MVC 2 sur la partie « application » Plus simple à développer Plus performant Plus ergonomique En concurrence avec Flex (Adobe), Silverlight (Microsoft) et JavaFX (Sun) Frameworks très bien né, mais manque de communication C’est le seul en Java Grosse communauté de développeur
Perspectives Google Application Engine Va dynamiser les applications Open Source Java Wiki, Blog, Forum ... Des sociétés vont bâtir autour de l’offre Google GMail, GDoc ... et GAE Opportunités à saisir pour les SSII What else ?
Ressources Documentation Google http://code.google.com/intl/fr/appengine/docs/java/overview.html Les Quotas http://code.google.com/appengine/docs/quotas.html Console d’accès aux applications http://appengine.google.com/ GWT & GAE http://googlewebtoolkit.blogspot.com/

Google App Engine For Java

  • 1.
    Document confidentiel - Ce document est la propriété exclusive d’Ippon Technologies et il ne peut être reproduit, publi é ou divulgu é sans son autorisation préalable Sommaire Effectifs par agence Google App Engine for Java Avril 2009
  • 2.
    Plan Introduction Pourquoicette présentation ? Présentation Présentation des services La vue globale Le Cloud Computing La vision de Google Hello World GAE pas-à-pas L’infrastructure Les services Les outils GAE & GWT 1.6 Le bilan
  • 3.
  • 4.
    Introduction Google aannoncé le support de Java pour GAE le 07 avril 2009 GAE est un service qui permet de déployer des applications web sur l’infrastructure Google GAE supportait uniquement Python depuis un an Le service Python n’a pas eu un grand succès Java était le langage le plus demandé (devant PHP) pour GAE Java est déjà utilisé par Google pour Google Web Toolkit Annonce simultanée de GAE Java et GWT 1.6
  • 5.
  • 6.
    Vue globale GAE:Dans les grandes lignes Service de Google pour héberger des applications Web Java Java ! => Format structure WAR Scalabilité / haute disponibilité Utilisation sous forme http://xxxxx.appspot.com C’est gratuit avec des quotas C’est des contraintes à prendre en compte L’offre de services: Infrastructure (Matériel, données, réseau ...) Services (Cron, envoie de mail ...) Outils (Console d’administration, plugin Eclipse, script ANT ...)
  • 7.
    Vue globale Infrastructure:OS: Linux JVM: Java 6 Mémoire: -Xmx10g => plutôt 1g X serveurs LoadBalancing / FailOver Moteur Web: Jetty Google File System (pour les déploiements) Data: BigTable (Sur GFS) Compression HTTP (en frontal ?) Cache statique (en frontal ?) ...
  • 8.
    Vue globale Services:J2EE Moteur JSP, Servlet BigTable en accès JPA ou JDO ou API Mail Sécurité Cache mémoire (JSR 107) Autres Cron Gestion des images Import / Export data Accès aux logs Accès aux services extérieurs en HTTP / HTTPS Accès aux données entreprises : SDC HTTPS (certificat Thawte Consulting cc / Google INC) Personnalisation DNS Versionning ...
  • 9.
    Vue globale Outils:Console d’administration / statistiques Plugin Eclipse Tâche Ant Serveur local avec simulation de l’environnement: bigTable GWT Restrictions ... D’autres outils de l’offre Python Import ?/ export bigTable Extraction des logs
  • 10.
    Vue globale CloudComputing Google (Stats, logs, Quotas) Déploiement (Stats, logs, Quotas) SDC HTTP/S Utilisateurs Communication Déploiement Utilisateurs Administrateurs Web Server / Jetty Application Services Cron Mail URL Fetch MemCache Images JPA / JDO BigTable GFS (Google File System) Console Administration Security WWW Entreprises API BigTable
  • 11.
    Vue globale GAErépond enfin à un grand manque dans le monde Java: Pas (peu) d’hébergement « gratuit » comme en PHP PHP est populaire grâce aux hébergeurs gratuits (Free, ...) Beaucoup de Blog, CMS, Wiki ... en PHP GAE est surtout l’offre Cloud Computing de Google Amazone est déjà présent sur le marché avec Java
  • 12.
    Cloud Computing GAE:C’est l’offre Cloud Computing de Google On déploie dans les nuages, et ils se débrouillent pour que ça marche ! Au même titre qu’Amazone avec EC2, Microsoft, IBM ... Serveurs répartis dans le monde. Un déploiement = propagation automatique sur n serveurs Ne pas comparer GAE à OVH, dedibox ...
  • 13.
    La vision deGoogle GAE est l’une des briques de la vision de Google: Plus besoin d’un OS comme Windows Un simple navigateur peut tout faire Applications à distance Données à distance Briques: Google Mail Google Calendar Google Doc Google Map Google Android Google App Engine Google Chrome ... Le JavaScript est plus rapide Beaucoup d’attente d’HTML 5
  • 14.
  • 15.
    Hello World Lesingrédients: Java 5 ou 6 Eclipse 3.3 ou 3.4 Plugin GAE Site (Eclipse): http://dl.google.com/eclipse/plugin/3.4 Doc: http://code.google.com/intl/fr/appengine/docs/java/tools/eclipse.html Un compte GAE http://appengine.google.com/ La recette: Nouveau projet: « Web Application Project » Deploy to App Engine http://xxxxxxx.appspot.com/
  • 16.
    Hello World Plugin:Très bien fait, simple et productif. A voir: Le projet web.xml Servlet => 100% standard & très simple A voir: Le mode local Simulation de GAE en local: Restrictions BigTable ... A voir: DataNucleus lib DataNucleus JDO/JPA JDO !? Obsolète jdoconfig.xml DataNucleus Enhancer => « Enhancement of classes »
  • 17.
  • 18.
  • 19.
    GFS / BigTableGoggle File System A ne pas confondre avec GFS (Global File System) de RedHat Système de fichiers de Google Distribué sur plusieurs serveurs La perte d’un serveur n’est pas gênante => Duplication BigTable Système de base de données de google Utilisé pour Google (search), Gmail ... Basé su GFS Base de données répartie, très performante Pas de SQL => GQL Nécessité de créer des index pour les recherches Des contraintes à prendre en compte !
  • 20.
    Personnalisation DNS Googleoffre la possibilité d’avoir son DNS Une seule IP pour tous les sites GAE Comme « Virtual Server » d’Apache En fonction du nom DNS, aiguillage vers le bon site Nécessité de configurer le CNAME pour vérification par Google.
  • 21.
    Quotas Gratuit Enrespectant les quotas Quotas par jour Taux maximum Taux maximum / mn 7400 req/mn kill à 30s Suivi Suivi en temps réel Par la console
  • 22.
    Quotas Payant Encoredes quotas Mais plus élevés Taux maximum Taux plus important
  • 23.
    HTTPS HTTPet HTTPS disponible Certificat de Google Inc / Thawte Consulting cc Activation par appengine-web.xml Possibilité de forcer HTTPS dans web.xml <?xml version= &quot;1.0&quot; encoding=&quot;utf-8&quot;?> <appengine-web-app xmlns= &quot;http://appengine.google.com/ns/1.0&quot;> ... <ssl-enabled>true</ssl-enabled> ... </appengine-web-app> <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <web-app xmlns=&quot;http://java.sun.com/xml/ns/javaee&quot; version=&quot;2.5&quot;> ... <security-constraint> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> ... </web-app>
  • 24.
    Compression & CacheLes ressources statiques Sont mises en cache par un équipement en frontal ? Ne compte pas dans les quotas Peuvent être explicitement déclarées Compression Fait par un équipement en frontal ? Automatique si le navigateur le supporte
  • 25.
    Logs Log classiqueLog4j Consultable par la console Récupérable par les outils
  • 26.
    Limitation Java Googledoit assurer la stabilité: Pas de redémarrage de JVM Déploiements successifs Mutualisation des JVM (Class Loader) Et donc: Mêmes contraintes que J2EE http://java.sun.com/blueprints/qanda/ejb_tier/restrictions.html Pas d’I/O (socket, fichier) Pas de Thread API d’introspection Synchronisation des threads System.exit() ... La liste des classes du JRE supportées http://code.google.com/appengine/docs/java/jrewhitelist.html
  • 27.
    Limitation Java LesFrameworks supportés Google tient à jour une liste des Frameworks supportés ou non: http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine Fonctionne J2EE: Servlet, JSP, JPA, JavaMail, XML, JSF 1.1 Langage: Groovy Web: GWT, Struts, Wicket Apache: Commons, log4j Spring Ne fonctionne pas J2EE: WebServices, JMX, JNDI, EJB Hibernate JSF 1.2 Seam
  • 28.
  • 29.
    Console d’administration GénéralStatistiques Information sur les quotas (temps réél) Affichage des logs Liste des CRON BigTable Index Vue des données / requêtage Administration Logs d’administration Users Version DNS Gestion du contrat
  • 30.
    Version Possibilité dedéployer plusieurs versions Une version active Les autres accessibles: http:// N .latest.xxxxx.appspot.com/ Le basculement « en production » se fait par la console Configuration Propriétés projet appengine-web.xml
  • 31.
  • 32.
    Mail Mail APIstandard Très simple Gestion multi-part, pièce jointe Restriction sur l’émetteur: Seul admin private void mail(HttpServletRequest req, HttpServletResponse resp) throws Exception { Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress(&quot;xxxx.xxxx@gmail.com&quot;)); msg.addRecipient(Message.RecipientType.TO, new InternetAddress(&quot;xxxx.xxxx@gmail.com&quot;, &quot;xxxx xxxx&quot;)); msg.setSubject(&quot;Test Google App Engine&quot;); msg.setContent(&quot;<html><body><h1>Hello</h1> from Google App Engine<body></html>&quot;, &quot;text/html&quot;); Transport.send(msg); }
  • 33.
    MemCache Cache mémoireJSR 107 Partagé entre les serveurs Certainement sur BigTable Propriétés EXPIRATION_DELTA (secondes) EXPIRATION_DELTA_MILLIS (millisecondes) EXPIRATION (date)
  • 34.
    Sécurité Standard web.xmlUniquement compte Google Uniquement rôle admin Sinon ... do it yourself API Google user pour avoir des informations mail Surnom <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <web-app xmlns=&quot;http://java.sun.com/xml/ns/javaee&quot; version=&quot;2.5&quot;> <security-constraint> <web-resource-collection> <url-pattern>/admin/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> </web-app>
  • 35.
    DataNucleus / JDO/JPA DataNucleus Choisi pour son moteur JPA / JDO multi support (LDAP, XML, JDBC ...) Ancien moteur JDO Léger Pas connu JDO Ils l’ont déterré !? Nécessite de l’« Enhancement » de classe JPA Le standard actuel (J2EE) Transformé en JDO par DataNucleus Limitations Pas de relation n/n Pas de fonction de groupe (min, max, sum ...) Pas de polymorphisme dans les requêtes ...
  • 36.
    UrlFetch API HTTPstandard Fonctionne en HTTPS SDC Permets de sécuriser les accès entreprise Agent à utiliser dans l’entreprise Activatation: connection.setRequestProperty(&quot;use_intranet&quot;, &quot;true&quot;); Permet de faire des connexions du client vers GAE en mode keep-alive pour traverser les firewall. private void http(HttpServletRequest req, HttpServletResponse resp) throws Exception { URL url = new URL(&quot;http://www.google.fr&quot;); BufferedReader reader = new BufferedReader(new InputStreamReader( url.openStream() ,&quot;ISO-8859-1&quot;)); String line; while ((line = reader.readLine()) != null) { resp.getWriter().println(line); } reader.close(); }
  • 37.
    Cron Possibilité d’avoirdes traitements planifiés Fonctionne par appel d’URL Peut-être sécurisé Déclaration dans cron <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <cronentries> <cron> <url>/testappengine?param=cron</url> <description>Test cron 1 minute</description> <schedule>every 1 minutes</schedule> </cron> </cronentries>
  • 38.
  • 39.
    GWT GWT existedepuis trois ans Solution de Google pour faire du RIA Développement en Java Compilation en JavaScript Développement semblable à Swing Concurrents: Flex (Adobe), SilverLight (MircroSoft), JavaFX (Sun) Les avantages: Développements rapides Développement & débuggage en Java Exécution sur le poste client Plus de problèmes de montée en charge Ergonomie et rapidité pour l’utilisateur GWT 1.6: Les nouveautés: Packaging War & déploiement simplifiés Adapté à GAE
  • 40.
    GWT Démo http://ippongwt.appspot.com/Fonctionne en local ou à distance Taille: 430 ko (javascript) Techno: GWT 1.6 EXT 2.0 Infra GAE
  • 41.
  • 42.
    GAE: Pour quoifaire ? Ce qu’il ne faut pas faire: Tenter de déployer une application existante: Alfresco, LifeRay, MuleESB ... Déployer des EAR / EJB Application type: IHM: Web RIA: Flex ou GWT Pas beaucoup de bande passante Pas beaucoup de CPU Service applicatif => Grosse granularité Web 2.0 (JSF, ...) Attention à la granularité de la couche service Services distants Les Webservices ne sont pas encore utilisables Donc: Plutôt adapté aux nouveaux développements
  • 43.
    Architecture type UtilisateursHTML AJAX Utilisateurs GRPC Utilisateurs AMF GWT Flex Entreprise HTTP XML RIA Flex RIA GWT Web 2.0 Services distants Application JPA BigTable Application JPA BigTable Application JPA BigTable Application JPA BigTable
  • 44.
    Contraintes BigTable S’adapter aux contraintes de BigTable Pas de modélisation n/n Les FK ne peuvent pas être de type long Limitation JPA par rapport à JDO ? ... Import / export de données Outils primitifs en Python Import non supporté Sécurité standard limitée sur compte Google Performances Les serveurs sont aux US: 250ms de ping BigTable ne semble pas rapide sur les petites requêtes Confidentialité Les données sont chez Google Question de confiance
  • 45.
    Perspectives GWT Lesentreprises sont en phase d’étude ou d’adoption de RIA Jahia est déjà en GWT (admin), Noheto en cours Les RIA vont remplacer MVC 2 sur la partie « application » Plus simple à développer Plus performant Plus ergonomique En concurrence avec Flex (Adobe), Silverlight (Microsoft) et JavaFX (Sun) Frameworks très bien né, mais manque de communication C’est le seul en Java Grosse communauté de développeur
  • 46.
    Perspectives Google ApplicationEngine Va dynamiser les applications Open Source Java Wiki, Blog, Forum ... Des sociétés vont bâtir autour de l’offre Google GMail, GDoc ... et GAE Opportunités à saisir pour les SSII What else ?
  • 47.
    Ressources Documentation Googlehttp://code.google.com/intl/fr/appengine/docs/java/overview.html Les Quotas http://code.google.com/appengine/docs/quotas.html Console d’accès aux applications http://appengine.google.com/ GWT & GAE http://googlewebtoolkit.blogspot.com/