Should Java annotations be considered a language or library feature. I don’t mean the very concept of annotations which is obviously a language feature, but specific annotations such as @Override and @Deprecated?
It seems clearer that annotations supported only by 3rd-party libraries (e.g. Hibernate annotations) are clearly not part of the Java language, but for the built-in annotations I’m not so sure.
If this is considered too discursive, feel free to move to programmers.stackexchange.com
Here’s how I think about it:
The JLS describes Java the programming language. As you clearly understand, the concept of annotations is a language feature. On the other hand, there are tons of standard Java library features which are not described by the JLS, such as the Collections APIs.
From JLS §9.6.1, Predefined Annotation Types:
Thinking along those lines, then, I’d say that Java annotations are a library feature.