BT

Accueil InfoQ Actualités Guava incompatible avec Java 1.7 update 51

Guava incompatible avec Java 1.7 update 51

Favoris

Suite à la publication par Oracle de la mise à jour 51 de Java 1.7, des contributeurs de la populaire librairie Guava (originaire de Google) ont constaté que certains tests unitaires ne passaient plus. Creusant le problème, il a été constaté que cette mise à jour rendait Guava incompatible avec la version 1.7u51 de Java, en raison d'une modification dans la méthode equals de la classe TypeVariableImpl dans le jdk.

En effet, la méthode equals a été changée dans le jdk et vérifie maintenant l'égalité de classe avec l'objet comparé, cassant ainsi la compatibilité avec une implémentation alternative de TypeVariable présente dans Guava (TypeVariable étant bien une classe de l'API publique et non interne à l'implémentation Oracle du JDK).

Ce changement est mis en correspondance dans les sources du JDK avec une "Amélioration de Sécurité" des notes de version, avec la mention "Amélioration des classes génériques" ("S8023301: Enhance generic classes").

Guava apporte entre autres choses une API de réflection, avec notamment les TypeToken, qui utilisent des astuces liées à la réflection pour autoriser le développeur à manipuler et s'informer sur des types génériques, y compris pendant l'exécution. C'est cette API qui est impactée par le problème (NdR: les impacts en cascade sur les autres parties de la librairie Guava n'ont pas été évalués).

Une fiche dans le bugtracker du JDK a rapidement été ouverte par Robert McKenna, ingénieur IBM, mais a tout aussi rapidement été fermée par un employé d'Oracle, Joel Borggrén-Franck, indiquant que c'était un changement voulu, pas un problème.

Cependant Google Guava est massivement utilisé, dans des projets privés comme publics/opensource (comme Apache JClouds, une abstraction d'APIs liées au cloud pour de nombreux fournisseurs de services), or ce cassage de compatibilité n'est pas cantonné aux tests unitaires mais impacte bel et bien les projets utilisant la librairie.

Ainsi il paraît difficile pour les (nombreux) utilisateurs de Guava de voir la mise à jour 51 comme une mise à jour de sécurité mineure. Pour se donner une idée de l'impact du problème, ne serait-ce qu'au travers de JClouds, on pourra se référer à la liste des applications utilisant ce projet (CloudBees, Jenkins, Hudson, Salesforce et Twitter notamment).

Dans ces conditions, les développeurs et opérationnels de projets faisant usage de Guava devraient y réfléchir à deux fois avant de migrer vers la dernière version de Java.

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é

  • ouch

    by Mathieu POUSSE /

  • Ce message a été marqué comme possible SPAM. Un modérateur le relira et le publiera sans notification dans les 24 heures. Merci.

    sympa la retro compatibilité chez oracle !

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.