Nantes JUG Technologies Google
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
ROA Ressource Oriented Application
1 ressource = 1 url
REST http://www.pompage.net/pompe/comment-j-ai-explique-rest-a-ma-femme/
Pour les applications “single pages bootstrap” (ex: gmail), on utilise le # dans l’URL pour indiquer la ressource à utiliser
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
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
- Un robot de gestion des congés
- On l’ajoute dans la Wave et ceci déclenche l’affichage d’un Gadget (mini-application avec calendrier)
- On effectue la demande de congé via le formulaire du Gadget
- Elle entre en état de “validation”
- La personne valide la demande
- Le robot détecte cette validation et peut éditer une demande, envoyer un mail, etc…
Exemple “stack Google complète”
http://picasaweb.google.com/diaz.salvador/ParisJUG#5404449358120409650
http://picasaweb.google.com/diaz.salvador/ParisJUG#5404449858554874354
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!