Pergunta
Eu vi a pergunta JSR305 vs. JSR308 (Anotações do tipo Java) - Qual será o padrão? E eu entendo a diferença entre JSR 308 e JSR 305.
Entendo também que, neste momento, 308 está previsto para Java 7 e 305 não está, e estou curioso sobre o status geral de 305.
Especificamente, estou usando Coleções do Google e JSR-305 em alguns dos meus projetos (de maneira semelhante à que Um dos defensores das práticas recomendadas de Guice) e estava se perguntando se há uma abordagem mais amiga da "direção futura" que eu deveria estar usando. Estou planejando perguntar também sobre isso no grupo JSR-305, mas esse grupo não tem muita atividade e eu estava me perguntando se alguém aqui tinha mais informações.
Solução
Como descrito neste responda, JSR-305 propõe novas anotações, como @Nonnull, enquanto JSR-308 propõe permitir anotações em novos lugares, como em declarações genéricas.
Citando JSR 308 página:
… Este documento não propõe nenhuma anotação, apenas especificando onde eles podem aparecer no código Java.
O JSR 308 (anotações em novos lugares) está incluído em Java 8 debaixo JEP 104.
A partir de 2017, JSR 305 (Novas anotações) continua a carregar o status oficial de "inativo". UMA pergunta Sobre seu status no grupo do Google não foi respondido desde 2010.
Há uma implementação de referência das anotações JSR-305 aqui que é usado por muitos projetos, incluindo goiaba. Com o Maven, você pode usar a implementação de referência JSR-305, adicionando isso ao seu POM,
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.0</version>
</dependency>
Outras dicas
O JSR 305 não fará parte do Java 8:
Java 8 é descrito pelo JSR 337: A especificação atingiu o status final: Veja aqui.
- O JSR 308 está definitivamente em
- JSR 305 está definitivamente fora
De acordo com Alex Millers Blog Java 7, JSR-308 (e 305) estão programados para ir para Java 7. Talvez ele apareça aqui e forneça mais informações.