JavaOne 2007 et Groovy chez Google

En mai a lieu la plus grande conférence Java de la planète, organisée par Sun, à San Francisco. Après avoir soumis un papier pour présenter Groovy, ma proposition a été acceptée, et j’ai également été invité chez Google pour une autre présentation par Dick Wall, l’un des créateurs du fameux podcast JavaPosse.



Je suis arrivé en Californie lundi midi, après 12 heures de vol et 9 heures de décalage horaire dans la tête. J’ai filé directement à Moutain View, dans la Silicon Valley, dans le fameux GooglePlex. J’ai eu l’occasion de visiter le campus, et de voir leur super cadre de travail. C’est différent des Champs-Elysées, mais travailler sur un super campus ensoleillé, avec des doubles écrans LCD 23 pouces, avec des restaurants gratos, des pelouses, un terrain de beach-volley, une salle de sport gigantesque, c’est plutôt cool. J’ai même pu expérimenter le fameux Google  » Testing on the Toilets  » ! Il s’agissait de trouver la meilleure stratégie pour couvrir au mieux les branchements possibles d’une expression booléenne complexe pour être sûr de voir le maximum de cas.

Revenons à ma présentation, devant une bonne cinquantaine de Googlers, j’ai présenté Groovy, avec des démos préparées aux petits oignons utilisant les services et outils Google. Dans le public, il y avait quelques fameux ingénieurs, comme Cédric Beust (TestNG, GMail mobile), « Crazy » Bob Lee (Google Guice), Josh Bloch (ancien architecte de Java 5), et même Guido Van Rossum, le créateur de Python ! Vous pourrez voir la vidéo de ma présentation en ligne sur Google Video, avec le joli template de slides OCTO.

Après ça, je suis remonté à San Francisco pour participer à une mini-conférence dédiée à Groovy et à Grails, organisée par NoFluffJustStuff (les gars qui font des conférences dans tous les Etats-Unis). J’ai présenté quelques démos, et fais le point sur les progrès de Groovy ces derniers mois, en particulier sur le support des annotations dans Groovy, qui fait de Groovy le second langage pour la JVM permettant d’utiliser des frameworks comme EJB3 / JPA, TestNG, Guice, etc. Graeme Rocher a présenté Grails, et les dernières fonctionnalités dans Grails.

Nous avons eu pas mal de monde à cette soirée, dont des gens de Google (Cédric Beust, Patrick Chanezon dirigeant Google Checkout), de eBay, de JetBrains (qui travaillent sur un plugin Groovy / Grails pour IntelliJ IDEA), de JBoss (Bela Ban de JGroups, Emmanuel Bernard de Hibernate), de Sun (US et France), des personnes très connues comme Ted Neward, Neal Ford (expert DSL et Ruby chez ThoughtWorks), etc, les gens du podcast JavaPosse, Romain Guy faisant une démo éblouissante d’une appli Swing, Hani Suleiman (BileBlog), En parlant du BileBlog, on a même été « bilé« .

JBoss a par ailleurs annoncé ses expérimentations dans l’intégration de Groovy dans JBoss Seam. On peut maintenant utiliser Groovy pour écrire ses entity beans et ses composants seam.

Guillaume Laforge et Dierk König du projet Groovy et auteurs de Groovy in ActionLe jours suivant, c’était le jour de ma présentation de Groovy, et des « cool things » qu’on peut faire avec. J’ai fait cette présentation avec Dierk König, mon co-auteur de « Groovy in Action » et fondateur de Canoo Web Test.

Nous avions une salle de 600 places, et elle était pleine à craquer ! A l’entrée, il y avait une file incroyable de personnes qui souhaitaient assister à la présentation, mais malheureusement, beaucoup ont été refoulées, car la salle était comble. J’ai eu droit à des applaudissements très fournis quand j’ai présenté ma démo d’un mashup Swing, Google Maps, service de GeoCoding, et Flickr, en moins de 100 lignes de Groovy. Et aussi une salve d’applaudissement en annonçant le prix de l’innovation que nous avions reçu récemment. Après la présentation, nous avons eu pas mal de questions intéressantes, et ensuite, nous sommes allés faire une petite session de dédicaces du bouquin.

