Devoxx France 2012 : quelques bonnes pratiques pour le développement Java mobile

Bâtir des applications Web mobiles avec Grails, optimiser son site pour mobile, réalisation d'interfaces Android... Tour d'horizon de la troisième journée.

Keynote : Portrait du Développeur en "The Artist"
Brillante présentation de Patrick Chanezon, comparant l'histoire de "The Artist" au parcours d'un développeur commun qui -- après avoir réalisé des projets complexes mais insipides, ne satisfaisant que les directeurs techniques et laissant de côté les utilisateur finaux -- est devenu dépassé et inutile.
La morale de son histoire est qu'un développeur n'est réellement bon que s'il aime ce qu'il fait, que s'il est passionné par son projet.

Bâtir des applications Web Mobiles avec Grails
Stéphane Maldi et Sébastien Blanc présentent en duo Grails appliqué au développement d'une application mobile.
Grails est l'équivalent de Ruby on Rails appliqué au Groovy, langage alternatif de la JVM et syntaxiquement très proche du Java. Cependant il diffère en nombreux points, comme par exemple la gestion automatique des getter/setter et un visibilité public des classes en par défaut.
Basé sur Spring, il permet la migration aisée d'une application Spring MVC. Il est également très bien intégré à IntelliJ et Eclipse. Il possède également un moteur de génération de code automatique, comme ce que l'on retrouve chez Spring Roo. Un squelette d'application fonctionnelle est donc très rapidement mis en place.
Pendant la démo, ils ont pu réaliser une application gérant des messages géolocalisés et leur affichage sur une vue google map, puis de déployer le tout sur CloudFoundry en moins de 20 minutes, et ce en prenant le temps de nous expliquer les étapes !

De l'Open Source à l'Open API avec RESTlet
Le principe REST a été défini en 2000, juste après la finalisation de la version 1.1 du protocole HTTP, sur lequel il repose. Pendant une dizaine d'année, il a eu du mal à s'imposer face à SOAP, mais est aujourd'hui incontournable. Retournant aux principes de base de l'HTTP, il est simple et rapide à mettre en place, et également souple car nous avons le choix dans le format de sortie, dont les principaux sont l'XML et le Json permettant des optimisations pour le mobile.
Si les applications mobiles sont à elles seules une cause de l'utilisation de REST, les sites y trouvent aussi un intérêt certain couplé à Ajax, dans la réalisation d'applications Web modernes ! Il arrive même que les APIs soient à elles-seules source de profit pour une entreprise comme nous le montre Twilio, qui fourni des services de communication "dans le cloud".

Optimiser son site pour mobile
Romain Maton présente les concepts de base dans l'optimisation d'un site pour terminaux mobiles. La première règle qui s'impose, est de ne pas se limiter à une plateforme ! Ne surtout pas imposer un look&feel iPhone à lors que le site sera visible sur un Android, Windows Phone, Blackberry, etc. Malheureusement cette règle loin d'être appliquée.
Un deuxième point à considérer est qu'Opéra est le navigateur mobile le plus utilisé. Il ne faut donc pas se contenter par WebKit.
Enfin, troisième recommandation importante est de laisser la possibilité à l'utilisateur de repasser en mode "desktop", surtout dans le cas où toutes les fonctions ne sont pas accessibles sur la version mobile.

Astuce pour récupérer les informations d'un navigateur mobile : learnto.mobi.

Android, Graphisme et performances
Dans sa conférence, Romain Guy -- lead tech UI du projet Android à Google -- a abordé le sujet des performances liées à l'interface dans une application Android.
Je retiens tout d'abord la remarque concernant l'utilisation des AyncTasks : ne pas en abuser ! Certes très utile pour simplifier l'utilisation des threads couplés à l'UI, la classe AsyncTask ne doit pas être utilisée pour les traitements trop long, comme un téléchargement par exemple. De plus, depuis Honeycomb les AyncTasks sont "sérialisées", et s'exécutent maintenant à l'une après l'autre.
Un point délicat dans la réalisation d'interfaces Android est d'éviter les imbrications de Layout. Aussi, dans un LinearLayout il faudra limiter l'utilisation des layout_weight, trop coûteux, et préférer si possible le GridLayout pour la réalisation de formulaires.
Il rappelle aussi un élément peu connu : le ViewStub. Il permet de déclarer l'insertion d'un layout sans l'inflater dès le début, toujours par souci de performance. Cet élément sera inflaté si besoin lors de son affichage (passage d'invisible à visible).
Mais l'ultime recommandation pour réaliser une interface fluide, c'est de limiter au maximum la création de nouveaux objets, en particulier dans les ListAdapter.

The End
Il est temps maintenant de retrouver les Cast Codeurs pour finir en beauté cette toute première édition du Devoxx France !
Ambiance détendue à souhait, le bilan du Devoxx est tout simplement excellent. Une organisation frôlant la perfection, des horaires respectées à la seconde près et des passionnés par milliers !
Ces années sont celles de la mobilité, du SoLoMo (Social Local Mobile), des performances et de la fainéantise (ou de la simplicité :) ) ! Alors allons-y maintenant, et n'attendons pas 5 ans pour fournir aux utilisateurs de vraies solutions.  Pour changer.
Si je devais résumer Devoxx par une citation, ce serait celle-ci : "Il faut faire aujourd’hui ce que tout le monde fera demain." - Jean Cocteau.

Autour du même sujet