I'm looking to make my code more readable as well as use tooling like IDE code inspection and/or static code analysis (FindBugs and Sonar) to avoid NullPointerExceptions. Many of the tools seem incompatible with each others' @NotNull/@NonNull/@Nonnull annotation and listing all of them in my code would be terrible to read. Any suggestions of which one is the 'best'? Here is the list of equivalent annotations I've found:
Created for runtime validation, not static analysis.
Used by Findbugs static analysis and therefore Sonar
This might work with Findbugs too, but JSR-305 is inactive.
Used by IntelliJ IDEA IDE for static analysis.
Used to control code generation in Project Lombok.