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.
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? –
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
JSR 308 è stato rinviato a Java: http://openjdk.java.net/projects/jdk7/features/#deferred – reprogrammer