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'
I would only use things under the
javax namespace (even though I love what Lombok and IntelliJ are doing). Otherwise, you might be creating a dependency on something other than what the run-time gives you for something that is pretty much semantics. Maybe for some projects, that's ok, but that'd be a deal-breaker for me.
I would use
javax.validation.constraints.NotNull because that's already here with Java EE 6.
javax.annotation.NonNull might not be here until Java 8 (as Stephen pointed out). And the others are not standard annotations.
It would have been nice if annotations were extensible. That way you could define your own
non-null annotation inheriting/extending from anything. Then when standards get ironed out, all you would have to do would be to redefine your own custom annotation.
Unfortunately that's not the case.