2009-09-25 23 views
17

Sembra che ci siano due JSR differenti per le annotazioni.JSR305 vs JSR308 (Java Type Anotations) - Quale sarà lo standard?

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

Entrambi sembrano essere orientata verso l'analisi del codice statico.

Sai:

  • quale delle due sta per essere sia in Java SE 7 o Java EE 6?
  • come "stabile" è ogni JSR?
  • l'Uno sostituisce (o obsoletes) l'altra?

risposta

14

posso rispondere alla tua ultima domanda. Non sono la stessa cosa. 305 riguarda nuove annotazioni in cui è già possibile inserirle, il che può contribuire a fornire visibilità programmatica in un sistema di progettazione per contratto. In questo modo, se si suppone che un determinato metodo non restituisca null, o se si suppone che un determinato metodo non riceva mai un parametro null, è possibile dire al sistema che analizza le annotazioni per cercare questo caso specifico in questa parte di codice.

308 è di essere in grado di annotare altre cose, come un parametro generico e tipo colato. Immagino che un uso principale per questo sia quello di essere in grado di sopprimere l'avvertimento su un tipo specifico di cast, invece di dover dichiarare una variabile locale per quello scopo. L'annotazione @SuppressWarnings esiste già (mentre JSR-305 cercherebbe di definirne di nuovi), ma in JSR-308 potrebbe essere applicata a più casi.

Secondo this 308 sarà parte di Java7, che implicherebbe è abbastanza ben oltre ad essere stabili. JSR-305 non è nella lista, quindi non sembra che lo farà a Java7.

+0

Quindi, praticamente JSR-308 è solo un estensioni al linguaggio, mentre quelle pedine (che sono discusse nella pagina del progetto), sono opzionali e non saranno disponibili nel JDK), giusto? –

+0

Sembra così. Le due proposte funzionano insieme poiché sono più utili insieme (motivo per cui la pagina JSR-308 sta sollecitando questo tipo di funzionalità). Non ho alcuna informazione autorevole su cosa sarà o non sarà in JDK7, ma sembra che JSR-305 non lo stia facendo, ma potrei sbagliarmi. – Yishai

+1

JSR 308 è stato rinviato a Java: http://openjdk.java.net/projects/jdk7/features/#deferred – reprogrammer

1

Per i lettori futuri, JSR 308 viene integrato in Java 7. Alcuni dei suoi cambiamenti sono già stati spinti ai beta pubbliche di Java 7. JSR305 però non ha fatto il taglio.

+0

Con JSR308, Java7 fornirà un quadro di verifica standard? –

+0

I correttori vengono distribuiti su http://types.cs.washington.edu/jsr308. C'è la possibilità che il JDK li impacchetta, ma non ci sono ancora garanzie. – notnoop

+0

Questo articolo sembra indicare che JSR-305 farà parte di Java 7: http://today.java.net/pub/a/today/2008/09/11/jsr-305-annotations.html –