BT

Guava incompatible avec Java 1.7 update 51

| par Simon Baslé le 24 janv. 2014. Durée de lecture estimée: 2 minutes |

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

Donnez-nous votre avis

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

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

ouch by Mathieu POUSSE

sympa la retro compatibilité chez oracle !

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

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

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

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

1 Discuter

Se connecter à InfoQ pour interagir sur ce qui vous importe le plus.


Récupérer votre mot de passe

Follow

Suivre vos sujets et éditeurs favoris

Bref aperçu des points saillants de lindustrie et sur le site.

Like

More signal, less noise

Créez votre propre flux en choisissant les sujets que vous souhaitez lire et les éditeurs dont vous désirez suivre les nouvelles.

Notifications

Restez à jour

Paramétrez vos notifications et ne ratez pas le contenu qui vous importe

BT