BT

Accueil InfoQ Actualités Oracle ressuscite getCallerClass, au moins pour le moment

Oracle ressuscite getCallerClass, au moins pour le moment

Favoris

Début juillet, Oracle annonçait la suppression de la méthode Java sun.reflect.Reflection.getCallerClass(). Aujourd'hui, la société fait machine arrière avec ce tweet de Mark Reinhold, architecte en chef de la plate-forme Java d'Oracle qui écrivait mardi :

@CedricChampeau @glaforge Nous allons restaurer getCallerClass(int) en 7u40. Le futur de cette méthode en 8 reste à déterminer.

Cédric Champeau a rebondi avec ce tweet :

Bonne nouvelle : les gars du jdk ont décidé de revenir sur le comportement de getCallerClass en 1.7u40 et 1.8. #groovy et les systèmes de log ne seront pas impactés :-)

Champeau est le committer principal sur le langage de programmation Groovy. Il travaille chez Pivotal, une division de VMWare qui possède également SpringSource, le sponsor actuel de Groovy. Guillaume Laforge est responsable du développement de Groovy chez SpringSource.

La méthode sun.reflect.Reflection.getCallerClass() fonctionne en retournant l'instance de la classe placée en xème position sur la pile d'appels, avec la class Reflect elle-même en position 0. getCallerClass() fournit un mécanisme pour déterminer la classe d'appel afin d'implémenter un comportement "Dépendant de l'Appelant", une stratégie qui permet aux applications de varier leur comportement en fonction de la classe appelante ou d'autres classes dans la pile d'appels.

Oracle s'est hâté de rappeler que l'utilisation de getCallerClass() et de toutes les autres méthodes dans n'importe lequel des paquetage sun.* peut s'avérer fragile et incohérente, pour les raisons décrites dans l'article "Pourquoi les Développeurs Ne Devraient Pas Ecrire des Programmes Qui Invoquent les Packages 'sun'". L'annonce de cette dépréciation est tracée sur l'outil de suivi OTN.

Cédric Champeau a très tôt mis en lumière cette dépréciation car Groovy dépend de cet appel de méthode.

Non seulement Groovy est impacté, mais Grails a également publié un bug lié sur leur outil de suivi.

Une rapide analyse des moteurs de recherche de code source public, y compris GitHub, révèle des dépendances à getCallerClass() dans une large palette de projets, notamment plusieurs projets actifs d'Oracle comme le Projet Jigsaw et le Projet Lambda, ainsi que des projets tiers comme IntelliJ IDEA.

Evaluer cet article

Pertinence
Style

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

BT

Votre profil est-il à jour? Merci de prendre un instant pour vérifier.

Note: en cas de modification de votre adresse email, une validation sera envoyée.

Nom de votre entreprise:
Rôle dans votre entreprise:
Taille de votre entreprise:
Pays/Zone:
État/Province/Région:
Vous allez recevoir un email pour confirmer la nouvelle adresse email. Ce pop-up va se fermer de lui-même dans quelques instants.