Vous aimez ce que vous lisez sur ce blog ?
Envie d'aller plus loin avec véritable formation d'expertise en Java ?
Venez suivre ma formation Masterclasse Expertise Java !

"Même un développeur experimenté a besoin de continuer à apprendre. Et dans cette formation... j'ai appris beaucoup !" - A.G., Java Champion

Prochaines sessions inter-entreprises : 28-31 mars 2017 / 13-16 juin 2017
Sessions intra-entreprises sur demande.
Inscrivez-vous vite !

Devoxx 2013 : 3 jours exceptionnels !

DevoxxFR-2012-skyscraper02-160-600.pngLa semaine dernière se tenait l'édition 2013 de la conférence DevoxxFR, hébergée comme l'année passée dans les salons de l'hôtel Mariott, dont les motifs psychédéliques de la moquette ont marqué les esprits.

Pour faire court, DevoxxFR c'est 3 jours de conférences en tous genres, plus de 1400 personnes, une trentaine d'exposants et de sponsors (dont Oracle et Google), et une équipe d'une vingtaine de personnes en polo rouge dopées à la caféine pour organiser tout ça (sacré boulot !). L'occasion d'en prendre plein les yeux, de remettre le cerveau en route, et de renforcer son réseau professionnel.

Et comme j'ai toujours des bêtises à raconter, et que la programmation fonctionnelle revient à la mode, j'ai proposé une conférence sur la notion de Fold : "WTF - What's The Fold ?", qui a eu l'immense honneur d'être sélectionnée (seules ~12% des soumissions sont acceptées, pour des raisons évidentes de temps et de place !). Je vous en reparlerai dans un prochain billet.

En tant que spectateur, on a intérêt à être bien organisé : il se passe plein de choses en même temps, et il suffit que le sujet ou le speaker soient un peu à la mode pour que les places s'évaporent en quelques minutes. J'avais donc prévu, pour chaque tranche horaire, un plan A et un plan B, voire même un plan C au cas où, et mon agenda était rempli à ras bord.
Précaution inutile, car lors de la keynote, Stephen Jansen a annoncé que toutes les conférences seraient disponibles gratuitement sur la plateforme Parleys, dotée pour l'occasion d'une toute nouvelle interface en HTML5. Il sera donc possible de revoir tout ça tranquillement vautrés installés dans le canapé du salon. Merci Parleys !

Mon programme

Martin Thompson, "Memory systems"

Première conférence, première claque. Martin, pour rappel, est fondateur de LMAX, et prône la "mechanical sympathy", c'est-à-dire le fait de s'appuyer sur les particularités du matériel sur lequel le code est exécuté afin d'en tirer les meilleures performances.

Fonctionnement des caches du processeur, topologie d'accès aux banques mémoires (NUMA), affinité des processus par core... Les CPU modernes sont hyper-optimisés, mais il est facile de leur mettre des bâtons dans les roues par inadvertance...

Le conseil de Martin : ne développez pas sur Mac, leur architecture n'a rien à voir avec celles des serveurs sur lesquels l'application sera déployée. Un code qui fonctionne parfaitement sur Mac peut souffrir de performances déplorables en production, simplement à cause de la différence de topologie mémoire...

Hackaton

L'après-midi, j'avais prévu de participer à la session de David Gageot et Jean-Laurent de Morlhon sur le test des applications legacy. Pas de chance, toutes les places étaient déjà prises, et les autres conférences ne m'intéressaient pas. Je me suis donc rabattu sur le hackaton.

Le problème d'un hackaton, c'est qu'il n'est pas facile de se rendre utile si l'on ne participe pas déjà à un projet opensource. Le temps est compté pour se plonger dans le code et implémenter une fonctionnalité complète...

J'ai ainsi découvert AssertJ, un fork de Fest-Assert, qui propose une interface fluide pour la rédaction des assertions au sein de tests unitaires. Un problème lié aux generics semblait à ma portée, et j'ai pu contribuer un peu de code. Malheureusement, le problème s'est révélé plus ardu que prévu, et je pense que mon code ne sera pas intégré au produit. Mais qu'importe : l'essentiel est de participer et de découvrir de nouveaux outils !

Frege

