Android, AppEngine, GWT, Wave autant de technologies Google qui font l’actualité… La preuve ? plus de 80 personnes étaient présentes à la dernière présentation du NantesJUG intitulée “Soirée Spéciale Google Technologies”. Didier Girard (SFEIR) nous faisait l’honneur de faire un arrêt à Nantes pour son JUGing.

Je dois dire que j’ai été agréablement surpris par la qualité de l’intervenant : des explications simples, une très bonne maitrise des sujets, et une forte interaction avec le public. Ainsi, cette présentation était accompagnée de nombreuses démonstrations, ponctuées de “clap, clap, clap” ou de “bouuuhh” suivant le succès de chacune d’elle :) Didier était accompagné de Salvador Diaz (freelance) sur la partie GWT2.

Photos : http://picasaweb.google.com/diaz.salvador/NantesJUG

Pour ceux qui n’étaient pas présents à cette présentation, voici mes notes :

Architecture Google

“Le Cloud, rien que le Cloud.”

Objectif: mettre à disposition les technologies utilisées par Google en interne pour en faire profiter les gens… et bien sûr monétiser ces technologies .

Lexique

  • IaaS : Location d’infrastructure (serveur, bande passante)

  • PaaS : Location de plateforme (container J2EE, stockage)

  • SaaS : location de service (application verticale) “De la machine au software, louer ce dont on a besoin”

Vision

OpenWeb

  • Chrome!

  • Support de HTML5

  • Les applications RIA oui, mais uniquement avec des standards

ROA

A écouter : http://lescastcodeurs.com/

Google App Engine

Google App Engine est une plateforme d’hébergement d’applications Java, sur les serveurs de Google.

Une partie de l’API Java standard est disponible, ce qui rend potentiellement hébergeable beaucoup d’application Java existantes.

  • Plugin Eclipse fournit par Google : http://code.google.com/intl/fr/eclipse/

  • Philosophie NoSQL: stockage dans BigTable Accès par l’api JDO

  • Déploiement “One-Click” 1000 déploiement autorisé par jour (large !)

  • Pub google :

    • 5 millions de pages vues par mois au maximum
  • Réalité :

    • grosse limitation de bande passante (1Go / jour)

Il est possible de donner une limite de facturation par jour (genre 2$ par jour)

Il faut intégrer AppEngine (le Cloud Computing en général) dans nos choix d’architecture.

  • Exemple évident : campagne marketing, avec mini-site dynamique.

  • Problématique “complexe” sans le Cloud Computing :

    • Quelle volumétrie attendre ?
    • Pourquoi monter 30 serveurs pour ne plus en avoir besoin 10 jours plus tard ?

Données confidentielles chez Google ?

SDC : ouvrir un port 80 de façon indéfini vers google : un simple tunneling HTTP

Diagramme de l’intégration de SDC dans la stack Google AppEngine :

Adhérence avec les API proprio de Google

  • La persistance avec JDO (Laurent Gérin: “JDO, ca ne marche pas” :)

  • Le support de XMPP

Didier Girard: Comme pour l’ensemble des API non J2EE, il faut utiliser les bons patterns pour permettre le changement de provider le jour venu

Google GWT

Google Web Toolkit est un ensemble d’outils de Google permettant de développement d’applications riches (RIA) via notamment un compilateur Java vers Javascript.

Plugin Eclipse fournit par Google : http://code.google.com/intl/fr/eclipse/

Didier Girard recommande GWT Designer ($ 79 / an)

GWT fait de la compatibilité au cas par cas pour chaque browser (!= de la vision OpenWeb !) Par exemple GWT 1.7 est désormais compatible avec IE8.

GWT ne fait pas “encore” du OpenWeb car ce n’est pas actuellement possible : support de IE6 & co…

Diagramme des traitements GWT :

Composants GWT natifs

Remarque sur la pauvreté des composants GWT natifs

Choix #1 utiliser une des librairies de composants complémentaires (SmartGWT, GWT-Ext, …)

Didier Girard : Oui, c’est bien mais ca dépend de la durée de vie de l’application Pour une livraison dans 3 mois : oui Mais pour une application avec une durée de vie de +5 ans : faire ses propres composants personnalisés

A lire : http://www.slideshare.net/hbraun/gwt-jug-stuttgart

GWT2

Nouveautés de GWT2

  • Utilisation d’un plugin dans votre navigateur préféré pour le debug (et plus UN navigateur intégré par platforme)

  • RunAsync : permet de charger des parties d’une application GWT “on-demand”, plutôt que de charger toute l’application dès l’affichage initiale dans le navigateur (sinon, on arrive vite à des applications avec UN fichier javascript > 800Ko) Voir article

  • UIBinder : encore un nouveau langage de définition d’interface en XML… pfff… (qui n’est d’ailleurs même pas le même que celui d’Android)

  • Meilleur support de HtmlUnit pour les tests unitaires

Google Android

Google Android est à la fois :

  • un système d’exploitation (basé sur Linux) pour appareils mobiles

  • des applications de bases pour le téléphone

  • un SDK pour le développement d’application complémentaires

Concepts fondamentaux

Plugin Eclipse fournit par Google : http://developer.android.com/sdk/eclipse-adt.html

Création d’un compte sur le Market Place : 2 minutes montre en main + 25$

On peut directement publier des applications qui sont accessibles depuis un téléphone Android [clin d’oeil au processus de validation présent sur le “Store” de la marque à la pomme :]

Diagramme de la stack Android :

Google Wave

Objectif: réunir en un seul lieu l’ensemble des éléments d’une conversation (une “Wave”) : email, chat, documents, gadgets Pour l’instant cet outil reste en “beta semi-ouverte”.

Une Wave est statefull : on le retrouve dans l’état précédent à chaque ouverture de session

Les Gadgets sont également statefull : on peut conserver une HashMap d’infos

Robots

Les “robots” sont un élément important de Wave. Ils reçoivent l’ensemble des éléments de la Wave et peuvent réagir aux événements. L’ajout d’un “robot” peut automatiquement déclencher l’ajout d’un ou des Gadgets.

Exemple métier : demande de congés

  1. Un robot de gestion des congés
  2. On l’ajoute dans la Wave et ceci déclenche l’affichage d’un Gadget (mini-application avec calendrier)
  3. On effectue la demande de congé via le formulaire du Gadget
  4. Elle entre en état de “validation”
  5. La personne valide la demande
  6. Le robot détecte cette validation et peut éditer une demande, envoyer un mail, etc…

Exemple “stack Google complète”

Conclusion

  • Développeur = innovateur

  • AppEngine ou Android : un bon moyen de déployer son application, son idée, sa petite révolution avec une retour direct des utilisateurs (réduction potentielle des intermédiaires)

Enjoy!