Devoxx 2010 : Day 2 - l'Anvers du décor

Deuxième jour au Devoxx pour les 7 consultants Ippon et les 3 invités, avec toujours un programme bien chargé, mais toujours aussi alléchant !

Un point tout de même assez surprenant quand on fait le tour de l’ensemble des conférences proposées : quasiment rien sur le SOA, les ESB ou le BPEL et rien du tout sur les portails… Bizarre quand on voit la tendance du marché (du moins du point de vue d’Ippon Technologies) où les projets de portails sont légion et où les ESB redeviennent à la mode après une grosse année d’hibernation. Soit Ippon Technologies est sur des marchés différents des autres sociétés, soit ces sujets n’intéressent pas plus que ça le développeur Java du Devoxx !

Dernière chose avant de vous narrer ma seconde journée : Apple doit absolument continuer à supporter Java (ce qui doit se faire au travers d’OpenJDK), car dans le cas contraire, la quasi totalité des conférenciers et une bonne partie des personnes présentes devraient changer de laptop ! Il est impressionnant de voir à quel point le Mac est présent dans le monde du développement Web Java. Pourtant, j’avais l’air d’un Ovni en 2003 quand j’arrivais chez un client avec mon PowerBook… 🙂

The future roadmap of JavaEE by Jérôme Dochez

D’entrée de jeu, Jérôme Dochez décrit la philosophie future de Java EE : le cloud ! Et même si dans les slides, on parle d’évolution, il s’agit à mon sens plus d’une révolution pour Java EE, car la notion de machine virtuelle ne se limite plus à la JVM, mais au VM de type kvm, Xen et autres. Ainsi les futurs outils de Glassfish intégreront directement la possibilité de déploiement d’une image virtuelle préalablement archivée pour démarrer une nouvelle instance d’un serveur d’applications ! Les formats supportés sont Virtual Box, KVM et XEN (bizarrement pas de VmWare ! 😉 ).

Pour arriver à cela, pas mal d’évolutions sont nécessaires, à commencer par une gestion des versions des applications, donnant enfin la possibilité de faire coexister plusieurs versions d’un même software ! Dans le même sens, Jérôme Dochez annonce qu’une meilleure normalisation de la la gestion des class loaders des serveurs d’applications sera entamée. Cette normalisation est considéré (à juste titre !) comme trop laxiste dans les spécifications actuelles !.

Côté JSF, la version 2.1 sera une release corrective sur quelques points mineurs et devrait arriver dans quelques mois au maximum. JSF 2.2, par contre, est plus ambitieux et est orienté vers HTML5.

JMS n’a pas évolué depuis un moment. Une prochaine spécifications devrait corriger quelques ambiguïtés et standardiser des extensions classiques. Le périmètre de la spécifications devrait également augmenter.

Le Web tier va intégrer le support des Websockets, standardiser la gestion de JSON, aller vers le HTML5… Un exemple de code Grizzly pour les Websockets API et de code Atmosphere pour du publish/subscribe est brièvement abordé.

Côté JPA, la version  2.1 introduira plus de flexibilité au niveau des mappings, plus de hooks pour intervenir sur le cycle de vie des fournisseurs d’implémentation, la possibilité de détecter des états “dirty”, un support pour les procédures stockées, et plein d’autres choses… Clairement une spécification qui avance plutôt vite et dans le bon sens ! JPA 2.1 est prévu dans Java EE 7. La formation d’un groupe d’experts est prévue  pour janvier 2011.

JAX-RS est également abordé, mais le traitement du sujet est sensiblement identique à ce que j’ai déjà reporté hier.

A noter un point important : rien sur les EJB !

Comparing Web Framework by Matt Raible

Ce qui ont travaillé avec moi connaissent la grande estime (pour ne pas dire la vénération !) que je porte à Matt Raible et à son environnement de développement AppFuse. C’est cet environnement qui a abrité la construction d’un grand nombre de projet Ippon à partir de 2004 et qui nous a permis de découvrir, d’apprécier et de maîtriser Spring !

Matt est un vrai showman et n’hésite pas à sortir quelques gros Troll sur Craig McClanahan, auteur de Struts et spec leader de JSF, qualifiés de piètres frameworks… “That’s on tape !” comme dirait Matt ! La présentation est lancée et la comparaison des frameworks Web peut démarrer. Pour cela, Matt utilise 20 critères que vous pourrez retrouver dans la matrice de résultat, sujette bien entendu à discussion et qui est disponible sur http://bit.ly/jvm-frameworks-matrix. Pour ôter toute surprise, les gagnants sont Spring MVC et GWT…

Matt rappelle cependant que le type de site (grand public, desktop, media) influence le choix de la techno et que la pondération des critères peut faire sortir d’autres frameworks en première position…

Une bonne présentation, mais pas de révélation…