Je suis ensuite allé voir une présentation de Frege, un langage tirant son inspiration de Haskell, et fonctionnant sur la JVM. Malgré plusieurs années de développement et des fonctionnalités prometteuses, c'est apparemment toujours un "work in progress".
J'imagine qu'il est compliqué d'expliquer à la JVM les particularités d'un langage fonctionnel...

CRaSH

Un petit tour par la session de Julien Viet, qui présentait CRaSH, qui permet d'intégrer de manière transparente une console d'administration et de supervision à votre projet.Allez voir la documentation et les démos !

Dart

Pour finir la journée, je suis allé me renseigner sur Dart.
Yohan Beschi a présenté le langage, les composants standards et un composant personnalisé. Le langage lui-même semble très épuré et pragmatique, avec notamment des conventions de nommage pour exprimer la visibilité des classes et de leurs membres.

Personnellement, parmi les nouveaux langages à la mode, je pense que Dart est le seul qui ait véritablement une chance de dépasser le stage du gadget. En particulier :

  • Ceylon n'apporte rien de réellement différenciant par rapport à Java ; il sera sûrement disponible comme plugin pour quelques projets de chez JBoss, mais à part ça...
  • Kotlin est développé par JetBrains, qui a une grosse expérience des langages de programmation et de l'outillage associé. Mais leur part de marché est beaucoup trop confidentielle pour qu'ils parviennent à imposer leur langage.
  • Go s'adresse exactement au même marché que C/C++, et ne sera sûrement jamais très utilisé en-dehors de chez Google.

Dart en revanche, s'attaque à un problème reconnu : javascript. Il n'y a qu'à constater la somme d'efforts déployés pour éviter d'écrire du Javascript brut : GWT, CoffeeScript... Et si la solution, c'était de se passer carrément de Javascript ?

A mon avis, le scénario le plus probable est celui qu'avait suivi HTML5 : Chrome sera le premier à offrir un support natif du langage, et les autres navigateurs passeront par un plugin (comme Gears à l'époque) en attendant que leur propre implémentation soit prête. Et quand Dart sera suffisamment répandu et que son écosystème sera davantage étoffé, Javascript sera progressivement abandonné et confiné à la maintenance du code legacy. Et on pourra enfin pousser un grand soupir de soulagement !

Keynote

Lendemain matin, keynote en deux parties.

Une première partie, extraordinaire, portait sur l'histoire des écritures. Cela peut sembler un peu loin de nos préoccupations numériques, mais Clarisse Herrenschmidt sait captiver son public, et a bien mérité sa standing ovation. Comme il ne s'agit pas d'une conférence technique à proprement parler, j'ignore si elle sera retransmise sur Parleys. Mais si c'est le cas, je vous la recommande chaudement !

La seconde partie était animée par Martin Odersky, qui venait expliquer pourquoi Scala était une fusion idéale entre la programmation objet et la programmation fonctionnelle. Malheureusement, son discours était très convenu et n'était donc pas intéressant. Cerise sur le gâteau, une réflexion commune avec Rémi Forax à la sortie de la keynote : "C'est moi, ou les exemples de code Java d'Odersky ne compilaient même pas ?". Décevant, donc.

Les monades

Ah, une session sur un gros mot à la mode ! Et présentée par François Sarrandin en plus ! Allons voir ça.

En réalité, il s'agissait davantage de présenter l'usage des monades en Scala, plutôt que leur construction ou leurs propriétés intrinsèques. Et ce n'était pas plus mal, au moins c'était pragmatique et à la portée de tout le monde. En combinant les monades Future et Option, François a montré comment améliorer une API existante, afin de prendre en compte le caractère asynchrone des calculs et de gérer de manière intelligente les éventuelles erreurs.

Surprenant donc, mais intéressant.

Boucles étranges, étranges boucles

Une session de quiz pour se tordre les méninges, par Eric Lefevre-ardant et Guillaume Tardif.

Une pincée de maths, quelques quirks du langage Java, et c'est une heure qui passe bien agréablement.
Comme la session est principalement composée de bouts de code et de courbes mathématiques, il m'est difficile de la retranscrire ici, alors allez la voir sur Parleys !

JavaFX 2

Autant je n'avais absolument pas été convaincu par JavaFX premier du nom, autant un collègue bien informé m'avait donné envie de m'intéresser à JavaFX2. Dont acte.

