You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by Rory O'Donnell <ro...@oracle.com> on 2015/06/05 16:33:09 UTC
Apache-jmeter dependencies on JDK-Internal APIs
Hi Philippe,
I believe we checked an older version of Apache jmeter for dependencies
on JDK-Internal APIs.
Below are instructions on how to check for yourself.
Rgds,Rory
------------------------------------------------------------------------
As part of the preparations for JDK 9, Oracle’s engineers have been
analyzing open source projects like yours to understand usage. One area
of concern involves identifying compatibility problems, such as reliance
on JDK-internal APIs.
Our engineers have already prepared guidance on migrating some of the
more common usage patterns of JDK-internal APIs to supported public
interfaces. The list is on the OpenJDK wiki [0].
As part of the ongoing development of JDK 9, I would like to inquire
about your usage of JDK-internal APIs and to encourage migration
towards supported Java APIs if necessary.
The first step is to identify if your application(s) is leveraging
internal APIs.
/Step 1: Download JDeps. /
Just download a preview release of JDK8(JDeps Download
<https://jdk8.java.net/download.html>). You do not need to actually
test or run your application on JDK8. JDeps(Docs
<http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jdeps.html>)
looks through JAR files and identifies which JAR files use internal
APIs and then lists those APIs.
/Step 2: To run JDeps against an application/. The command looks like:
jdk8/bin/jdeps -P -jdkinternals *.jar > your-application.jdeps.txt
The output inside your-application.jdeps.txt will look like:
your.package (Filename.jar)
-> com.sun.corba.se JDK internal API (rt.jar)
_3rd party library using Internal APIs:_
If your analysis uncovers a third-party component that you rely on, you
can contact the provider and let them know of the upcoming changes. You
can then either work with the provider to get an updated library that
won't rely on Internal APIs, or you can find an alternative provider for
the capabilities that the offending library provides.
_Dynamic use of Internal APIs:_
JDeps can not detect dynamic use of internal APIs, for example through
reflection, service loaders and similar mechanisms.
[0] https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
--
Rgds,Rory O'Donnell
Quality Engineering Manager
Oracle EMEA , Dublin, Ireland
Re: Apache-jmeter dependencies on JDK-Internal APIs
Posted by Rory O'Donnell <ro...@oracle.com>.
Hi Phillipe/Sebb,
Thank you both for the feedback.
I suggest to open a discussion on
http://mail.openjdk.java.net/pipermail/jigsaw-dev/
Rgds,Rory
On 06/06/2015 15:24, Philippe Mouawad wrote:
> Hi,
> After further analysis:
>
> * JODD : It may be an issue if Unsafe is really removed at some
> point, but implementor seem to be ready to make change, very reactive.
> * XSteam : Unsafe is used to newInstance any class, when Unsafe is
> missing Library defaults to PureJavaReflectionProvider class but
> with following limitations:
> o Cannot newInstance: classes without public visibility,
> non-static inner classes, classes without default constructors.
> o @Rory is there some way to do what is needed here without
> using Unsafe ?
>
> Thanks
>
> Regards
>
>
> On Fri, Jun 5, 2015 at 11:32 PM, Philippe Mouawad
> <philippe.mouawad@gmail.com <ma...@gmail.com>> wrote:
>
> Hi,
> I opened:
> - https://github.com/oblac/jodd/issues/220
> - https://github.com/x-stream/xstream/issues/11
>
> For other projects not sure they are still maintained. Maybe time
> to think about dropping them.
>
> Regards
> Philippe M.
> @philmdot
>
> On Fri, Jun 5, 2015 at 5:05 PM, sebb <sebbaz@gmail.com
> <ma...@gmail.com>> wrote:
>
> On 5 June 2015 at 15:33, Rory O'Donnell
> <rory.odonnell@oracle.com <ma...@oracle.com>>
> wrote:
> > Hi Philippe,
> >
> > I believe we checked an older version of Apache jmeter for
> dependencies on
> > JDK-Internal APIs.
> > Below are instructions on how to check for yourself.
>
> Thanks!
>
> Just ran a check on the current build and there is no output
> from the
> JMeter jars (including jorphan.jar).
>
> However, some of the 3rd party dependencies do produce output,
> as follows:
>
> bsh-2.0b5.jar ->
> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
> (Full JRE)
> bsh.util.AWTConsole (bsh-2.0b5.jar)
> -> java.awt.peer.ComponentPeer JDK
> internal API (rt.jar)
> -> java.awt.peer.TextComponentPeer JDK
> internal API (rt.jar)
>
> dnsjava-2.1.7.jar ->
> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
> (compact1)
> org.xbill.DNS.spi.DNSJavaNameServiceDescriptor
> (dnsjava-2.1.7.jar)
> -> sun.net.spi.nameservice.NameService JDK
> internal API (rt.jar)
> -> sun.net.spi.nameservice.NameServiceDescriptor JDK
> internal API (rt.jar)
>
> jcharts-0.7.5.jar ->
> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
> (Full JRE)
> org.jCharts.encoders.JPEGEncoder13 (jcharts-0.7.5.jar)
> -> com.sun.image.codec.jpeg.JPEGCodec JDK
> internal API (rt.jar)
> -> com.sun.image.codec.jpeg.JPEGEncodeParam JDK
> internal API (rt.jar)
> -> com.sun.image.codec.jpeg.JPEGImageEncoder JDK
> internal API (rt.jar)
>
> jodd-core-3.6.4.jar ->
> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
> (Full JRE)
> jodd.util.UnsafeUtil (jodd-core-3.6.4.jar)
> -> sun.misc.Unsafe JDK
> internal API (rt.jar)
>
> soap-2.3.1.jar ->
> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
> (Full JRE)
> org.apache.soap.util.net.SSLUtils (soap-2.3.1.jar)
> -> sun.net.www.protocol.http.HttpURLConnection JDK
> internal API (rt.jar)
>
> xstream-1.4.8.jar ->
> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
> (Full JRE)
> com.thoughtworks.xstream.converters.reflection.SunLimitedUnsafeReflectionProvider
> (xstream-1.4.8.jar)
> -> sun.misc.Unsafe JDK
> internal API (rt.jar)
> com.thoughtworks.xstream.converters.reflection.SunUnsafeReflectionProvider
> (xstream-1.4.8.jar)
> -> sun.misc.Unsafe JDK
> internal API (rt.jar)
>
> Warning: JDK internal APIs are unsupported and private to JDK
> implementation that are
> subject to be removed or changed incompatibly and could break
> your application.
> Please modify your code to eliminate dependency on any JDK
> internal APIs.
> For the most recent update on JDK internal API replacements,
> please check:
> https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
>
> JDK Internal API Suggested Replacement
> ---------------- ---------------------
> com.sun.image.codec.jpeg.JPEGCodec Use javax.imageio
> @since 1.4
> com.sun.image.codec.jpeg.JPEGEncodeParam Use javax.imageio
> @since 1.4
> com.sun.image.codec.jpeg.JPEGImageEncoder Use javax.imageio
> @since 1.4
>
>
> > Rgds,Rory
> >
> >
> ------------------------------------------------------------------------
> > As part of the preparations for JDK 9, Oracle’s engineers have been
> > analyzing open source projects like yours to understand
> usage. One area of
> > concern involves identifying compatibility problems, such as
> reliance on
> > JDK-internal APIs.
> >
> > Our engineers have already prepared guidance on migrating
> some of the more
> > common usage patterns of JDK-internal APIs to supported
> public interfaces.
> > The list is on the OpenJDK wiki [0].
> >
> > As part of the ongoing development of JDK 9, I would like to
> inquire about
> > your usage of JDK-internal APIs and to encourage migration
> towards
> > supported Java APIs if necessary.
> >
> > The first step is to identify if your application(s) is
> leveraging internal
> > APIs.
> >
> > /Step 1: Download JDeps. /
> >
> > Just download a preview release of JDK8(JDeps Download
> > <https://jdk8.java.net/download.html>). You do not need
> to actually
> > test or run your application on JDK8. JDeps(Docs
> >
> <http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jdeps.html>)
> > looks through JAR files and identifies which JAR files use internal
> > APIs and then lists those APIs.
> >
> > /Step 2: To run JDeps against an application/. The command
> looks like:
> >
> > jdk8/bin/jdeps -P -jdkinternals *.jar >
> your-application.jdeps.txt
> >
> > The output inside your-application.jdeps.txt will look like:
> >
> > your.package (Filename.jar)
> > -> com.sun.corba.se <http://com.sun.corba.se>
> JDK internal API (rt.jar)
> >
> > _3rd party library using Internal APIs:_
> > If your analysis uncovers a third-party component that you rely on, you can
> > contact the provider and let them know of the upcoming
> changes. You can then
> > either work with the provider to get an updated library that
> won't rely on
> > Internal APIs, or you can find an alternative provider for
> the capabilities
> > that the offending library provides.
> >
> > _Dynamic use of Internal APIs:_
> > JDeps can not detect dynamic use of internal APIs, for
> example through
> > reflection, service loaders and similar mechanisms.
> >
> >
> > [0]
> https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
> >
> > --
> > Rgds,Rory O'Donnell
> > Quality Engineering Manager
> > Oracle EMEA , Dublin, Ireland
> >
>
>
>
>
> --
> Cordialement.
> Philippe Mouawad.
>
>
>
>
>
> --
> Cordialement.
> Philippe Mouawad.
>
>
--
Rgds,Rory O'Donnell
Quality Engineering Manager
Oracle EMEA , Dublin, Ireland
Re: Apache-jmeter dependencies on JDK-Internal APIs
Posted by Philippe Mouawad <ph...@gmail.com>.
Hi,
After further analysis:
- JODD : It may be an issue if Unsafe is really removed at some point,
but implementor seem to be ready to make change, very reactive.
- XSteam : Unsafe is used to newInstance any class, when Unsafe is
missing Library defaults to PureJavaReflectionProvider class but with
following limitations:
- Cannot newInstance: classes without public visibility, non-static
inner classes, classes without default constructors.
- @Rory is there some way to do what is needed here without using
Unsafe ?
Thanks
Regards
On Fri, Jun 5, 2015 at 11:32 PM, Philippe Mouawad <
philippe.mouawad@gmail.com> wrote:
> Hi,
> I opened:
> - https://github.com/oblac/jodd/issues/220
> - https://github.com/x-stream/xstream/issues/11
>
> For other projects not sure they are still maintained. Maybe time to think
> about dropping them.
>
> Regards
> Philippe M.
> @philmdot
>
> On Fri, Jun 5, 2015 at 5:05 PM, sebb <se...@gmail.com> wrote:
>
>> On 5 June 2015 at 15:33, Rory O'Donnell <ro...@oracle.com> wrote:
>> > Hi Philippe,
>> >
>> > I believe we checked an older version of Apache jmeter for dependencies
>> on
>> > JDK-Internal APIs.
>> > Below are instructions on how to check for yourself.
>>
>> Thanks!
>>
>> Just ran a check on the current build and there is no output from the
>> JMeter jars (including jorphan.jar).
>>
>> However, some of the 3rd party dependencies do produce output, as follows:
>>
>> bsh-2.0b5.jar ->
>>
>> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
>> (Full JRE)
>> bsh.util.AWTConsole (bsh-2.0b5.jar)
>> -> java.awt.peer.ComponentPeer JDK
>> internal API (rt.jar)
>> -> java.awt.peer.TextComponentPeer JDK
>> internal API (rt.jar)
>>
>> dnsjava-2.1.7.jar ->
>>
>> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
>> (compact1)
>> org.xbill.DNS.spi.DNSJavaNameServiceDescriptor (dnsjava-2.1.7.jar)
>> -> sun.net.spi.nameservice.NameService JDK
>> internal API (rt.jar)
>> -> sun.net.spi.nameservice.NameServiceDescriptor JDK
>> internal API (rt.jar)
>>
>> jcharts-0.7.5.jar ->
>>
>> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
>> (Full JRE)
>> org.jCharts.encoders.JPEGEncoder13 (jcharts-0.7.5.jar)
>> -> com.sun.image.codec.jpeg.JPEGCodec JDK
>> internal API (rt.jar)
>> -> com.sun.image.codec.jpeg.JPEGEncodeParam JDK
>> internal API (rt.jar)
>> -> com.sun.image.codec.jpeg.JPEGImageEncoder JDK
>> internal API (rt.jar)
>>
>> jodd-core-3.6.4.jar ->
>>
>> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
>> (Full JRE)
>> jodd.util.UnsafeUtil (jodd-core-3.6.4.jar)
>> -> sun.misc.Unsafe JDK
>> internal API (rt.jar)
>>
>> soap-2.3.1.jar ->
>>
>> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
>> (Full JRE)
>> org.apache.soap.util.net.SSLUtils (soap-2.3.1.jar)
>> -> sun.net.www.protocol.http.HttpURLConnection JDK
>> internal API (rt.jar)
>>
>> xstream-1.4.8.jar ->
>>
>> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
>> (Full JRE)
>>
>> com.thoughtworks.xstream.converters.reflection.SunLimitedUnsafeReflectionProvider
>> (xstream-1.4.8.jar)
>> -> sun.misc.Unsafe JDK
>> internal API (rt.jar)
>>
>> com.thoughtworks.xstream.converters.reflection.SunUnsafeReflectionProvider
>> (xstream-1.4.8.jar)
>> -> sun.misc.Unsafe JDK
>> internal API (rt.jar)
>>
>> Warning: JDK internal APIs are unsupported and private to JDK
>> implementation that are
>> subject to be removed or changed incompatibly and could break your
>> application.
>> Please modify your code to eliminate dependency on any JDK internal APIs.
>> For the most recent update on JDK internal API replacements, please check:
>> https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
>>
>> JDK Internal API Suggested Replacement
>> ---------------- ---------------------
>> com.sun.image.codec.jpeg.JPEGCodec Use javax.imageio @since 1.4
>> com.sun.image.codec.jpeg.JPEGEncodeParam Use javax.imageio @since 1.4
>> com.sun.image.codec.jpeg.JPEGImageEncoder Use javax.imageio @since 1.4
>>
>>
>> > Rgds,Rory
>> >
>> > ------------------------------------------------------------------------
>> > As part of the preparations for JDK 9, Oracle’s engineers have been
>> > analyzing open source projects like yours to understand usage. One area
>> of
>> > concern involves identifying compatibility problems, such as reliance on
>> > JDK-internal APIs.
>> >
>> > Our engineers have already prepared guidance on migrating some of the
>> more
>> > common usage patterns of JDK-internal APIs to supported public
>> interfaces.
>> > The list is on the OpenJDK wiki [0].
>> >
>> > As part of the ongoing development of JDK 9, I would like to inquire
>> about
>> > your usage of JDK-internal APIs and to encourage migration towards
>> > supported Java APIs if necessary.
>> >
>> > The first step is to identify if your application(s) is leveraging
>> internal
>> > APIs.
>> >
>> > /Step 1: Download JDeps. /
>> >
>> > Just download a preview release of JDK8(JDeps Download
>> > <https://jdk8.java.net/download.html>). You do not need to actually
>> > test or run your application on JDK8. JDeps(Docs
>> > <
>> http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jdeps.html>)
>> > looks through JAR files and identifies which JAR files use internal
>> > APIs and then lists those APIs.
>> >
>> > /Step 2: To run JDeps against an application/. The command looks like:
>> >
>> > jdk8/bin/jdeps -P -jdkinternals *.jar > your-application.jdeps.txt
>> >
>> > The output inside your-application.jdeps.txt will look like:
>> >
>> > your.package (Filename.jar)
>> > -> com.sun.corba.se JDK internal API (rt.jar)
>> >
>> > _3rd party library using Internal APIs:_
>> > If your analysis uncovers a third-party component that you rely on, you
>> can
>> > contact the provider and let them know of the upcoming changes. You can
>> then
>> > either work with the provider to get an updated library that won't rely
>> on
>> > Internal APIs, or you can find an alternative provider for the
>> capabilities
>> > that the offending library provides.
>> >
>> > _Dynamic use of Internal APIs:_
>> > JDeps can not detect dynamic use of internal APIs, for example through
>> > reflection, service loaders and similar mechanisms.
>> >
>> >
>> > [0]
>> https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
>> >
>> > --
>> > Rgds,Rory O'Donnell
>> > Quality Engineering Manager
>> > Oracle EMEA , Dublin, Ireland
>> >
>>
>
>
>
> --
> Cordialement.
> Philippe Mouawad.
>
>
>
--
Cordialement.
Philippe Mouawad.
Re: Apache-jmeter dependencies on JDK-Internal APIs
Posted by Philippe Mouawad <ph...@gmail.com>.
Hi,
I opened:
- https://github.com/oblac/jodd/issues/220
- https://github.com/x-stream/xstream/issues/11
For other projects not sure they are still maintained. Maybe time to think
about dropping them.
Regards
Philippe M.
@philmdot
On Fri, Jun 5, 2015 at 5:05 PM, sebb <se...@gmail.com> wrote:
> On 5 June 2015 at 15:33, Rory O'Donnell <ro...@oracle.com> wrote:
> > Hi Philippe,
> >
> > I believe we checked an older version of Apache jmeter for dependencies
> on
> > JDK-Internal APIs.
> > Below are instructions on how to check for yourself.
>
> Thanks!
>
> Just ran a check on the current build and there is no output from the
> JMeter jars (including jorphan.jar).
>
> However, some of the 3rd party dependencies do produce output, as follows:
>
> bsh-2.0b5.jar ->
>
> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
> (Full JRE)
> bsh.util.AWTConsole (bsh-2.0b5.jar)
> -> java.awt.peer.ComponentPeer JDK
> internal API (rt.jar)
> -> java.awt.peer.TextComponentPeer JDK
> internal API (rt.jar)
>
> dnsjava-2.1.7.jar ->
>
> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
> (compact1)
> org.xbill.DNS.spi.DNSJavaNameServiceDescriptor (dnsjava-2.1.7.jar)
> -> sun.net.spi.nameservice.NameService JDK
> internal API (rt.jar)
> -> sun.net.spi.nameservice.NameServiceDescriptor JDK
> internal API (rt.jar)
>
> jcharts-0.7.5.jar ->
>
> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
> (Full JRE)
> org.jCharts.encoders.JPEGEncoder13 (jcharts-0.7.5.jar)
> -> com.sun.image.codec.jpeg.JPEGCodec JDK
> internal API (rt.jar)
> -> com.sun.image.codec.jpeg.JPEGEncodeParam JDK
> internal API (rt.jar)
> -> com.sun.image.codec.jpeg.JPEGImageEncoder JDK
> internal API (rt.jar)
>
> jodd-core-3.6.4.jar ->
>
> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
> (Full JRE)
> jodd.util.UnsafeUtil (jodd-core-3.6.4.jar)
> -> sun.misc.Unsafe JDK
> internal API (rt.jar)
>
> soap-2.3.1.jar ->
>
> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
> (Full JRE)
> org.apache.soap.util.net.SSLUtils (soap-2.3.1.jar)
> -> sun.net.www.protocol.http.HttpURLConnection JDK
> internal API (rt.jar)
>
> xstream-1.4.8.jar ->
>
> /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
> (Full JRE)
>
> com.thoughtworks.xstream.converters.reflection.SunLimitedUnsafeReflectionProvider
> (xstream-1.4.8.jar)
> -> sun.misc.Unsafe JDK
> internal API (rt.jar)
>
> com.thoughtworks.xstream.converters.reflection.SunUnsafeReflectionProvider
> (xstream-1.4.8.jar)
> -> sun.misc.Unsafe JDK
> internal API (rt.jar)
>
> Warning: JDK internal APIs are unsupported and private to JDK
> implementation that are
> subject to be removed or changed incompatibly and could break your
> application.
> Please modify your code to eliminate dependency on any JDK internal APIs.
> For the most recent update on JDK internal API replacements, please check:
> https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
>
> JDK Internal API Suggested Replacement
> ---------------- ---------------------
> com.sun.image.codec.jpeg.JPEGCodec Use javax.imageio @since 1.4
> com.sun.image.codec.jpeg.JPEGEncodeParam Use javax.imageio @since 1.4
> com.sun.image.codec.jpeg.JPEGImageEncoder Use javax.imageio @since 1.4
>
>
> > Rgds,Rory
> >
> > ------------------------------------------------------------------------
> > As part of the preparations for JDK 9, Oracle’s engineers have been
> > analyzing open source projects like yours to understand usage. One area
> of
> > concern involves identifying compatibility problems, such as reliance on
> > JDK-internal APIs.
> >
> > Our engineers have already prepared guidance on migrating some of the
> more
> > common usage patterns of JDK-internal APIs to supported public
> interfaces.
> > The list is on the OpenJDK wiki [0].
> >
> > As part of the ongoing development of JDK 9, I would like to inquire
> about
> > your usage of JDK-internal APIs and to encourage migration towards
> > supported Java APIs if necessary.
> >
> > The first step is to identify if your application(s) is leveraging
> internal
> > APIs.
> >
> > /Step 1: Download JDeps. /
> >
> > Just download a preview release of JDK8(JDeps Download
> > <https://jdk8.java.net/download.html>). You do not need to actually
> > test or run your application on JDK8. JDeps(Docs
> > <http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jdeps.html
> >)
> > looks through JAR files and identifies which JAR files use internal
> > APIs and then lists those APIs.
> >
> > /Step 2: To run JDeps against an application/. The command looks like:
> >
> > jdk8/bin/jdeps -P -jdkinternals *.jar > your-application.jdeps.txt
> >
> > The output inside your-application.jdeps.txt will look like:
> >
> > your.package (Filename.jar)
> > -> com.sun.corba.se JDK internal API (rt.jar)
> >
> > _3rd party library using Internal APIs:_
> > If your analysis uncovers a third-party component that you rely on, you
> can
> > contact the provider and let them know of the upcoming changes. You can
> then
> > either work with the provider to get an updated library that won't rely
> on
> > Internal APIs, or you can find an alternative provider for the
> capabilities
> > that the offending library provides.
> >
> > _Dynamic use of Internal APIs:_
> > JDeps can not detect dynamic use of internal APIs, for example through
> > reflection, service loaders and similar mechanisms.
> >
> >
> > [0]
> https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
> >
> > --
> > Rgds,Rory O'Donnell
> > Quality Engineering Manager
> > Oracle EMEA , Dublin, Ireland
> >
>
--
Cordialement.
Philippe Mouawad.
Re: Apache-jmeter dependencies on JDK-Internal APIs
Posted by sebb <se...@gmail.com>.
On 5 June 2015 at 15:33, Rory O'Donnell <ro...@oracle.com> wrote:
> Hi Philippe,
>
> I believe we checked an older version of Apache jmeter for dependencies on
> JDK-Internal APIs.
> Below are instructions on how to check for yourself.
Thanks!
Just ran a check on the current build and there is no output from the
JMeter jars (including jorphan.jar).
However, some of the 3rd party dependencies do produce output, as follows:
bsh-2.0b5.jar ->
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
(Full JRE)
bsh.util.AWTConsole (bsh-2.0b5.jar)
-> java.awt.peer.ComponentPeer JDK
internal API (rt.jar)
-> java.awt.peer.TextComponentPeer JDK
internal API (rt.jar)
dnsjava-2.1.7.jar ->
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
(compact1)
org.xbill.DNS.spi.DNSJavaNameServiceDescriptor (dnsjava-2.1.7.jar)
-> sun.net.spi.nameservice.NameService JDK
internal API (rt.jar)
-> sun.net.spi.nameservice.NameServiceDescriptor JDK
internal API (rt.jar)
jcharts-0.7.5.jar ->
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
(Full JRE)
org.jCharts.encoders.JPEGEncoder13 (jcharts-0.7.5.jar)
-> com.sun.image.codec.jpeg.JPEGCodec JDK
internal API (rt.jar)
-> com.sun.image.codec.jpeg.JPEGEncodeParam JDK
internal API (rt.jar)
-> com.sun.image.codec.jpeg.JPEGImageEncoder JDK
internal API (rt.jar)
jodd-core-3.6.4.jar ->
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
(Full JRE)
jodd.util.UnsafeUtil (jodd-core-3.6.4.jar)
-> sun.misc.Unsafe JDK
internal API (rt.jar)
soap-2.3.1.jar ->
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
(Full JRE)
org.apache.soap.util.net.SSLUtils (soap-2.3.1.jar)
-> sun.net.www.protocol.http.HttpURLConnection JDK
internal API (rt.jar)
xstream-1.4.8.jar ->
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/lib/rt.jar
(Full JRE)
com.thoughtworks.xstream.converters.reflection.SunLimitedUnsafeReflectionProvider
(xstream-1.4.8.jar)
-> sun.misc.Unsafe JDK
internal API (rt.jar)
com.thoughtworks.xstream.converters.reflection.SunUnsafeReflectionProvider
(xstream-1.4.8.jar)
-> sun.misc.Unsafe JDK
internal API (rt.jar)
Warning: JDK internal APIs are unsupported and private to JDK
implementation that are
subject to be removed or changed incompatibly and could break your application.
Please modify your code to eliminate dependency on any JDK internal APIs.
For the most recent update on JDK internal API replacements, please check:
https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
JDK Internal API Suggested Replacement
---------------- ---------------------
com.sun.image.codec.jpeg.JPEGCodec Use javax.imageio @since 1.4
com.sun.image.codec.jpeg.JPEGEncodeParam Use javax.imageio @since 1.4
com.sun.image.codec.jpeg.JPEGImageEncoder Use javax.imageio @since 1.4
> Rgds,Rory
>
> ------------------------------------------------------------------------
> As part of the preparations for JDK 9, Oracle’s engineers have been
> analyzing open source projects like yours to understand usage. One area of
> concern involves identifying compatibility problems, such as reliance on
> JDK-internal APIs.
>
> Our engineers have already prepared guidance on migrating some of the more
> common usage patterns of JDK-internal APIs to supported public interfaces.
> The list is on the OpenJDK wiki [0].
>
> As part of the ongoing development of JDK 9, I would like to inquire about
> your usage of JDK-internal APIs and to encourage migration towards
> supported Java APIs if necessary.
>
> The first step is to identify if your application(s) is leveraging internal
> APIs.
>
> /Step 1: Download JDeps. /
>
> Just download a preview release of JDK8(JDeps Download
> <https://jdk8.java.net/download.html>). You do not need to actually
> test or run your application on JDK8. JDeps(Docs
> <http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jdeps.html>)
> looks through JAR files and identifies which JAR files use internal
> APIs and then lists those APIs.
>
> /Step 2: To run JDeps against an application/. The command looks like:
>
> jdk8/bin/jdeps -P -jdkinternals *.jar > your-application.jdeps.txt
>
> The output inside your-application.jdeps.txt will look like:
>
> your.package (Filename.jar)
> -> com.sun.corba.se JDK internal API (rt.jar)
>
> _3rd party library using Internal APIs:_
> If your analysis uncovers a third-party component that you rely on, you can
> contact the provider and let them know of the upcoming changes. You can then
> either work with the provider to get an updated library that won't rely on
> Internal APIs, or you can find an alternative provider for the capabilities
> that the offending library provides.
>
> _Dynamic use of Internal APIs:_
> JDeps can not detect dynamic use of internal APIs, for example through
> reflection, service loaders and similar mechanisms.
>
>
> [0] https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
>
> --
> Rgds,Rory O'Donnell
> Quality Engineering Manager
> Oracle EMEA , Dublin, Ireland
>