La [keynote](http://devoxx.com/display/DV11/Android+Keynote) du jeudi matin était assez inspirante. Voyons de quoi il était question.
Keynote : Android Keynote par Tim Bray
Le message est clair, Android est en pleine croissance. Il faut remplir le million de mobiles activés tous les jours. Et pour ça, il faut des développeurs. Alors [Tim](http://devoxx.com/display/DV11/Tim+Bray) se propose de nous aider:
- Pour un développeur indépendant, il ne faut pas suivre le modèle de monétisation classique d'application payante. Ce n'est pas une façon durable de générer un revenu stable. Il conseille de voir ce que font depuis de nombreuses années les développeurs de jeux. Ils vendent des objets virtuels et la relation est ainsi crée avec le consommateur. Cette relation n'existe pas lorsqu'il paye, télécharge votre application et ne vous revois jamais.
- Faire des choses plus intéressantes : l'Android market est maintenant publié sur le web, Google fait des efforts pour promouvoir les développeurs et favoriser la diversité des applications. Il faut en profiter en proposant des applications originales.
- L'importance du design : la relation avec un téléphone est plus intime qu'avec un ordinateur. Il faut donc suivre une stratégie semblable à celle d'Apple qui apporte un soin particulier au design des applications. Il s'est fait peur en constatant que dans la plus grande salle de Devoxx, il n'y avait qu'un seul designer !
- Si vous êtes un fournisseur de contenu, vendre l'accès à votre information est illusoire. "Information wants to be free". Il conseille de vendre un réel **service** autour de son information. Par exemple, les sites d'information qui connaissent déjà les nouvelles qui vont vous intéresser sont un réel service qu'un utilisateur peut envisager acheter.
Une réflexion intéressante sur la testabilité des applications mobiles. Une application web est en relation avec moins de composants (un conteneur web, un système d'exploitation, base de donnée) qu'une application mobile (l'OS Android, la caméra, le GPS, le gyroscope, etc.). Le corollaire est que la facilité de test est inversement proportionnelle aux nombres d'API disponibles sur une plate-forme. Alors qu'il était un grand fan de TDD côté serveur, il n'a pas encore réussi a appliquer les même recettes au développement mobile.
Il a terminé sur une ouverture humaniste discutée en montrant que notre rôle de développeur peut changer la vie des gens. Et pas seulement des gens qui peuvent s'offrir des tablettes à 500€ dans les pays développés, mais aussi celle des gens qui vivent dans des pays en voie de développement. Par exemple, un petit producteur de maïs veut vendre sa récolte. Il prévoit de se rendre au marché le lendemain mais n'y trouve aucun client. Pour autant, il aura transporté sa marchandise et payé son transport. Si on offrait un moyen de communication efficace pour qu'il puisse se mettre en relation avec ses clients, ça pourrait l'aider à mieux vivre.
Web : Moving to the client - JavaFX and HTML5 par Stephen Chin & Kevin Nilson
Cette présentation montrait les convergences entre HTML5 et JavaFX. Elle a déjà été jouée à JavaOne. Vous pouvez la voir sur [Parley](http://www.parleys.com/#st=5&id=2653&sl=0).
On a commencé par voir une démonstration de quelques fonctionnalités de HTML5 : les coins arrondis, une démo OpenGL, les préfixes spécifiques aux navigateurs pour ne pas attendre la sortie officielle de la spécification, Chrome Frame pour intégrer le rendu Google Chrome dans un IE. Côté serveur, il suffit d'ajouter de mettre des meta ou des headers spécifiques. Côté client, il faut que les utilisateurs installent Chrome Frame. Ça se télécharge et s'installe sans droits administrateurs. Après, on peut contrôler assez finement. Par exemple, on peut choisir de ne remplacer que pour IE6 par exemple.
Lorsqu'un site commence à s'enrichir, on tombe vite sur des différences d'implémentations entre navigateurs. On peut donc trouver des techniques pour analyser le nom et la version du navigateur pour changer de comportement. Or, ça nécessite un suivi fin des implémentations des navigateurs. Une façon plus élégante est proposée par [Modernizr](http://www.modernizr.com/) qui détecte les fonctionnalités plutôt que les navigateurs. Ça permet de développer qu'une fois et de supporter les fonctions lorsqu'elles seront supportées par les versions suivantes des navigateurs.
Côté mobile, il a été cité ensuite le framework Titanium dont on peut résumer la fonction en: "Ecrire en JavaScript, exécuter en natif". Pour en savoir plus, je vous recommande le post de Jean-Baptiste. PhoneGap intègre lui aussi HTML5.
Le second speaker a alors commencé à parler de JavaFX. Après avoir rapidement présenté JavaFX 2.0 (Nouvelles API, intégration Java + JS + HTML5, intégration à eclipse, intelliJ, NetBeans), il a montré une démonstration d'une application qui intègre Google Maps à une application JavaFX. On a pu voir un effet de réflexion dynamique dans l'interface sous la zone de la carte.
Avec Java ou GroovyFx ou ScalaFx ou encore Visage, vous pouvez invoquer du code JavaScript. Ce que ça change au modèle de programmation, c'est que vous n'êtes plus exécuté dans un navigateur. Vous êtes le navigateur qui répond aux événements du navigateur.
Mobile : Android Development Tools par Tor Norbye & Xavier Ducrohet
Juste quelques mots sur la présentation que je suis allé voir par curiosité. Ils ont présenté les dernières évolutions des outils de build d'Android sur lesquels ils travaillent d’arrache-pied. Le moins que l'on puisse dire, c'est que ça se voit. Ils ont une énergie incroyable pour présenter leur produit.
Ils ont parlé assez longuement de l'émulateur Android. En effet, c'est un composant important pour permettre aux développeurs d'applications de les lancer sur leur poste. Ce n'est effectivement qu'un émulateur et pas un simulateur. La conséquence est que l’exécution est lente. L'amélioration qu'ils ont démontré est la capacité d'utiliser l'accélération matérielle OpenGL dans l'émulation de la 3D des applications, utile pour le développement des jeux évidemment.
L'émulation hardware permet maintenant à l'émulateur d'utiliser les données qui viennent d'un téléphone relié à la machine pour exécuter l'application. On a pu voir le film capturé de la caméra du téléphone passer en direct dans la fenêtre de l'émulateur.
[Lint](http://tools.android.com/tips/lint) permet quant à lui de faire de la détection statique de bugs potentiels spécialement pour les applications Android.
Sans être développeur Android, on a pu apprécier en particulier le dynamisme des speakers.
Methodology : Why We Shouldn't Target Women par Martjin Verburg, Kim Ross, Regina ten Bruggencate, Trisha Gee, Antonio Goncalves and Claude Falguière
Claude Falguière qui était sur scène vous fera bientôt un retour sur la session.
Ce que j'en ai retenu personnellement, c'est une meilleure compréhension de ce qu'une femme dans l'IT peut ressentir. C'est essentiellement un problème d'image et d'idées reçues. Dans ce cas, le "mentoring" peut aider à faire progresser la confiance en soi. C'est aussi un problème de culture. Par exemple, au Brésil, non seulement l'IT est un secteur mixte (50/50) mais en plus, elle est vue comme une discipline "cool" et tendance. Pas encore suffisamment en Europe ?
Java SE : Java Posse Live par Dick Wall, Carl Quinn, Tor Norbye & Joe Nuxoll
L'enregistrement en direct d'un épisode du célèbre podcast The Java Posse était un moment de détente agréable. Ces quatre gars nous on fait un vrai show à l'américaine. Le principe pour eux était de trouver un remplaçant potentiel en cas de besoin. Ils ont alors soumis 5 candidats tirés au hasard dans la liste des inscrits de Devoxx (sic - que des stars ;) : Chet Haase, Mark Reinhold, Brian Goetz, James Ward, Stephan Janssen) à un questionnaire amusant. C'est Stephan Janssen, le leader de Devoxx qui a remporté le titre d'honneur.
Définitivement un bon moment.
Mobile : Sticky GUIs par Chet Haase & Romain Guy
C'est un Romain Guy en petite forme qui donnait la réplique à son fidèle collègue Chet Haase. Ils font partie de l'équipe UI d'Android et ils ont profité de cette session pour donner quelques astuces pour faire des interfaces qui "scotchent" votre utilisateur. En voici une humble retranscription:
- **Gradients**. Utilisez les gradients en fond d'écran pour guider la navigation. Par exemple, si vous voulez inciter l'utilisateur à faire défiler l'écran vers le bas, vous pouvez utiliser un gradient avec la couleur claire en bas.
- Résolution. Attention à l'"up-scaling", c'est-à-dire que lorsque vous affichez une image, veillez à ce que la taille affichée soit inférieure ou égale à la résolution de l'image (on affiche pas une icône 16x16 en plein écran).
- **Transparence**. Lorsque vous utilisez de la transparence, il faut savoir que la zone sur laquelle on l'applique est recalculée plusieurs fois, autant de fois qu'il y a de couches. Cela entraîne un problème de performance. Pour limiter ce problème, utilisez la transparence pendant une transition et faites en sorte qu'il n'y ait plus de transparence pour l'utilisation nominale de l'UI.
- **3D**. C'est un peu la même chose pour la 3D. Les interfaces en full-3D sont rarement utilisables. Réserver ce mode aux transition est une façon d'éviter les pertes de performance et d'introduire un sentiment de profondeur de l'application.
- UI components. De nouveaux composants d'interface sont disponibles : ActionBar, ViewPager et GridLayout (on ne spécifie plus la taille de chaque élément, c'est pratique pour gérer les résolutions des devices différents).
- **Animations**. Elles doivent être fluides, naturelles (faire varier la vitesse), simples, servir une intention (pas que pour l'effet "Wahoo").
- **Performance**. Romain Guy enfonce des portes ouvertes avec ses conseils mais s'il a tenu à rappeler ces règles c'est qu'on doit encore soumettre un nombre important d'applications au Market qui ne les respectent pas.
- Eviter les allocations d'objets, le garbage collector prend des ressources et peut introduire un ralentissement de l’exécution.
- Ré-utilisez vos structures : Paint, Canvas, Rect, Bitmap, Matrix, int[]
New Languages on the JVM : Is Fantom Light years ahead of Scala? par Stephen Cole-bourne
Il n'est pas évident de rendre compte de la présentation d'un langage en conférence. Par exemple, on a pas le temps de noter le code ! C'est pourquoi je ne vais pas tenter l'exercice ici.
Ce que j'ai retenu est que Fantom n'est pas un langage sur la JVM comme les autres. Pour plusieurs raisons:
- c'est une plate forme plus qu'un langage au sens qu'il apporte son système de build et qu'il produit son propre code intermédiaire, le fcode
- fantom apporte une hiérarchie nouvelle:
- **Pod** = unité de compilation et de déploiement
- **Types** ~ classes java
- **Slots** = propriétés, méthodes
- Ses orientations sont : Statiquement typé, Inférence de types, support de DSLs, Générics, Collections, Invocation dynamique de code, Surcharge d'opérations, Programmation fonctionnelle, Immutabilité
Le speaker avait en tous cas beaucoup d'arguments contre Scala en présentant ce langage.
Jeudi soir
A la suite, il y a eu plusieurs BOFS. Je suis allé à celui des Duchess en envoyant quelques tweet pour les personnes à distance.
Ensuite, n'oublions pas que nous sommes dans un cinéma, le film Tintin a été projeté pour les plus fatigués d'entre nous, suivi d'une fête dans une boîte de nuit voisine. Devoxx est une conférence très complète !
Encore quelques mots dans un prochain post vous attendent sur le troisième et dernier jour de Devoxx 2011 !