2009-09-25 9 views
17

Es scheint zwei verschiedene JSRs für Anmerkungen zu geben.JSR305 vs. JSR308 (Java Type Anato- tions) - Was wird der Standard sein?

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

scheinen sowohl gegenüber statischen Code-Analyse zu orientieren.

Kennen Sie:

  • , welche der beiden entweder in Java SE 7 oder Java EE 6 sein wird?
  • Wie "stable" ist jeder JSR?
  • ersetzt das eine (oder obsoletes) das andere?

Antwort

14

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.

+0

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? –

+0

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

+1

JSR 308 wurde auf Java verschoben: http://openjdk.java.net/projects/jdk7/features/#deferred – reprogrammer

1

Für zukünftige Leser wird JSR 308 in Java 7 integriert. Einige seiner Änderungen wurden bereits auf die öffentlichen Betas von Java 7 übertragen. JSR305 schaffte es jedoch nicht.

+0

Bietet Java7 mit JSR308 ein Standard-Checker-Framework? –

+0

Die Checker werden unter http://types.cs.washington.edu/jsr308 verteilt. Es besteht die Möglichkeit, dass das JDK sie bündelt, aber es sind noch keine Garantien gegeben. – notnoop

+0

Dieser Artikel scheint anzuzeigen, dass JSR-305 Teil von Java 7 sein wird: http://today.java.net/pub/a/today/2008/09/11/jsr-305-annotations.html –