Post by Stephan Herrmann Post by Jonathan Gibbons Post by Stephan Herrmann Post by Alan Bateman Post by Stephan Herrmann
I'm looking at jdk.xml.bind/module-info.class from JDK 9.0.4.
I do find a RuntimeVisibleAnnotation attribute representing
but I don't find a Deprecated attribute.
Is this intended? JVMS 4.7.15 neither includes nor excludes
modules, but not generating the Deprecated attribute looks
like an omission to me.
Are you using `javap` to look at the class or something else?
I ask because `javap` tool was updated in JDK 10 to render
annotations in a more friendly way. When I use the JDK 10 `javap`
whereas the JDK 9 `javap` prints less useful output.
I did use JDK 9 javap, but was able to decipher the
RuntimeVisibleAnnotations attribute as you can see above :)
(Still good to know about the improvement in JDK 10).
My question, however, concerns the lack of a Deprecated
*attribute* a la JVMS 4.7.15.
Is that intended or not?
IOW, are compilers expected to evaluate RuntimeVisibleAnnotations
in order to issue deprecation warnings?
In the past this was not necessary.
Given JEP 277 , it is now necessary to read the annotation in order
to determine if the annotated item has been deprecated for removal,
and to act accordingly.
That's true, I was just hoping, we could skip evaluating
RuntimeVisibleAnnotations if no Deprecated attribute is found.
Is using Deprecated attributes now deprecated ? :p
Check these rules  which apply for class files with ACC_MODULE set:
|attributes|: One|Module|attribute must be present. Except
and|RuntimeInvisibleAnnotations|, none of the pre-defined attributes
(see the end of this section)