À l’occasion de notre enregistrement de l’épisode BeeKoz avec José Paumard, ce dernier nous a fait la promotion du JavaDay, journée de conférences organisée par l’équipe du Paris JUG autour du thème du futur de Java en 2022. Avec Njarasoa et Antoine (gagnants de notre concours BeeKoz), nous avons eu la chance d’assister au retour du format physique de cette journée riche en sujets plus techniques les uns que les autres.
Nous avons lancé les hostilités avec Jean-Michel Doudoux qui reprenait les différentes grosses features que nous ont apportées chaque version de Java depuis Java 7 ainsi que les raisons de migrer vers les dernières versions. Au delà du sucre syntaxique que l’on peut avoir avec des var ou du pattern matching, il est bon de garder en tête que techniquement les migrations apportent des améliorations en termes de sécurité et de performance, et que sur de la gestion d’équipes, elles aident au recrutement et permettent de garder les développeurs plus longtemps.
Puis Jean-Philippe Bempel et Brice Dutheil nous ont proposé une conférence très technique sur les problèmes liés aux Out Of Memory Kills. Ces mécanismes Linux qui kill nos conteneurs JVM en prod. Ce fut dans un premier temps l’occasion de revenir sur les différents types de mémoire dans la JVM, les moyens d’extraire les métriques de la JVM, et l’approche retrofit concernant les contraintes de ressources à attacher à nos containers. Et dans un second temps les options à notre disposition et pratiques associées pour éviter le respawn de nos containers au sein de notre orchestrateur (choix des compilateurs, tuning du metaspace, tuning du CPU, tuning du liveness probe/readiness probe …).
Enfin pour clôturer la matinée, Charles Sabourdin nous a partagé sa vision de la sécurisation de nos processus de desérialisation et a pris le temps de revenir plus en détails sur certaines JEPs ayant considérablement pimpé notre façon d’écrire le code.
Pour le déjeuner, nous avions un buffet autour duquel il était possible de retrouver des membres de l’équipe du Paris JUG et d’échanger avec eux.
Après le repas, Cédric Champeau nous a introduit Micronaut, framework de développement orienté microservice avec un effort mis sur l’optimisation du runtime grâce au maximum de processing effectué au build time (contrairement à un spring par exemple), qui par ailleurs est compatible avec Graalvm pour créer des images natives. Il nous a montré la simplicité avec laquelle on démarrait une application Micronaut from scratch et la performance initiale qu’elle affichait au démarrage. Puis il nous a présenté Micronaut AOT qui est une extension optionnelle qui permet d’optimiser le déploiement de notre application (pré-scan des classes à charger pour éviter l’utilisation du service loader, conversion des fichiers Yaml en classes, cache de l’environnement au build pour du natif…). Pour une application compilée en natif avec micronaut AOT, Cédric nous a montré un démarrage en 20 ms… et ça c’est beau !
Vous pouvez retrouver sa première présentation du sujet ici : https://www.youtube.com/watch?v=OpljpZ17jaY
Puis Hervé Boutémy nous a parlé du contexte d’évolution de Maven avec la contrainte de garder une compatibilité avec le POM v4 présent sur tout l’écosystème Java. Il a pu développer les concepts de build POM vs consumer POM et nous développer la stratégie privilégiée pour faire évoluer le POM à l’aide de la version 4 puis la version 5 de Maven. Par ailleurs, il est aussi revenu sur certains plugins/outils tels que le Maven Daemon, le build cache extension et le build-plan plugin.
Possibilité de retrouver une partie de sa conf ici : https://www.javaadvent.com/2021/12/from-maven-3-to-maven-5.html
Et enfin pour clôturer les confs de la journée, Rémi Forax nous a parlé du projet Valhalla avec ses value class répondant à une problématique de manipulation des données sans pointeurs mais impliquant des difficultés techniques loin d’être simples à surmonter. Ce fut l’occasion de parler des différents types de value class par rapport à leur capacité à être « aplaties » en mémoire, d’introduire les notions d’universal generics et de species pour les types génériques, et d’aller jusqu’à voir comment le compilateur pouvait gérer le type Erasure dans ces cas là.
S’en est suivie une session de questions/réponses avec les speakers qui a réellement terminé cette journée très technique !
J’ai trouvé cette journée organisée par le JUG très intéressante dans la mesure où des experts venaient partager sur des sujets dans leur domaine d’expertise, et ça s’est bien ressenti ! Certains sujets techniques auxquels on n’est pas souvent confronté en tant que développeur invitaient tout de même un peu de préparation côté participants pour pouvoir suivre sans problème !
Marvin GILLY – Tech Advisor