Qual anotação Java @NonNull usar

O que émelhor Anotação 'NonNull'?

"Melhor" no sentido de

Caminho padrão, p. prova futura (por exemplo, suporte por jdk padrão etc.)Suporte de IDE (aparece em java doc para indicar o uso para desenvolvedores)Suporte por ferramentas de análise estática, como findbugsSuporte para análise de tempo de execução

Aqui está como o mundo se parece atualmente - qualquer outro insight é apreciado:

javax.validation.constraints.NotNull (Documentos)
Portanto, o pacote javax parece à prova de futuro
- Parte do JEEnão JSE. No JSE precisaimportar bibliotecas adicionais.
- Não suportado por ferramentas de análise estática (apenas validação de tempo de execução)

edu.umd.cs.findbugs.annotations.NonNull (docs)
- biblioteca externa e não umajavax pacote
- descontinuada desde o findbugs versão 3.X
+ usado para análise estática (por findbugs e, portanto, Sonar)

javax.annotation.Nonnull (docs)
+ usado para análise estática (em findbugs)
- JSR-305 está adormecido / morto / desconhecido como nolista de discussão fb indicado. O autor Bill Pugh, mesmo se perguntado diretamente, não comenta o estado há anos ...

org.eclipse.jdt.annotation_2.0.0 (docsinteressanteapresentação)
+ usado para análise estática (embora no eclipse não no findbugs)
- proprietário do eclipse (não tentou usá-los autônomo)

org.jetbrains.annotations.NotNull (docs)
+ usado para análise estática (no intelecto, mas não nos findbugs)
- proprietário do IntelliJ (mas também disponível publicamente como jar)

lombok.NonNull(docs)
+ usado para controlar a geração de código
- anotação proprietária

android.support.annotation.NonNull (docs)
+ análise estática no android studio
- anotação proprietária específica do Android

org.checkerframework.checker.nullness.qual.NonNull (docs)
+ JSR308 implementação que faz parte do Java8 (que introduziu a capacidade de escrever anotações em diferentes partes do seu código, mas não introduziu novas anotações)
+ usado para código estático (embora não seja encontrado)e análise de tempo de execução
- lib externa, no entanto, parece serendossado pelo pessoal do java

Atualmente, eu tenderia aoChecker Framework mas estou ansioso por outros pontos de vista ...

[aviso Legal] Eu sei que a pergunta foi feita aqui, mas não foi respondida (ou a resposta estava errada / incompleta / desatualizada)[/aviso Legal]

questionAnswers(1)

yourAnswerToTheQuestion