Ich kann Ihre letzte Frage beantworten. Sie sind nicht dasselbe. Bei 305 handelt es sich um neue Anmerkungen, in die Sie diese bereits einfügen können. Dadurch können Sie einen programmatischen Einblick in ein Design-by-Contract-System erhalten. Wenn also eine bestimmte Methode nicht null zurückgeben soll oder eine bestimmte Methode niemals einen Null-Parameter erhalten soll, kann dem System mitgeteilt werden, dass die Annotationen in diesem Code auf diesen speziellen Fall hin untersucht werden sollen.
308 geht es darum, mehr Dinge zu kommentieren, wie etwa einen generischen Parameter und einen Typ-Cast. Ich stelle mir vor, dass eine primäre Verwendung darin besteht, die Warnung bei einer bestimmten Typumwandlung unterdrücken zu können, anstatt eine lokale Variable für diesen Zweck deklarieren zu müssen. Die Annotation @SuppressWarnings ist bereits vorhanden (während JSR-305 so aussehen würde, als würde sie neue definieren), aber in JSR-308 könnte sie auf weitere Fälle angewendet werden.
Laut this wird 308 Teil von Java7 sein, was bedeuten würde, dass es ziemlich gut ist, stabil zu sein. JSR-305 ist nicht auf der Liste, also sieht es nicht so aus, als würde es zu Java7 gelangen.
So praktisch JSR-308 ist nur eine Erweiterung der Sprache, während diese Kontrolleure (die auf der Projektseite besprochen werden) optional sind und nicht im JDK verfügbar sein werden, richtig? –
Es scheint so. Die beiden Vorschläge arbeiten zusammen, da sie am nützlichsten sind (weshalb die JSR-308-Seite diese Art von Funktionalität anbietet). Ich habe keine maßgeblichen Informationen darüber, was in JDK7 sein wird oder nicht, aber es scheint, dass JSR-305 es nicht schafft, aber ich könnte damit falsch liegen. – Yishai
JSR 308 wurde auf Java verschoben: http://openjdk.java.net/projects/jdk7/features/#deferred – reprogrammer