JSR305 против JSR308 (аннотации типов Java) - что будет стандартом?

Кажется, есть две разные JSR для аннотаций.

JSR-305: Аннотации для обнаружения дефектов программного обеспечения (дополнительный ресурс)
JSR-308: аннотации на типах Java (дополнительный ресурс)

Кажется, что оба ориентированы на статический анализ кода.

Вы знаете:

  • какой из них будет в Java SE 7 или Java EE 6?
  • Насколько "устойчив" каждый JSR?
  • один заменяет (или устаревает) другой?

3 ответа

Я могу ответить на ваш последний вопрос. Они не одно и то же. 305 - это новые аннотации, в которых вы уже можете их разместить, что может помочь обеспечить программную наглядность в проекте по контрактной системе. Таким образом, если определенный метод, как предполагается, не возвращает нуль, или если определенный метод, как предполагается, никогда не получает нулевой параметр, можно сказать системе, анализирующей аннотации, высматривать этот конкретный случай в этом фрагменте кода.

308 о возможности аннотировать больше вещей, таких как универсальный параметр и приведение типа. Я предполагаю, что основное использование для этого состоит в том, чтобы иметь возможность подавить предупреждение для конкретного приведения типа вместо того, чтобы объявлять локальную переменную для этой цели. Аннотация @SuppressWarnings уже существует (тогда как JSR-305 будет стремиться определить новые), но в JSR-308 ее можно применить к большему количеству случаев.

В соответствии с этим 308 будет частью Java7, что подразумевает, что она достаточно стабильна. JSR-305 нет в списке, поэтому он не выглядит как Java7.

Согласно этому документу, который последний раз обновлялся 2010-09-19, JSR 308 "Отложено до JDK 8 или более поздней версии": http://openjdk.java.net/projects/jdk7/features/

Для будущих читателей JSR 308 интегрируется в Java 7. Некоторые из его изменений уже внесены в общедоступные бета-версии Java 7. Однако JSR305 не попал.

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