2009-09-25 5 views
17

Il semble y avoir deux JSR différents pour les annotations.JSR305 vs. JSR308 (Java Type Anotations) - Quel sera le standard?

JSR-305: Annotations for Software Defect Detection(additional resource)
JSR-308: Annotations on Java Types(additional resource)

Les deux semblent être orientés vers l'analyse de code statique.

Savez-vous:

  • qui du deux va être soit en Java SE 7 ou Java EE 6? Quelle est la "stabilité" de chaque JSR?
  • l'un remplace-t-il (ou obsolète) l'autre?

Répondre

14

Je peux répondre à votre dernière question. Ce n'est pas la même chose. 305 concerne les nouvelles annotations dans lesquelles vous pouvez déjà les mettre, ce qui peut aider à fournir une visibilité programmatique dans un système de conception par contrat. Ainsi, si une certaine méthode est supposée ne pas renvoyer de valeur nulle, ou si une certaine méthode est supposée ne jamais recevoir un paramètre nul, il est possible de dire au système analysant les annotations de rechercher ce cas spécifique sur ce morceau de code.

308 est d'être capable d'annoter plus de choses, comme un paramètre générique et un cast de type. J'imagine qu'une utilisation primaire pour cela est d'être capable de supprimer l'avertissement sur une distribution de type spécifique, au lieu de devoir déclarer une variable locale à cette fin. L'annotation @SuppressWarnings existe déjà (alors que JSR-305 chercherait à en définir de nouvelles), mais dans JSR-308 elle pourrait être appliquée à plus de cas.

Selon this 308 fera partie de Java7, ce qui impliquerait qu'il est assez stable pour être stable. JSR-305 n'est pas sur la liste, donc il ne semble pas que cela le fera à Java7.

+0

Ainsi, pratiquement JSR-308 est seulement une extension à la langue, alors que ces vérificateurs (qui sont discutés sur la page du projet), sont facultatifs et ne seront pas disponibles dans le JDK), n'est-ce pas? –

+0

Il semble que ce soit. Les deux propositions fonctionnent ensemble car elles sont très utiles ensemble (c'est pourquoi la page JSR-308 vante ce genre de fonctionnalité). Je n'ai aucune information faisant autorité sur ce qui sera ou ne sera pas dans JDK7, mais il semble que JSR-305 ne le fasse pas, mais je pourrais bien me tromper à ce sujet. – Yishai

+1

JSR 308 a été différé à Java: http://openjdk.java.net/projects/jdk7/features/#deferred – reprogrammer

1

Pour les futurs lecteurs, JSR 308 est en cours d'intégration dans Java 7. Certains de ses changements ont déjà été poussés vers les bêtas publiques de Java 7. JSR305 n'a cependant pas fait la coupe.

+0

Avec JSR308, Java7 fournira-t-il un cadre de vérificateur standard? –

+0

Les vérificateurs sont distribués à http://types.cs.washington.edu/jsr308. Il est possible que le JDK les regroupe, mais aucune garantie n'est encore donnée. – notnoop

+0

Cet article semble indiquer que JSR-305 fera partie de Java 7: http://today.java.net/pub/a/today/2008/09/11/jsr-305-annotations.html –

Questions connexes