Android UI Development: Tips, Tricks and Techniques by Chet Haase et Romain Guy

La présence de Google n’est pas énorme sur ce Devoxx : pas de stand notamment. Heureusement, il anime tout de même quelques conférences comme celle-ci !

Je suis loin d’être un spécialiste d’Android, mais les deux grandes difficultés du développement mobile sont les performances et une bonne interface graphique… Donc, le sujet m’intéresse !

Côté performance, on arrive à des optimisations parfois peu esthétiques : créer un objet statique plutôt qu’un objet temporaire pour éviter le garbage collector, privilégier les types primitifs aux objet (float plutôt que Float), vérifier que la liste n’est pas vide avant d’utiliser les boucles for du JDK 5 (afin d’éviter la création systématique d’un itérateur), recycler les Bitmaps, etc…

Les conférenciers mettent cependant en garde les développeurs de ne pas anticiper ce type d’optimisations qui “salissent” le code. La meilleure stratégie est d’utiliser l’outil DDMS pour optimiser le code, une fois la première version réalisée. DDMS permet de tracker finement les allocations mémoire et une démonstration pertinente avec un code ne suivant pas les recommandations précédentes démontre avec brio ce fait. Romain Guy montre notamment qu’un objet référencant le Context est une source de memory leak…

Autre point : la gestion de l’interface graphique repose sur un modèle single-threadé qui ne doit pas être bloqué (affichage d’un message si le thread est occupé plus de 5 s). L’utilisation de AsyncTask et de Handler est fortement recommandée.

A noter deux outils qui paraîssent assez extraordinaire :

  • TraceView, qui facilite le debug et le profiling de l’application en offrant une vision graphique sous forme de Timeline,
  • Hierarchy Viewer : on récupère la décomposition de l’UI et le temps passé. La nouvelle version est basée sur SWT (l’ancienne était sur Swing) et l’efficacité de l’outil paraît impressionnante.

Au final, on se dit que la programmation sous Android est un sport bien particulier !

LoadUI : le quickies du déjeuner !

Chaque midi, pendant la pause déjeuner, on peut assister à des courtes sessions de présentation (15 minutes). J’ai choisi de m’orienter vers loadUI, un produit d’Eviware les créateur de SoapUI.

L’approche de construction des tests en charge est relativement originale, car elle est totalement graphique et consiste à manipuler des opérateurs ou des générateurs, à la manière de produits de type “feu” Shake (pour les traitements graphiques), Houdini (pour la 3D) ou de softs de traitement du son. Donc une approche assez ludique et originale pour le monde du test !

On peut construire ses propres composants soi-même à l’aide de scripts Groovy.

LoadUI 1.5 to be released in april 2011 ! A tester d’urgence, même si je me demande comment on peut construire ses scénarios de consultation (le mod “enregistrement de JMeter par exemple).

GWT, Take 2 by David Geary

On va finir par croire que je ne m’intéresse qu’au technologies de présentation, vu le programme suivi en ce début de journée. Il va falloir que je rectifie le tir avec les conférences suivantes ! 😉

Cette conférence fait suite à des articles publiés sur developperWorks, écrit par David Geary et explore les nouveautés de GWT 2.0 et 2.1 (sorti tout récemment fin octobre). Ces nouveautés sont la disparition du “Hosted mode” au profit d’un browser plugins (plus de navigateur GWT spécifique pour les étapes de test), la possibilité de code splitting (chargement de portion de code uniquement lorsque cela est nécessaire), l’ajout de nouveaux Layout panel (largement améliorés par rapport aux versions 1.x), les Client bundles, les description d’IHM par UIBinder, l’outil Speed Tracer. GWT 2.1 apporte encore quelques nouveautés dont le support de Spring Roo.

En guise de démonstration, David Geary propose l’affichage de plusieurs cartes dans des fenêtres de dialogues différentes et avec des déplacements commandés par la souris et gérés par des Timer. Il insiste également sur “le secret le mieux gardé de GWT”, la gestion de l’historique de navigation par la classe History. On peut ainsi gérer les boutons back et next du navigateur avec une grande finesse.

Suit une présentation de SpeedTracer qui est un outil vraiment efficace pour monitorer les performances de l’application. A noter que l’utilisation de Speed Tracer n’est pas limitée à GWT mais peut se généraliser à toute application web.

Enfin, UIBinder est présenté et permet de construire l’interface à l’aide d’une description XML et non plus directement avec du code Java. Le lien se fait avec les annotations @UiField et @UiHandler. Cela permet de bien séparer la logique et la présentation.

Décidément, il faut que je me remette à jour sur GWT…

HTML5 : Fact and Fiction by Nathaniel T. Schutta

