On Thu, Jun 8, 2017 at 12:19 PM, Gary Gregory <[email protected]>
wrote:
> > 3. JDK9 adds some extra parameters to the Deprecated annotation (most
> notably forRemoval=true, which is used to indicate that the annotated item
> is really really deprecated.) It's not needed in this case, but is
> worth thinking about when jdk9 is eventually released (latest schedule
> change : from 7/27/2017 to 9/21/2017).
>
> I do not think we plan on making Java 9 a requirement for any current
> project.
I just double checked, and it does seem that the jdk-9 dependency is at
library compile time. Compiling a class with an enhanced deprecation
annotation, using the jdk-9 compiler, but with source & target 1.8, and
then compiling another class that uses the deprecated class works, and
gives the expected messages.
Using -Xlint:deprecation shows the detailed deprecation warning. Using
plain -Xlint adds some extra warnings about the ignored annotation bits
which require -Xlint:-classfile to disable.
Compiling the second class with jdk9 issues the new "removal" warning (with
-Xlint:-removal required to downgrade the warning to a note).
None of this is particularly urgent, but if/when jdk9 is released, it might
be worth considering
Simon
ses@snarkive$ javac -version
*javac 1.8.0_131*
ses@snarkive$ javac -cp build/classes/main depup/src/EyeOfTheWeasel.java
*Note: depup/src/EyeOfTheWeasel.java uses or overrides a deprecated API.*
*Note: Recompile with -Xlint:deprecation for details.*
ses@snarkive$ javac -Xlint:deprecation -cp build/classes/main
depup/src/EyeOfTheWeasel.java
*depup/src/EyeOfTheWeasel.java:7: warning: [deprecation] Weasel in unnamed
package has been deprecated*
* Weasel.main(new String[] {"UTF-8"});*
ses@snarkive$ javac -Xlint -cp build/classes/main
depup/src/EyeOfTheWeasel.java
*build/classes/main/Weasel.class: warning: Cannot find annotation method
'since()' in type 'Deprecated'*
*build/classes/main/Weasel.class: warning: Cannot find annotation method
'forRemoval()' in type 'Deprecated'*
*depup/src/EyeOfTheWeasel.java:7: warning: [deprecation] Weasel in unnamed
package has been deprecated*
* Weasel.main(new String[] {"UTF-8"});*
* ^*
*3 warnings*
ses@snarkive$ javac -Xlint -Xlint:-classfile -cp build/classes/main
depup/src/EyeOfTheWeasel.java
depup/src/EyeOfTheWeasel.java:7: warning: [deprecation] Weasel in unnamed
package has been deprecated
Weasel.main(new String[] {"UTF-8"});
^
1 warning
ses@snarkive$ java -cp build/classes/main/:depup/src/:build/classes
EyeOfTheWeasel
Emoji Lovin' Hippies!
annotation = @java.lang.Deprecated()
ses@snarkive$ /usr/lib/jvm/openjdk-9-internal/bin/javac -cp
build/classes/main depup/src/EyeOfTheWeasel.java
*depup/src/EyeOfTheWeasel.java:7: warning: [removal] Weasel in unnamed
package has been deprecated and marked for removal*
* Weasel.main(new String[] {"UTF-8"});*
* ^*
*1 warning*