Sun a annoncé la sortie d’une gamme de produits appelée JavaFX. Sans doute pour essayer de concurrencer Adobe Apollo, ou Microsoft SilverLight. Dans JavaFX, il y a également JavaFX Script. Un nouveau langage pour définir des interfaces Swing, qui ressemble étrangement au SwingBuilder de Groovy, d’ailleurs, je ne suis pas le seul à m’être fait cette remarque, puisque ce sentiment est partagé. L’idée de JavaFX semble être de pouvoir définir facilement des interfaces graphiques pour tout un tas de type de device différent, comme une application desktop, aussi bien que des téléphones portables. Je n’ai pas encore vraiment regardé ce qu’on pouvait faire avec JavaFX, ou voir si c’était vraiment intéressant pour notre approche RIA/RDA, mais ça mérite certainement qu’on y jette un coup d’oeil. JavaFX Script est dérivé d’une expérimentation dénommée F3 lancée il y a quelques temps et qui propose un langage spécifique, fortement typé, et inventé exclusivement pour créer plus facilement des interfaces graphiques Swing qui pourront tourner sous Java SE et qui devrait pouvoir également fonctionner sur des plateformes mobiles. Lors de la keynote, les démos n’avaient pas l’air très convaincantes, on sentait la bidouille à plein nez, dans le genre maquette en carton, la technologie étant loin d’être mature pour une annonce en grande pompe.

Dans les sessions intéressantes, il y a Joshua Bloch qui présente une session récurrente à JavaOne basée sur son bouquin « Java Puzzlers » montrant que des programmes Java peuvent avoir des résultats surprenants, à cause de bugs dans le JDK, d’histoire de boxing / unboxing de Java 5, du fait que JUnit n’est pas thread-safe, etc. Sous forme de quizz, on doit deviner le résultat d’un problème, et on a toujours de belle surprises. J’ai assisté à la présentation de Neal Gafter (Google) sur les closures. Les closures sont intéressantes pour encapsuler un bout de logique réutilisable, mais j’ai peur que l’implémentation proposée soit un peu trop compliquée pour le développeur moyen. En particulier, le fait que Java soit devenu un langage complexe avec les generics, le boxing, mais également les checked exceptions, ne va pas faciliter le langage dans son ensemble pour garder un tout cohérent. Je suis donc un peu perplexe sur le futur des closures dans Java 7. Au nom de la « backward compatibility », ils ne vont pas améliorer les APIs existantes dans le JDK pour tirer parti de cette nouvelle fonctionnalité. C’est dommage si tel est le cas.

La session sur GWT, c’était une présentation assez générale sur Google GWT. Ce qui est peut-être le plus important, c’est comment ils ont passé beaucoup de temps à améliorer la performance au travers de tout un tas d’optimisations super sioux, et comment également ils ont amélioré leur compilateur Java / JavaScript pour inliner un maximum de code pour réduire la taille du JavaScript produit.

Pour continuer sur l’AJAX, j’ai suivi une session sur Scriptaculous, Prototype et Rico, et je dois avouer que je n’avais pas trop regardé de près ce qu’on pouvait faire avec ces librairies JavaScript, mais c’est vrai que c’est très puissant et assez bluffant : un joli effet accordéon sur des divs, le drag’n drop, les tags JSF Rico, bref, plein de bonnes choses. J’ai aussi suivi la session sur jMaki, qui permet d’encapsuler élégamment différents fournisseurs de librairies de widget Ajax, mais aussi comment faire communiquer ces widgets ensemble au travers d’un bus publish/subscribe côté client. C’est certainement une des fonctionnalités les plus intéressantes de ce projet.

Parmi les autres sessions auxquelles j’ai assisité, j’ai suivi une session intéressante sur JMX, sur la manière d’introspecter ses applications en live, comment utiliser Spring pour exposer facilement de beans JMX, mais aussi comment utiliser des scripts Groovy rechargeables à chaud pour mettre en place une introspection dynamique. Toujours sur le thème de Spring, j’ai suivi la session « Advanced Spring » de Rod Johnson où il expliquait plus en détail les modes de configuration (y compris le fait que le XML n’est pas forcément nécessaire et qu’il avait créé l’équivalent de Google Guice en terme d’annotations de configuration), les différents points d’extension (FactoryBean, BeanPostProcessor, BeanFactoryPostProcessor et BeanDefinition), et aussi l’avenir avec le support de OSGi. Rod Johnson en a également profité pour annoncé que Interface21 venait de lever 10 millions de dollars d’investissement, c’est une belle somme, et cela permettra à Interface21 d’étoffer et peaufiner son beau portfolio de projets et d’étendre sa couverture mondiale et ses efforts marketing.

Il y a d’innombrables sessions à JavaOne, et ce n’est pas possible de suivre toutes les sessions qui semblent intéressantes, mais heureusement, les slides des présentations sont en ligne, ce qui permettra à chacun de découvrir le contenu de ses présentations en mode offline.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


Ce formulaire est protégé par Google Recaptcha