That is not much more of a cosmetic annotation, it's useful when generating documentation, to give hints through your Java IDE and to explicitly state when a method is overriden.
From the runtime/standard library implementors point of view, it was not worth the effort to modify all existing classes just to add something cosmetic.
Furthermore, regarding backward compatibility of annotations in general, considering that annotations are an optional and extended attribute present in .class
file (when their retention policy is either CLASS
or RUNTIME
and available for Class
and Method
as Runtime(In)VisibleAnnotations
and for Parameter
as Runtime(In)VisibleParameterAnnotations
) previous releases of the JVM would simply ignore that attribute during the .class
file parsing performed the first time that Class is needed.
But actually, that 1.4 JVM class parser will not even reach the point where those Annotation .class
attribute are located inside the structure because the parsing will end abruptly when the JVM will notice that the .class
version is greater than the supported one.