2009-09-25 20 views
17

Wygląda na to, że istnieją dwa różne JSR dla adnotacji.JSR305 vs. JSR308 (Java Type Anotations) - Który będzie standardem?

JSR-305: Annotations for Software Defect Detection(additional resource)
JSR-308: Annotations on Java Types(additional resource)

Oba wydają się być ukierunkowane statycznej analizy kodu.

Czy wiesz:

  • , który z obu będzie zarówno w Java SE 7 lub Java EE 6?
  • jak "stabilny" jest każdy JSR?
  • czy ten drugi zastępuje (lub przestarzaję) drugi?

Odpowiedz

14

Mogę odpowiedzieć na twoje ostatnie pytanie. To nie to samo. 305 dotyczy nowych adnotacji, w których można je już umieścić, co może pomóc w programowej widoczności projektu przez system kontraktowy. Jeśli więc pewna metoda nie powinna zwracać wartości NULL lub jeśli pewna metoda ma nigdy nie otrzymać parametru zerowego, można powiedzieć systemowi analizującemu adnotacje, aby zwrócić uwagę na ten konkretny przypadek w tym fragmencie kodu.

308 to możliwość opisywania większej liczby rzeczy, takich jak parametr ogólny i rzutowanie typu. Wyobrażam sobie, że głównym zastosowaniem tego jest możliwość powstrzymania ostrzeżenia przed konkretnym rzutem, zamiast deklarowania w tym celu zmiennej lokalnej. Adnotacja @SuppressWarnings już istnieje (JSR-305 chciałby zdefiniować nowe), ale w JSR-308 można go zastosować do większej liczby przypadków.

Zgodnie z this 308 będzie częścią Java7, co oznaczałoby, że jest całkiem stabilny. JSR-305 nie znajduje się na liście, więc nie wygląda na to, że przejdzie na Java7.

+0

Więc praktycznie JSR-308 to tylko rozszerzenia do języka, , podczas gdy te warcaby (które są omawiane na stronie projektu) są opcjonalne i nie będą dostępne w JDK), prawda? –

+0

Wygląda na to. Obie propozycje współpracują ze sobą, ponieważ są najbardziej użyteczne razem (dlatego strona JSR-308 reklamuje tego rodzaju funkcjonalność). Nie mam żadnych autorytatywnych informacji na temat tego, co będzie lub nie będzie w JDK7, ale wydaje się, że JSR-305 tego nie robi, ale mógłbym się mylić. – Yishai

+1

JSR 308 został odroczony do Java: http://openjdk.java.net/projects/jdk7/features/#deferred – reprogrammer

1

Dla przyszłych czytelników JSR 308 jest integrowany w Javie 7. Niektóre z jego zmian zostały już przekazane na publicznych betach Java 7. JSR305 jednak nie zrobił cięcia.

+0

Z JSR308, czy Java7 zapewni standardową strukturę sprawdzania? –

+0

Kontrolery są dystrybuowane pod adresem http://types.cs.washington.edu/jsr308. Istnieje możliwość, że JDK będzie je wiązał, ale nie ma jeszcze żadnych gwarancji. – notnoop

+0

Ten artykuł wydaje się wskazywać, że JSR-305 będzie częścią Java 7: http://today.java.net/pub/a/today/2008/09/11/jsr-305-annotations.html –