BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

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

Contenu Éducatif

BT