Deprecated attribute in module-info.class?
Jonathan Gibbons
jonathan.gibbons at oracle.com
Thu Mar 29 22:56:11 UTC 2018
On 3/29/18 3:49 PM, Stephan Herrmann wrote:
> On 29.03.2018 18:02, Alan Bateman wrote:
>> On 29/03/2018 15:36, Stephan Herrmann wrote:
>>> I'm looking at jdk.xml.bind/module-info.class from JDK 9.0.4.
>>>
>>> I do find a RuntimeVisibleAnnotation attribute representing
>>> @java.lang.Deprecated(since="9", forRemoval=true)
>>> 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` to
>> look at the jdk.xml.bind's module-info.class from JDK 9 I see:
>>
>> RuntimeVisibleAnnotations:
>> 0: #5(#6=s#7,#8=Z#9)
>> java.lang.Deprecated(
>> since="9"
>> forRemoval=true
>> )
>>
>> 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.
>
> best,
> Stephan
Stephan,
Given JEP 277 [1], 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.
-- Jon
[1] http://openjdk.java.net/jeps/277
More information about the jigsaw-dev
mailing list