Android
Cette soirée Google commence tout d'abord
avec une présentation d'Android proposée par deux consultants d'Oxiane, Gabriel
Kastenbaum et Stéphane Liétard. Les deux conférenciers ont d'abord évoqué les
approches historiques et marketing autour des smartphones et d'Android avec
quelques rappels :
- le début des smartphones avec les technologies BlackBerry et ses
fonctionnalités pushmail dès 2001-2002, iPhone en 2007,
- les premiers modèles de smartphones s'appuyant sur Android en 2008,
- les chiffres publiés par Gartner prévoyant que la plateforme Android
prendra la deuxième place en 2012 derrière Symbian de Nokia et légèrement
devant iPhone,
Et ont continué avec les aspects plus techniques en rappelant qu'Android est
un système d'exploitation pour Smartphones, PDAs et autres terminaux mobiles.
Il est basé sur un noyau linux allégé de son gestionnaire de données.Android
vient avec sa machine virtuelle, DALVIK VM, spécialement conçue pour les
systèmes embarqués ayant peu de ressources.
DALVIK offre la possibilité d'écrire des applications pour Android en Java.
Les classes compilées sont transformées en .DEX et non en .CLASS (bytecode pour
JVM classique). Ce format est spécialisé pour la DALVIK VM et est optimisé pour
un terminal mobile. Aussi, l'ensemble des classes du JRE classique n'est pas
supporté, mais l'essentiel y est.
Développer avec Android peut se faire simplement en récupérant le SDK
Android et le plugin Eclipse associé. Toute application Android est définie
dans un fichiers (android manifest) au format XML.
Une application sur Android est composée d'un ou plusieurs composants qui
sont de 4 types:
- Activity : Un écran de l'application,
- Service : Un service qui tourne en tâche de fond,
- Content Provider : Un fournisseur de contenus (souvent une base de données
SQLite),
- Broadcast Receiver : Réception d'un événement envoyé à toutes les
applications (niveau de la batterie, réseaux, appel, sms, etc.).
Une application peut appeler un composant d'une autre application (exemple :
ouvrir une page du navigateur ou la configuration du système), lancer un
service d'une autre application, ou accéder aux données d'une autre application
(exemple : accéder aux contacts).
Pour relier les composants entre eux, on passe par la notion d' "intent" qui
encapsule les actions et données échangées. C'est ensuite Android qui s'occupe
de trouver l'application à lancer pour l'Intent donné, il utilise pour cela le
fichier android manifest où tous les composants de l'application sont
enregistrés.
Et enfin, on a eu droit à une petite démonstration avec une application
Android présentant une page et un bouton qui, en l'actionnant, affiche une
autre application.
Pour plus d'infos : http://developer.android.com/index.html
Google App Engine, Groovy
and Gaeylik
La soirée continue avec
la conférence Google App Engine proposée par Marc-Antoine Garrigue et Gaël
Lazzari d'OCTO et Guillaume Laforge de Spring Source
Guillaume Laforge a commencé par la présentation de AppEngine en rappelant
que c'est la Plateform as a Service (PaaS) de Google où on peut héberger ses
application et y accéder via URLs. Google propose à l'application "hébergée"
des APIs et fonctionnalités qui permettent de gérer le cache, email, XMPP,
Cron, etc.
Les principales limitations de la plateforme sont :
- pas de base relationnelle,
- la durée d'une requête est limitée à 30 secondes,
- le système de fichier est en lecture seule,
- impossibilité d'utiliser des Threads,
- pas de sockets natif,
- certaines classes de l'API Java ne sont pas autorisées,
- taille de fichier est limitée.
Les services de la plateforme App Engine sont gratuits jusqu'à un certain
seuil. Les quotas au-delà desquels les services deviennent payants sont assez
larges. Ils concernent le volume de données échangées, le nombre de requêtes,
etc. Une interface d'administration permet de gérer les applications déployées,
et via un tableau de bord de visualiser les statistiques et le graphe
d'activités. Pas de base de données relationnelle classique pour la persistance
de données mais une sorte de Hashtable/Bigtable. Par contre sur cette
structure, Google propose des abstractions permettant d'utiliser JPA/JDO pour
la persistance de données. Avec ce gestionnaire de données, le nombre
d'occurrences retournées par une requête est limité à 1000. Il n'y a pas de
support de transaction ni de possibilité de lancer des requêtes de type JOIN ou
CONSTRAINT. En revanche on peut bénéficier des "facilités" permettant de gérer
des entités hétérogènes de l'application dans une même structure de
données.
Par la suite Marc-Antoine Garrigue et Gaël Lazzari ont présenté Groovy et
Gaelyk. Groovy, langage dynamique basé sur Java, à présent peut fonctionner
avec App Engine. Pour arriver à cette compatibilité, Groovy a modifié quelques
lignes de codes après un travail en commun avec Google. Avec Groovy on peut
faire des composants qui ressemblent à des servlets, les Groovlets ainsi que
des pages Groovy Template Servlet.
Gaelyk, le Framework/boite à outils facilite le développement avec Groovy et
aide le développeur à interagir plus facilement avec App Engine. L'application
de démonstration FetchFeeds est plus qu'une simple application. Proposée en
open source sous licence Apache, elle utilise bien sûr les technologies App
Engine, Groovy et Gaelyk. Elle montre de plus comment implémenter les
mécanismes subtils permettant de réduire l'utilisation de ressources et donc
comment ne pas dépasser trop vite les quotas imposés par App Engine.
http://groovy.codehaus.org
http://gaelyk.appspot.com
Google Wave pour les
développeurs
Après le buffet sympathique et
classique des conférences Paris JUG, nous remontons de nouveau les quelques
escaliers I.S.E.P qui nous mènent à la salle de conférence pour suivre la
dernière conférence de la soirée.
Didier Girard le Directeur des Opérations et de l'innovation de SFEIR, et
Salvador Diaz, consultant spécialisé dans les technologies Google, nous
présentent le tout dernier outil collaboratif de Google, Google Wave.
À en croire les sondages à mains levées, la grande majorité des participants
présents dans la salle développe en Java, a déjà développé en GWT et pour
certains sur Android et beaucoup possèdent déjà un compte Wave !
La présentation débute par une revue des principales fonctionnalités de Wave
suivi d'une série de démonstrations.
Google Wave est généralement présenté comme une plateforme de communication
faisant la synthèse de messagerie instantanée, d'email et de wiki avec donc la
possibilité de partager un même espace entre plusieurs intervenants, drag &
droper des photos ou partager des données pendant une conversation, etc. Cet
outil collaboratif est développé en GWT et apporte deux principales innovations
qui sont la possibilité de créer et de déposer des gadgets dans une Wave et la
possibilité de développer des Robots (Goldorak pour les intimes !), une sorte
de servlet qui collabore à sa façon aux conversations.
En effet, un Robot est un automate que l'on fait participer à une Wave. Il
peut se comporter comme n'importe quel autre participant et dès lors il peut
modifier le contenu de la Wave, ajouter des participants, etc. Les Robots
supportés par Wave sont déployés sur Google App Engine et communiquent en HTTP
et peuvent être indifféremment écrits en Python ou en Java. En déployant un
Robot sur AppEngine, Google crée implicitement une url de type
http://application.appspot.com que wave va appeler pour le robot qui aura alors
comme adresse mail : application@appspot.com. Pour illustrer les possibilités
que Wave offre aux développeurs, Salvador et Didier ont proposé de nous faire
trois démonstrations.
La première démonstration nous montre comment créer un gadget, le déployer
sur App Engine et l'ajouter à une Wave. Il suffit de récupérer un wrapper,
étendre un gadget et lui donner un titre. Le gadget créé dans la démonstration,
n'est autre que le logo de Paris JUG qui se déplace dans tous les sens sur
l'écran. Un simple copier/coller de l'url suffira pour l'ajouter à une Wave.
Les autres invités de la Wave pourront dès lors le voir et interagir avec.
La deuxième démonstration consiste à créer un Robot qui va participer à une
chaine de transmission et de traitement de SMS qui utilise les technologies
Android, AppEngine, GWT et enfin Wave. Le jeu consiste à faire un sondage via
SMS avec la salle sur la présence des participants à un prochain événement
Paris JUG. Les participants envoient un SMS à un téléphone Android, le
téléphone possède une application qui réceptionne tous les SMS du téléphone
pour les envoyer sur un serveur AppEngine. Enfin, un gadget écrit en GWT et
ajouté sur une wave va interroger régulièrement AppEngine pour afficher les
SMS. Le Robot développé pour la démonstration est déployé sur App Engine. Pour
recevoir le messge, il est abonné aux événements de la wave (modification d'un
message, ajout d'un participant, etc.), s'il détecte une commande particulière
(SEND(message;téléphone)), il va former le message que l'application Android
vient scruter et envoyer en SMS. La salle participe activement en envoyant des
SMS que l'on voit défiler avec les chiffres consolidés dans la "boite" Wave de
nos deux conférenciers.
La troisième et dernière démonstration nous montre un exemple d'utilisation
de Wave en entreprise. Il s'agit d'un outil collaboratif léger à base de
gadgets de prise de congés. Le demandeur de congés rajoute les gadgets dans sa
Wave et renseigne les jours demandés. Il invite ensuite son responsable et dès
lors un mini workflow de prise de congés s'engage via le Wave entre le
demandeur et le responsable qui doit valider la demande.
Ces trois démonstrations et l'explication de code qui a suivi, ont montré
aux participants comment Wave peut se placer au sein des technologies Google et
comment on peut assez simplement et sans besoin d'infrastructure complexes,
mettre en oeuvre via ces technologies des applications techniquement
complexes.
https://services.google.com/fb/forms/wavesignup/
http://code.google.com/intl/fr/apis/wave/
À la fin de la conférence, les Juggers qui le souhaitent peuvent demander
leur nouveau compte Wave juste avant de se diriger vers la troisième mi-temps
qui promet d'être riche en discussion.