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.
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? –
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
JSR 308 a été différé à Java: http://openjdk.java.net/projects/jdk7/features/#deferred – reprogrammer