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 <
[email protected]> 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 <[email protected]> wrote:
>
>> On 5 June 2015 at 15:33, Rory O'Donnell <[email protected]> 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.