Каков статус 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>

Если вас беспокоят аннотации, допускающие значение NULL, я бы рекомендовал использовать те, которые предоставлены проектом SpotBugs из edu.umd.cs.findbugs.annotationsпространство имен. В наши дни он должен поддерживаться большинством линтеров или IDE. Это не так хорошо, как предлагается javax.annotation в JSR 305, но помните, что JSR 305 никогда не был одобрен и на самом деле не jar файл с классами когда-либо прилагался к предложению JSR 305.

Еще несколько интересных статей по этому поводу:

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 определенно вышел

Согласно блогу Алекса Миллерса на Java 7, JSR-308 (и 305) планируется перейти на Java 7. Возможно, он появится здесь и даст вам больше информации.

Другие вопросы по тегам