Les pérégrinations d’un Devoxxien à Devoxx 2017
Du 5 au 7 avril s’est déroulée la 6ème édition de Devoxx, la plus grande conférence française de l’écosystème Java. Comme d’habitude, énormément de sujets sont abordés dans pas moins de 8 tracks en parallèle. Voici ce que j’ai retenu de ce Devoxx 2017.
Jour 1, où je découvre Rust
Le premier jour est aussi le moins chargé, puisqu’il s’agit du jour des Universités, des présentations de 3 heures sur un sujet en profondeur. Pour l’Université du matin, j’ai choisi celle de Rémi Forax et d’Alexis Hassler sur les modules de Java 9. Mes fidèles lecteurs (comment ça, il n’y en n’a pas ?) se rappelleront sûrement que j’ai participé à une présentation similaire à l’édition précédente de Devoxx. Mais un an en informatique, c’est long, et entre temps les choses ont un peu bougé, et ça vaut le coup de se tenir au courant.
Les modules dans Java 9 par Alexis Hassler et Rémi Forax
On apprendra en particulier que la date de release officielle de Java 9 est quasi définitive et aura bien lieu au mois de juillet. Il y a ensuite la valse des mots clés : ‘transitive’ remplace ‘public’, un mot clé ‘open’ est rajouté pour dénoter la permission de l’utilisation de l’introspection sur un Module. Enfin, on nous promet de garder une certaine compatibilité arrière, par exemple en laissant la classe sun.mis.Unsafe accessible depuis un Module ‘unsupported’, mais aussi en inventant un flag ‘—permit-illegal-access’ pour permettre de transgresser toutes les règles imposées par le système de Modules. En fin de compte, on espère que ce système gardera toutes ses promesses d’une plus grande sécurité de la plateforme ainsi que d’une JVM plus légère et plus appropriée aux challenges du Cloud et de l’IOT.
Exécution de code – Mais que se passe-t-il vraiment ? par Alex Snaps
Mon Université de l’après-midi sera ‘Exécution de code – mais que se passe-t-il vraiment ?’ avec Alex Snaps. Alex est connu pour avoir travaillé avec Java au niveau du bytecode chez Terracotta, et travaille actuellement chez Shopify (et pas Spotify) dans la création d’une JVM Ruby sécurisée. Nous avons droit à un plongeon dans la mécanique du bytecode et de l’assembleur utilisée par la JVM, ponctué d’expressions qui doivent venir tout droit de son Canada natal (« mettre de la pommade sur la pilule », « je ne parierais pas ma culotte là-dessus »).
C’est dans la dernière partie de la présentation que cela devient vraiment intéressant. Alex Snaps explique certaines solutions adoptées par d’autres langages pour tirer parti du fonctionnement des processeurs modernes afin d’atteindre de meilleures performances. Par exemple, les coroutines du langage Go, qui marchent plus ou moins comme le Fork/Join de Java, prennent en paramètre un Channel qui oblige à copier les données linéairement en mémoire, améliorant ainsi leur localité et tirant de ce fait meilleure partie du cache processeur. De la même façon, la notion d’Ownership du langage Rust permet de mieux contrôler l’utilisation de structures de données et d’éviter des problèmes de concurrence.
Tools in action : protéger son application Web
En fin de journée, nous avons les Tools in Action. Je n’ai pas été très assidu, je n’ai participé qu’à la première session, ‘Protéger son application web des risques de sécurité les plus critiques’. Il s’agit d’une explication du top 10 des failles listée par l’OWASP, et leur résolution. Le contenu était intéressant, mais a été malheureusement un peu gâché par des démos ratées et un IDE qui aura planté deux fois. C’est déjà la fin de cette première journée du Devoxx 2017.
Jour 2, qui se termine sur un apéro
Le jeudi débutent les Conférences, des présentations de 45 minutes. Mais avant ça, nous aurons les keynotes, qui sont d’une grande qualité cette année. Mais encore avant ça, j’aimerais féliciter l’organisation : je suis arrivé avec 20 minutes de retard ce jour-là, comme une cinquantaine d’autres personnes, et la salle où se déroulaient les keynotes ainsi que toutes les salles d’overflow étaient pleines. Les organisateurs ont réussi à rajouter une nouvelle salle d’overflow en catastrophe, et j’ai pu assister aux keynotes de la journée.
De la responsabilité des ingénieurs par Eric Sadin
Et tout d’abord, le philosophe Eric Sadin qui nous a longuement parlé de la responsabilité des ingénieurs (de façon assez critique, il faut le reconnaître (et pour l’anecdote, dans l’appli MyDevoxx, il était rangé dans la catégorie « langage alternatif » (ce qui n’était pas très loin du compte (oui, j’ai fait du LISP dans ma jeunesse!))).
L’IA dans les jeux vidéos par Laurent Victorino
La keynote suivante est à voir absolument. Laurent Victorino nous parle de l’IA dans les jeux vidéos. On y apprend que le jeu est le seul domaine où l’IA est rendue plus bête exprès pour ne pas frustrer les joueurs. Laurent nous introduit deux jeux intéressants et de surcroît développés en France : Gladiabot qui permet de créer soi-même une IA pour gérer un groupe de robot et vaincre l’IA du joueur adverse, et Event[0] dont le but est de dialoguer avec un ordinateur intelligent afin d’avancer dans l’aventure. Je ne peux que vous les conseiller. Les keynotes se termineront sur une présentation de Philippe Anel sur l’état de la reconnaissance et de la synthèse vocale.
Typescript par Frédéric Camblor
Ma première conférence de la journée sera vouée au Typescript, langage qui a été récemment introduit dans nos projets et que je suis encore loin de maîtriser. Pour me mettre dans l’ambiance, une personne est assise un rang devant moi avec un T-shirt « Javascript is not a crime ». Frédéric Camblor nous déroule une séance de live coding qui est en fait une version raccourcie d’une autre séance qu’il a faite précédemment au JUG de Bordeaux. J’y apprendrai pas mal de fonctionnalités du langage comme les attributs dans les interfaces, les alias, les unions de type ou les attributs optionnels. Cette présentation me conforte dans l’idée que le typage a son importance dans les programmes atteignant une certaine taille.
À midi se déroulent les quickies, ces mini-présentations d’un quart d’heure. Je suis allé voir un ancien collègue de la Société Générale, Alexandre Navarro, présenter Feign, un framework qui facilite l’écriture de clients REST. Puis la présentation compressée de Zouheir Cadi sur le choix des systèmes de stockage. Je dis compressée car il avait originellement prévu de la faire en 45 minutes. Je pense qu’on peut officiellement dire que Zouheir a inventé la présentation JPEG.
Le streaming D’API par Audrey Neveu
Le première présentation de l’après-midi était pour moi l’exemple de ce qu’une présentation devrait être : drôle, intéressante et informative. Le « Streaming API » d’Audrey Neveu (alias Miss Devoxx for Kids) nous énumère les différentes technologies pour implémenter du streaming dans un client web. En particulier, elle nous explique quand utiliser plutôt les Server Sent Events que les Web Hooks (en gros, quand nos données sont textuelles et que le flux est unidirectionnel). Elle nous fera aussi découvrir la plateforme Streamdata.io qui permet de générer un stream à partir de données statiques. En guise de démo, on verra un drone se déplacer au gré du cours du Bitcoin. À voir absolument !
Un bot pour gérer l’agenda de ta conférence
Autre présentation intéressante : celle de Guillaume Laforge de chez Google Cloud sur la programmation de chat bot avec l’API.AI de Google. Il a entré l’agenda de la conférence dans une base ElasticSearch, à laquelle il accède grâce à un micro service sur Cloud Functions. Puis il a branché le tout sur un boitier Google Home, la petite boite qui comprend et parle l’anglais. Le résultat est une conversation assez amusante :
– Can you find a talk on bots ?
– Sorry, there are no jokes on bots.
– OK, can you find a presentation on bots ?
– Sorry, there are no presentation on boats.
– Can you find a presentation on Machine Learning ?
– Yes, there are 7 presentations on Machine Learning. Do you want to hear the details on the first one ?
La présentation suivante sera donnée par Romain Colle d’ActiveViam. L’outil qu’ils développent, Active Pivot, fait de l’analytique in-memory et, dans un de leur use cases, marche sur une machine à 384 cores et utilise 16To de mémoire. De par ses caractéristiques, cet outil a servi de benchmark à Oracle pour tester et améliorer le garbage collector G1, qui gagnera en puissance dans la prochaine version de Java.
cj5Stream Processing avec Apache Flink par Tugdual Grall
Après un courte pause, je me rend à la présentation de Tugdual Grall sur Apache Flink. J’avais déjà rencontré « Tug » au temps où il travaillait chez MongoDB, et l’on était en train d’introduire cette base dans un projet à la BNP. De nos jours, il travaille chez MapR, toujours dans le Big Data. Apache Flink, nous dit-il, gère des flux distribués aussi bien en streaming qu’en batch. Il est utilisé, par exemple, chez Bouygues, avec 10 millions d’events (soit 2 To) par jour, et 2 Po de stockage d’historique.
Pour ma dernière présentation de la journée, je fais un choix décontracté : l’apéro fonctionnel. Dans le style d’un café-théâtre, un groupe de développeurs débattent de la programmation fonctionnelle autour d’un apéro (apér-eau ?). Même si je rentre chez moi après cette présentation, la conférence, elle, n’est pas terminée : elle se finira à 23H avec la soirée Meet and Greet.
Jour 3, où toutes les bonnes choses ont une fin
La troisième journée de Devoxx 2017 commence sous le signe de l’intelligence artificielle et des robots…
Quel droit pour les robots ? Par Alain Bensoussan
Vendredi matin, la dernière journée de Devoxx démarre avec les habituelles keynotes. Tout d’abord, une présentation en anglais avec le charmant accent italien de Francesca Rossi qui nous parlera des recherches sur l’éthique dans l’AI. S’ensuivra un véritable plaidoyer de Maître Bensoussan, avocat, sur la responsabilité des développeurs. Cela lui vaudra un standing ovation, je ne peux que vous conseiller de visionner la vidéo.
Après une keynote de Laurent Bloch qui dénoncera les retards de la France sur la révolution cyber-industrielle, nous aurons droit à un numéro de comédie de Piotr Mirowski. L’originalité de son numéro est qu’il improvise ses sketchs avec, pour lui donner la réplique, un robot intelligent qui a accès à toutes les répliques célèbres du cinéma américain. Il s’agit bien d’une nouvelle forme d’art appelée « Improv Robot ».
Introduction à Rust par Olivier Bourgain et Jean-Baptiste Petit
Ma première présentation de la journée sera « Introduction à Rust ». Je dois avouer que ce n’était pas mon choix initial, mais je me suis laissé convaincre de partir à la chasse aux Goodies, notamment pour un T-shirt Jenkins au stand de Cloud Bees. Non seulement il n’y avait pas assez de T-shirts, mais en plus, la présentation sur Reactive Springs était déjà complète (merci Clément S.). Mes fidèles lecteurs (comment ça je n’en n’ai toujours pas ?) se rappelleront l’université d’Alex Snaps à laquelle j’ai assisté le Mercredi et qui a piqué ma curiosité sur le langage Rust. J’ai donc décidé d’aller voir de quoi il en retourne.
Rust est un langage centré sur deux axes : performance et robustesse. Pour ce qui est de la performance, il affiche des vitesses comparables au C++, avec une gestion automatique de la mémoire sans garbage collector. Pour ce qui est de la robustesse, il prend le contrepied des langages tels que Java sur certains points : par défaut, les variables sont immuables, et les références sont créées sur la pile. Son concept d’Ownership permet de transférer le droit de modifier une variable à une autre méthode, et d’éviter ainsi certains des problèmes liés au multithreading. Un langage à surveiller.
Il est midi, l’heure du déjeuner, mais aussi des quickies, et de la pause toilette. J’en profite pour faire une petite digression sur lesdites toilettes : un point très positif du Palais des Congrès est bien leur nombre, ce qui permet de ne pas avoir à faire la queue trop longtemps et d’avoir le temps d’y aller entre deux présentations. Un aspect intéressant est que l’on peut y entendre une petite musique dans le style de celle des parkings souterrains. Déjà, je trouvais que ces parkings ressemblaient de plus en plus à des toilettes publiques. Ce sont maintenant les toilettes qui réduisent l’écart de par cette musique. Il n’y manque plus que les voitures.
Après ce petit écart, retournons à nos quickies. Je suis allé voir une présentation sur sun.misc.Unsafe, la fameuse classe interdite et qui le sera encore plus avec Java 9, puis le petit quizz d’Olivier Croisier sur les bizarreries de la syntaxe de Java. Deux quickies très instructifs et divertissants.
Écriture de serveurs performants
Pour la première conférence de l’après-midi, je décide d’aller voir la présentation de Geoffroy Couprie de Clever Cloud sur les techniques d’écriture de serveurs performants. Il nous donnera énormément de techniques intéressantes venant de l’expérience acquise lors du développement d’un tout nouveau reverse proxy HTTP baptisé Sozu. Point encore plus intéressant : il est écrit en Rust.
La conférence suivante sur Eclipse aurait dû être en anglais avec Mikael Barbero, sauf qu’il n’est pas venu et a été remplacé au pied levé par Cédric Brun. Elle sera donc en français. Le point à retenir est la sortie de la version Oxygen fin juin avec pas moins de 84 projets livrés. Les points phares (en tout cas pour moi) sont les améliorations du mode debug (résultat de la dernière méthode exécutée, trigger point, trace point), un indexage des classes 10 fois plus rapide, le support de Junit 5, un module de code coverage, un meilleur support de Java 8 (103 bugs corrigés !) et le support de Java 9 et ses Modules.
Juste avant la pause-café, j’assiste à une présentation sur Reactor 3, l’API de streaming concurrente de RxJava. Elle est basée sur les interfaces Reactive Streams de Java 9 et permet de composer simplement des opérations asynchrones sans blocage aucun.
Pattern matching en Java 10
Après l’université sur Java 9 du mercredi, Rémi Forax est de retour pour parler du futur de Java. On y apprendra les 2 gros projets prévus pour Java 10 et 11 : le projet Panama pour remplacer JNI, et Valhalla pour introduir les values types dans Java. Rémi nous dévoilera aussi son ambition d’introduire le pattern matching dans la syntaxe du langage. Cela me rappelle un peu la commande ‘switch’ que j’avais vue dans une présentation sur JavaSlang. Qu’en sera-t-il de cette proposition ? À suivre.
Enfin, pour terminer Devoxx en beauté, j’ai décidé de m’orienter vers le jeu. Grégory Ribéro, alias Manwe, grand spécialiste français des coding games, nous livre tous ses secrets pour développer des bots intelligents. Si la programmation compétitive vous intéresse, regardez cette présentation pour y apprendre comment écrire un arbre de décision, une bonne fonction de randomisation, ou un algorithme génétique.
Voilà, c’est terminé. Mais pas complètement : si une présentation vous intéresse, si j’ai piqué votre curiosité avec un sujet, tout est sur Youtube sur la chaîne de Devoxx France 2017, et gratuitement. N’hésitez pas, le savoir est à portée de vos souris !
Crédit photos : Java User Group Belgium