L'empreinte de Microsoft dans l'écosystème Java s'est étendue. Ce qui a commencé avec "Java on Azure" et la prise en charge de Minecraft, Microsoft le poursuit avec divers outils visant à rendre la machine virtuelle Java (JVM) plus accessible et à améliorer l'expérience de développement des développeurs Java. Le dernier ajout de l'entreprise à cette collection a été "l'open sourcing" du GCToolkit au début du mois d'août 2021. Comme son nom l'indique, il s'agit d'un ensemble de bibliothèques permettant d'analyser les fichiers journaux du ramasse-miette (garbage collection - GC) de Java et de les analyser en événements distincts.
Il expose une API pour améliorer l'interaction avec la boîte à outils et l'agrégation des données. Cela permet à l'utilisateur de créer des analyses complexes arbitraires de l'état de la mémoire gérée de la JVM. Selon l'équipe, c'est le point d'entrée de l'utilisateur dans GCToolkit qui cache les détails des modules internes dans quelques appels de méthode. Outre l'API, il existe deux autres modules : le module d'analyse syntaxique et le module Vert.x. Le module d'analyse syntaxique est basé sur une collection d'expressions régulières et de code écrit pour être considéré comme l'analyseur syntaxique de journaux GC le plus robuste disponible.
Le back-end de messagerie basé sur Vert.x utilise deux bus de messages : le premier transmet les données depuis une source de données. L'implémentation actuelle transmet les lignes de journal à partir du fichier journal GC. Les consommateurs de ce bus sont les analyseurs qui convertissent les données de la source de données en événements qui représentent soit un cycle GC, soit un point sûr. Ces événements sont publiés sur le deuxième bus de messages : le bus d'événements. Les abonnés du bus d'événements sont alors en mesure d'être notifiés et de traiter les événements qui les intéressent.
L'analyseur syntaxique émet des événements discrets de la JVM (événements de cycle GC), ce qui permet d'écrire du code pour capturer et analyser les données de ces événements. Afin de faciliter la capture et l'analyse des données des fichiers journaux GC, GCToolkit fournit un cadre d'agrégation simple. Le type de données que les utilisateurs veulent capturer ou le type d'analyse qu'ils veulent effectuer est à la discrétion de l'utilisateur. Par exemple, pour capturer les événements de pause dans le but d'analyser l'occupation du tas, l'agrégateur capture l'événement, extrait les données pertinentes et transmet les données à l'agrégation.
Celle-ci rassemble les données en une analyse significative, par exemple, l'occupation totale du tas après la collecte des déchets. Les données résultantes peuvent être présentées sous la forme d'un graphique, d'un tableau ou d'un autre format plus convivial. Plus important encore, selon l'équipe, une configuration sous-optimale du collecteur se traduira par une application nécessitant plus de CPU et de mémoire, tout en dégradant l'expérience de l'utilisateur final. En d'autres termes, un collecteur mal réglé est souvent synonyme de temps d'exécution plus coûteux et d'utilisateurs mécontents.
Le défi est que pour régler le GC de manière optimale, il faut créer un équilibre délicat entre plusieurs préoccupations qui ne sont pas toutes facilement visibles sans l'aide d'un outil. GCToolKit a été utile pour faciliter cette tâche. Le GCToolkit a été construit autour du module parser - une collection d'expressions régulières et de code qui a évolué au cours de nombreuses années, pour devenir un robuste analyseur de journaux GC.
Avec l'intérêt grandissant de Microsoft pour la plateforme Java, l'accent mis sur l'open source accroît également les avantages pour la communauté Java. Après avoir apporté des contributions majeures au portage de macOS M1 et de Windows sur Arm, Microsoft a réaffirmé son engagement envers OpenJDK en présentant sa propre version d'OpenJDK et en rejoignant le groupe de travail Eclipse Adoptium (précédemment connu sous le nom d'AdoptOpenJDK).
En mettant en libre accès le GCToolkit, Microsoft tente de fournir un meilleur moyen de visualiser les détails internes de la JVM sur la façon dont elle gère le GC et l'allocation de mémoire. Une meilleure visibilité permet d'améliorer les réglages, ce qui profite à la fois aux utilisateurs finaux de l'application et au personnel technique chargé de la gérer. L'API simple et les mécanismes de sortie conviviaux promettent d'améliorer la tâche de lecture des journaux GC en fournissant divers mécanismes d'analyse, d'extraction et de visualisation des données.
Sources : Microsoft, GCToolkit
Et vous ?
Que pensez-vous de l'utilitaire GCToolkit de Microsoft ?
Voir aussi
Développeurs Java : la version d'OpenJDK de Microsoft est désormais disponible et inclut des binaires pour Java 11 basés sur OpenJDK 11.0.11
Microsoft rend open source son extension de débogage Java pour Visual Studio Code qui au passage s'enrichit de quelques nouvelles fonctionnalités
Microsoft étoffe son offre Azure Cloud à destination des développeurs Java