37 votes

Remplacement des annotations JSR-305 pour Java 9

Jusqu'à présent, nous avons utilisé les annotations Findbugs JSR-305 (com.google.code.findbugs:jsr305) et tout, y compris le support des outils (Sonar, Eclipse, Findbugs, ), a bien fonctionné.

Cependant, nous croyons savoir que Jigsaw, dans Java 9, ne respectera pas les annotations de la JSR-305 (un paquet dans deux modules n'est pas autorisé). Cela a été confirmé à JavaOne 2015. Le raisonnement d'Oracle est que la JSR-305 n'a jamais eu lieu et que la JSR-250 devrait approuver ces annotations.

Nous recherchons des remplacements pour les annotations JSR-305 qui fonctionnent à la fois dans Java 8 et Java 9. Si l'on se fie à l'histoire, le délai entre le GA de Java 9 et l'EOL de Java 8 sera assez court et nous aimerions corriger à l'avance toute incompatibilité dans notre code. En théorie, nous pourrions mettre à niveau le module d'annotations du JDK, mais cela semble représenter beaucoup de travail pour l'ensemble de notre chaîne d'outils.

45voto

Mark Reinhold Points 2504

Il est vrai que deux modules ne peuvent pas, normalement, définir des types dans le même paquet. Jusqu'à récemment, mettre jsr305.jar sur le chemin de la classe d'un JDK 9 n'aurait aucun effet : Ce fichier JAR définit les types dans la classe javax.annotation mais ce paquet est défini dans le paquetage intégré de la plate-forme. java.annotations.common et ce dernier a la priorité.

En raison notamment de l'utilisation généralisée des jsr305.jar Cependant, et aussi pour faire faciliter la migration des serveurs d'applications existants vers le JDK 9, nous avons modifié l'ensemble par défaut des modules Root pour exclure le module d'annotations, entre autres. autres. En plaçant jsr305.jar sur le chemin des classes du JDK 9 fonctionne sans problème. à la fois avec le JDK 9 et le JDK 10 ; des détails sont disponibles dans le document JEP 261 . Il continuera continuer à fonctionner avec les versions ultérieures puisque le module d'annotations, ainsi que tous les autres modules Java EE et CORBA, ont été développés et mis à jour. ainsi que tous les autres modules Java EE et CORBA, ont été supprimés dans le JDK 11. par JEP 320 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X