Каков статус JSR 305?
Я видел вопрос JSR305 против JSR308 (аннотации типов Java) - что будет стандартом? и я понимаю разницу между JSR 308 и JSR 305.
Я также понимаю, что в настоящее время 308 планируется для Java 7, а 305 - нет, и мне любопытно общее состояние 305.
В частности, я использую Google Collections и JSR-305 в некоторых своих проектах (аналогично тому, что пропагандирует один из лучших методов Guice), и мне было интересно, стоит ли использовать более дружественный подход к будущему, который я должен использовать вместо. Я планирую также спросить об этом в группе JSR-305, но в этой группе нет особой активности, и мне просто интересно, есть ли у кого-нибудь еще какая-то информация.
5 ответов
Как описано в этом ответе, JSR-305 предлагает новые аннотации, такие как @NonNull, в то время как JSR-308 предлагает разрешать аннотации в новых местах, например в общих объявлениях.
Цитирую страницу JSR 308:
… Этот документ не предлагает никаких аннотаций, просто указывает, где они могут появляться в коде Java.
JSR 308 (аннотации в новых местах) включен в Java 8 под JEP 104.
Начиная с 2017 года JSR 305 (новые аннотации) продолжает носить официальный статус "Бездействующий". Вопрос о его статусе в группе Google остался без ответа с 2010 года.
Здесь есть эталонная реализация аннотаций JSR-305, которая используется во многих проектах, включая guava. С maven вы можете использовать эталонную реализацию JSR-305, добавив это в ваш pom,
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.0</version>
</dependency>
JSR 305 не будет частью Java 8:
- Статус JSR 305 - неактивный .
- JSR 305 был тесно связан с проектом FindBugs .
- Проект FindBugs объявлен мертвым .
- Преемник FindBugs - SpotBugs .
- Его «ответвлением» стал Андрей Лоскутов, один из бывших членов команды разработчиков FindBugs .
- Анонс проекта SpotBugs .
- Проект SpotBugs активен .
Если вас беспокоят аннотации, допускающие значение NULL, я бы рекомендовал использовать те, которые предоставлены проектом SpotBugs из
edu.umd.cs.findbugs.annotations
пространство имен. В наши дни он должен поддерживаться большинством линтеров или IDE. Это не так хорошо, как предлагается
javax.annotation
в JSR 305, но помните, что JSR 305 никогда не был одобрен и на самом деле не
jar
файл с классами когда-либо прилагался к предложению JSR 305.
Еще несколько интересных статей по этому поводу:
- https://nipafx.dev/jsr-305-java-9/#modular-project
- https://dzone.com/articles/when-to-use-jsr-305-for-nullability-in-java
JSR 305 против JSR 308
Между JSR 305 и JSR 308 практически отсутствует какая-либо связь. JSR 308 касается возможности применять аннотации к дженерикам (аргументы типа java). JSR 308 был включен как часть Java SE 8.
Единственная ссылка заключается в том, что оба JSR связаны с двумя разными проектами (FindBugs и Checker Framework), которые затрагивают тему аннотаций нулевой безопасности и допустимости значений NULL.
По содержанию JSR никак не связаны.
Java 8 описывается JSR 337: спецификация достигла конечного статуса: см. Здесь.
- JSR 308 определенно находится в
- JSR 305 определенно вышел