Finalement, je reste sur les technos de présentation pour cette nouvelle conférence ! La salle est bondée, preuve qu’HTML5 est le sujet à la mode du moment. Dommage qu’il faille à mon avis attendre encore 3 à 5 ans pour que son utilisation se généralise (sauf peut-être pour le mobile)… 🙁

Nathaniel est un véritable showman et sa présentation est magnifiquement rodé. Il nous apprend que le HTML5 est une collection de fonctionnalités et que le mobile est son eldorado (notamment ceux qui ne font pas fonctionner de Flash ! 😉 ). Il n’hésite pas à pronostiquer la mort de Flash…

Au détour, il lâche l’information que les vidéos sur le web sont de plus en plus encodés en H.264 (plus de 50% à l’heure actuelle).

Côté navigateur, Safari, Chrome et Opera supporte déjà correctement HTML5. La plaie reste IE6 qui est à moins de 5% de part de traffic sur le web dans les chiffres de Nathaniel (malheureusement pas sur les sites des clients pour lesquels on travaille…) Le surcoût lié au support d’IE6 est estimé à 25%.Info importante, SharePoint 2010 ne supporte plus IE6 !

HTML5 ‘appuie sur la détection des fonctionnalités supportées par le navigateur et plus sur la récupération de l’agent contenu dans la requête. Pour cela, Modernizr est une bibliothèque simplifiant fortement cette détection. Idem pour la détection des format de vidéo supporté (Ogg, H264, WebM –> foutoir lié au Patent). Là encore, Modernizr simplifie la détection de ce que sait faire le navigateur.

HTML5 introduit enfin un jeu de composants plus large pour les formulaires. On a enfin droit à un sélecteur de date, un curseur, un sélecteur de couleur, etc… On utilise toujours la balise en spécifiant simplement un type spécifique. Si le navigateur ne les supporte pas, ils sont simplement affichés sous forme de boîte de texte.

La suite de la présentation évoque assez rapidement le stockage local et les possibilités de synchronisation, la géolocalisation, les workers Javascript, etc… Mais c’est surtout les quelques démos de manipulations sur des vidéos qui finissent d’emporter l’assistance tant elles sont hallucinantes

Au passage, quelques sites bien sympa sur le HTML5 : http://diveintohtml5.org/,  http://html5demos.com/, http://html5gallery.com et http://www.chromeexperiments.com

Implementing emergent design by Neal Ford

Une plongée dans la méthodologie, avec un speaker renommé. Pour ce qui se demande ce que signifie un “design émergent”, Neal cite l’exemple de la molette des iPod. Au départ, cette molette avait une zone centrale qui permettait les mouvements tournants et sur le bord une rangée de boutons (play, pause, next, prev). La génération suivante séparait les boutons en une rangée supérieure de la molette de rotation. Plus la suivante pour cause de manque de place, placait les boutons directement sur la molette. C’est ce qui existe maintenant sur tous les modèles d’iPod — > On a ici un design émergent, puisqu’en quelques générations, la solution la plus efficace a finalement été mise en oeuvre.

Neal Ford cite une phase attribuée à Martin Fowler : “Software architecture is the stuff that is hard to change later”. Ca me paraît être une définition magnifique.

Au delà de cela, Neal Ford montre qu’en utilisant deux métriques simples 2, la complexité cyclomatique et le couplage entre clases (classes afférantes), on arrive à déterminer les zones de refactoring de façon assez efficace.

D’un point de vue plus global, il est difficile de faire un résumé de cette session, si ce n’est que le message général est tout de même très orienté vers les principes agiles et l’eXtreme Programming : différer les décisions le plus loin possible, partager le code ou savoir gérer une dette technique.

SOA in practice by Yves Van Beethoven

La présentation est menée par un gars d’Accenture, société qui est positionnée dans le quadrant des leaders dans les papiers du Forrester. On aurait de toute façon pu deviner que l’intervenatn était d’Accenture, car c’est le seule conférencier depuis le début qui est en costume et qui utilise un PC pour sa présentation et pas un mac !

La présentation commence par un rappel de ce qu’est le SOA : services partagés, orchestration et tout le toutim ! On passe ensuite sur les promesses : agilité, réduction des couts, découplage, scalabilité. Rien de bien de nouveau…Heureusement, on arrive à quelques exemples précis comme une migration du CRM Vantive vers SalesForce, avec un BizzTalk comme ESB ou comme des processus consistant à anticiper la prise en charge du retard d’un avion provoquant des changements de réservations automatiques pour des personnes ayant des correspondances.

On peut tout de même reprocher à cette conférence de ne pas franchement respecter le titre annoncé : peu de pratique et beaucoup de théorie !

Voilà, c’est tout pour aujourd’hui ! Demain est une demi journée, puisque seulement 9 conférences sont proposées et que 3 peuvent être suivies. Je vais pouvoir me reposer et jouer avec tous les outils cités dans ces posts !