OpenJDK envisage d'inclure l'API asynchrone Stack Trace VM 

OpenJDK

OpenJDK est la version gratuite de la plateforme de développement Java sous le concept de langage orienté objet.

Récemment une proposition a été publiée pour promouvoir les traces de pile asynchrones en Java et qu'il prospère dans le processus d'amélioration Java d'OpenJDK. Le projet vise à définir une API AsyncGetStackTrace pour collecter les traces de pile de manière asynchrone et inclure des données sur Java et les frameworks de pile natifs.

Selon la proposition, les performances ne seraient pas affectées lorsque l'API n'est pas utilisée et les besoins en mémoire n'augmenteraient pas de manière significative par rapport à l'API AsyncGetCallTrace existante. La nouvelle API ne serait pas recommandée pour une utilisation en production car elle pourrait planter la JVM. Les plans incluent la minimisation des risques d'un tel incident grâce à des tests et à une vérification approfondis.

AsyncGetCallTrace est utilisé par la plupart des générateurs de profils disponibles, à la fois open source et commerciaux, y compris async-profiler. Mais il a deux gros inconvénients.

  1. il s'agit d'une API interne, non exportée dans les en-têtes ;
  2. il ne renvoie que des informations sur les cadres Java, c'est-à-dire leur méthode et leurs indices de bytecode.

Ces problèmes compliquent la mise en œuvre des profileurs et des outils associés. Bien que des informations supplémentaires puissent être extraites de la VM HotSpot via un code complexe, d'autres informations utiles sont masquées et impossibles à obtenir :

Si un framework Java compilé est en ligne (actuellement disponible uniquement pour les frameworks compilés supérieurs).

Le niveau de construction d'un framework Java (c'est-à-dire compilé par C1 ou C2).
Informations sur les frameworks C/C++ qui ne sont pas en haut de la pile.

Ces données peut être utile lors du profilage et du réglage d'une machine virtuelle pour une application donnée, ainsi que lors du profilage de code qui utilise beaucoup de JNI.

L'API serait modélisée sur APIAsyncGetCallTrace, De plus, la nouvelle API n'a pas encore été proposée pour une version spécifique du standard Java. La prochaine version de Java est (JDK) 20, qui est attendue en mars 2023. Java dispose d'un processus formel d'intégration des changements de plate-forme qui a réussi à répondre à l'évolution des circonstances tout en atteignant un degré élevé de stabilité.

Les profileurs peuvent appeler cette API pour obtenir la trace de la pile pour le thread en cours d'exécution. L'appel de cette API à partir d'un gestionnaire de signaux est sûr et la nouvelle implémentation sera au moins aussi stable que le code de suivi de la pile JFR. La machine virtuelle remplit les informations de trame et le nombre de trames. L'appelant de l'API doit allouer au tableau d'appel suffisamment de mémoire pour la profondeur de pile demandée.

La machine virtuelle complète la structure de trace qui contient le nombre réel d'images dans le tableau d'images ou un code d'erreur. Les codes d'erreur sont un sous-ensemble des codes d'erreur pour AsyncGetCallTrace.

Bien que l'API fournisse plus d'informations, l'espace requis par trame (par exemple, 16 octets sur x86) est le même que pour l'APIAsyncGetCallTrace existante. Le renvoi d'informations sur les frameworks C/C++ entraîne la divulgation des détails d'implémentation, mais cela est également vrai pour les frameworks Java AsyncGetCallTrace car ils révèlent les détails d'implémentation des fichiers de bibliothèque standard et incluent des frameworks wrapper natifs.

Même un développeur Java expérimenté peut ne pas avoir une bonne compréhension comment la plate-forme est développée et maintenue. La principale leçon à tirer est qu'il s'agit véritablement d'un processus ouvert.

La base du développement Java est le Java Community Process (JCP). C'est une sorte de document de base autonome qui définit comment introduire des changements dans la plate-forme et permet également de modifier le processus lui-même. La dernière version du JCP est la 2.11, qui a été adoptée en 2019.

JCP formalise la manière dont les nouvelles fonctionnalités et modifications de Java sont proposées, examinées et approuvées. (c'est-à-dire les spécifications techniques), y compris la définition des différents rôles que les personnes peuvent occuper. Ces rôles aident à fournir un endroit où la communauté d'utilisateurs Java peut participer à la gouvernance de la plate-forme.

Pour proposer de nouvelles fonctionnalités et modifications, JCP permet la création (« initialisation ») de Java Specification Requests (JSR). Cela se fait par le biais d'un formulaire standardisé. Pour accéder au formulaire, vous devez créer un compte JCP gratuit.

A partir de là, de nombreux changements, petits ou non, arrivent sur les technologies Java que nous utilisons au quotidien. Lorsqu'une JSR arrive, elle entre dans le processus d'examen de la JSR. Il s'agit d'un processus en plusieurs étapes au cours duquel les changements proposés dans la JSR sont progressivement considérés plus sérieusement, modifiés et finalement adoptés ou abandonnés.

Enfin si vous souhaitez en savoir plus, vous pouvez vérifier les détails dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.