Mais j'ai été très déçu. Non pas par le langage, dont on n'a au final pas vu grand-chose, mais plutôt par le format et le contenu de la présentation.

Au niveau de la forme, chaque phrase de Jim Weaver (Oracle) était aussitôt traduite en Français par Thierry Wasylczenko, ce qui était franchement inutile, et a eu pour principal effet de diviser par deux le temps utile de la session (et d'offrir quelques poilades à l'occasion de certaines traductions approximatives).

Et au niveau du fond, Jim a parlé d'à peu près tout, sauf de JavaFX2 : d'Oracle, du JDK et de son installation, des expressions lambda en Java8, des différents types d'éclairage dans une scène 3D (point, directionnel...), du texturage d'un objet... mais rien sur les particularités de JavaFX et son adéquation aux applications d'entreprise. Je suis resté sur ma faim.

Ecrire du Javascript propre

Apparemment, c'est possible, comme le prouvent Julien Jakubowski et Romain Linsolas. Mais ce n'est pas facile, car le langage est capricieux.

J'avoue que la fatigue commençait à se faire sentir en ce troisième jour, et que j'étais un peu préoccupé parce que je devais animer ma conférence une heure après, aussi ai-je un peu oublié les détails de ce qui a été dit par nos deux valeureux Mr Propre du Javascript. Mais j'en garde une bonne impression générale, alors ça devait être bien :)

The bright dynamic future of Java

Si vous n'avez jamais assisté à une conférence de Rémi Forax, vous ratez quelque chose. J'envie ses élèves de l'université de Marne-la-Vallée !

Non seulement Rémi est sûrement l'un des meilleurs spécialistes du langage et de la JVM en France (pour lui, "le bytecode java c'est haut niveau"), mais il a en plus une façon d'expliquer tout ça avec une décontraction totale, qui rend la conférence vraiment sympa (et plus digeste).

Cette fois-ci, Rémi est venu expliquer pourquoi les développeurs de Java SE devraient aller parler à ceux de Java EE, afin que la plateforme d'entreprise tire partie des dernières évolutions de la JVM (notamment InvokeDynamic). Il estime notamment que les serveurs d'applications sont une hérésie, des vestiges d'un passé où le langage même était rigide et pauvre.

Et chacun en a pris pour son grade, Rémi-style. J'étais assis non loin d'Emmanuel Bernard, et je vous prie de croire qu'il avait l'air particulièrement intéressé. Les prochaines versions de JBoss ou d'Hibernate pourraient nous réserver quelques surprises.

CAS, un SSO opensource

La sécurité est un peu le parent pauvre du développement d'applications : au-delà de la simple authentification par mot de passe, la plupart des développeurs sont un peu perdus (moi y compris). Ayant découvert OpenSSO à l'occasion de la revue du livre "Glassfish security", je me suis dit que j'allais apprendre des choses intéressantes lors de la conférence.

La première partie était pas mal, et présentait le protocole d'authentification entre l'utilisateur, la ressource protégée, et le serveur d'authentification, avec moult schémas et flèches numérotées. La suite était nettement moins intéressante, et je suis sorti avant la fin.

Conclusion

Même si j'ai raté certaines sessions inscrites à mon agenda, je ressors de DevoxxFR 2013 avec le sentiment d'avoir vu plein de choses intéressantes.

Et puis, ce qui se passe entre les conférences est tout aussi important : chasse aux goodies, networking, discussions amicales ou professionelles, beaucoup d'idées et de bouts de code sont échangés en off, et c'est aussi ce qui fait le charme et l'intérêt de Devoxx.

Je rentre dans mes pénates fourbu, mais content !

Je vous donne donc rendez-vous l'année prochaine, en espérant que je trouverai d'ici là une nouvelle idée digne d'être présentée devant un public de cette qualité.


Commentaires

1. Le mercredi 3 avril 2013, 14:20 par Romain

Merci Olivier pour ton retour, même un peu court :)
Pour combler cette lacune, voici le compte-rendu de notre conférence sur JavaScript : http://linsolas.github.com/blog/201...

Je n'ai hélas pas pu voir la tienne, car elle était en même temps qu'une autre qui m'intéressait beaucoup. Toutefois, j'y jetterais un oeil sur Parleys une fois disponible !

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.