You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Simon Spero <se...@gmail.com> on 2017/06/09 15:13:09 UTC

Testing enhanced @Deprecation vs. jdk 8

On Thu, Jun 8, 2017 at 12:19 PM, Gary Gregory <ga...@gmail.com>
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

Posted by Simon Spero <se...@gmail.com>.
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" <ga...@gmail.com> 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" <se...@gmail.com> wrote:
>
> > On Thu, Jun 8, 2017 at 12:19 PM, Gary Gregory <ga...@gmail.com>
> > 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

Posted by Gary Gregory <ga...@gmail.com>.
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" <se...@gmail.com> wrote:

> On Thu, Jun 8, 2017 at 12:19 PM, Gary Gregory <ga...@gmail.com>
> 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*
>