What is the status of JSR 305?
I have seen the question JSR305 vs. JSR308 (Java Type Anotations) - Which is going to be the standard? and I understand the difference between JSR 308 and JSR 305.
I also understand that, at this time, 308 is slated for Java 7, and 305 is not, and I am curious about the overall status of 305.
Specifically, I am using Google Collections and JSR-305 in some of my projects (in a similar manner to what one of the Guice best practices advocates) and was wondering if there is a more "future direction"-friendly approach I should be using instead. I am planning to also ask about this on the JSR-305 group, but that group does not have much activity and I was just wondering if anyone here had any more info.
As described in this answer, JSR-305 proposes new annotations such as @NonNull, while JSR-308 proposes allowing annotations in new places such as on generic declarations.
Quoting JSR 308 page:
…this document does not propose any annotations, merely specifying where they can appear in Java code.
JSR 308 (annotations in new places) is included in java 8 under JEP 104.
As of 2017, JSR 305 (new annotations) continues to carry official status of “Dormant”. A question about it's status in the google group has been unanswered since 2010.
There is a reference implementation of the JSR-305 annotations here which is used by many projects, including guava. With maven you can use the JSR-305 reference implementation by adding this to your pom:
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.0</version>
</dependency>
JSR 305 will not be part of Java 8:
- Java 8 is still scheduled for March 18, 2014.
- JSR 305 remains dormant as of March 5, 2014.
Java 8 is described by JSR 337: the specification has reached Final status: see here.
- JSR 308 is definitely in
- JSR 305 is definitely out
- Status of JSR 305 is Dormant.
- JSR 305 was tightly connected to the FindBugs project.
- FindBugs project was announced as dead.
- The successor of FindBugs is SpotBugs.
- It was "branched off" by Andrey Loskutov, one of the former members of the FindBugs development team.
- Announcement of the SpotBugs project.
- SpotBugs project is active.
If you are concerned about nullability annotations then I would recommend using the ones provided by SpotBugs project from the edu.umd.cs.findbugs.annotations
namespace. These days it should be supported by most linters or IDEs. It's not as nice as proposed javax.annotation
in JSR 305, but remember that JSR 305 was never approved and actually no jar
file with classes was ever attached to JSR 305 proposal.
Few more interesting articles regarding this:
- https://nipafx.dev/jsr-305-java-9/#modular-project
- https://dzone.com/articles/when-to-use-jsr-305-for-nullability-in-java
JSR 305 vs JSR 308
There is barely any relation between JSR 305 and JSR 308. JSR 308 is about ability to apply annotations to generics (java type arguments). JSR 308 has been incorporated as part of Java SE 8.
The only link is that both JSRs are related to a two distinct projects (FindBugs and Checker Framework) which are touching null-safety and nullability annotations topic.
By content the JSRs are no way related.
According to Alex Millers Java 7 blog, JSR-308 (and 305) are scheduled to go in to Java 7. Perhaps he will show up here and give you more information.