Re: Testing enhanced @Deprecation vs. jdk 8
Does Animal Sniffer check this? It wasn't clear from eyeballing the code if it paid much attention to annotations apart from its own, but it all depends on a possible twisty maze of delegation in as, so I'm uncertain. On Jun 9, 2017 11:55 AM, "Gary Gregory" wrote: > That would require that the animal sniffer plugin be setup for components > that do want to go that way. Doable if there is a sig file for the right > Java version for that component. > > Gary > > On Jun 9, 2017 8:13 AM, "Simon Spero" wrote: > > > On Thu, Jun 8, 2017 at 12:19 PM, Gary Gregory > > 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* > > >
Re: Testing enhanced @Deprecation vs. jdk 8
That would require that the animal sniffer plugin be setup for components that do want to go that way. Doable if there is a sig file for the right Java version for that component. Gary On Jun 9, 2017 8:13 AM, "Simon Spero" wrote: > On Thu, Jun 8, 2017 at 12:19 PM, Gary Gregory > 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* >
Testing enhanced @Deprecation vs. jdk 8
On Thu, Jun 8, 2017 at 12:19 PM, Gary Gregory 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*