Thanks Andrea that is great,

I thought there was going to continue to be a way to use “unsafe”? Found it
- there is a jdk.unsupported module for popular internal packages (see
https://www.azul.com/javas-magic-sauce/).

I am not sure if the results of jdeps represent a blocker for jars on the
classpath, or just modules? I do note that unsafe changed a bit so we may
have forced updates regardless.

On Sun, Sep 30, 2018 at 2:07 AM Andrea Aime <andrea.a...@geo-solutions.it>
wrote:

> Hi,
> I am looking at internal API usage that we (likely) have to remove during
> the JDK 11 upgrade effort.
> The jdeps tool can scan jars and find internal API usage, so I used it.
> I've already run it on jai-ext (no complaints)
> and imageio-ext (see results at
> https://github.com/geosolutions-it/imageio-ext/issues/172 ).
>
> Here are the results running it onto GeoTools (I've collected the GeoTools
> jars, release style, went into target/binaries, and run jdeps):
>
> jdeps --jdk-internals -R *.jar
> ehcache-2.10.3.jar -> jdk.unsupported
>    net.sf.ehcache.pool.sizeof.UnsafeSizeOf            -> sun.misc.Unsafe
>                                   JDK internal API (jdk.unsupported)
> gt-arcsde-21-SNAPSHOT.jar -> java.desktop
>    org.geotools.arcsde.raster.info.RasterUtils        ->
> com.sun.imageio.plugins.common.BogusColorSpace     JDK internal API
> (java.desktop)
> gt-coverage-api-21-SNAPSHOT.jar -> java.desktop
>    org.geotools.coverage.io.util.Utilities            -> sun.awt.OSInfo
>                                  JDK internal API (java.desktop)
>    org.geotools.coverage.io.util.Utilities            ->
> sun.awt.OSInfo$OSType                              JDK internal API
> (java.desktop)
> imageio-ext-streams-1.1.25.jar -> java.desktop
>    it.geosolutions.imageio.stream.input.spi.FileImageInputStreamExtImplSpi
> -> com.sun.imageio.spi.FileImageInputStreamSpi        JDK internal API
> (java.desktop)
>
>  it.geosolutions.imageio.stream.output.spi.FileImageOutputStreamExtImplSpi
> -> com.sun.imageio.spi.FileImageOutputStreamSpi       JDK internal API
> (java.desktop)
> imageio-ext-utilities-1.1.25.jar -> java.desktop
>    it.geosolutions.imageio.utilities.ImageIOUtilities ->
> com.sun.imageio.plugins.common.BogusColorSpace     JDK internal API
> (java.desktop)
> jai_codec-1.1.3.jar -> JDK removed internal API
> jai_codec-1.1.3.jar -> java.base
>    com.sun.media.jai.codecimpl.JPEGImage              ->
> com.sun.image.codec.jpeg.ImageFormatException      JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.JPEGImage              ->
> com.sun.image.codec.jpeg.JPEGCodec                 JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.JPEGImage              ->
> com.sun.image.codec.jpeg.JPEGImageDecoder          JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.JPEGImageEncoder       ->
> com.sun.image.codec.jpeg.JPEGCodec                 JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.JPEGImageEncoder       ->
> com.sun.image.codec.jpeg.JPEGEncodeParam           JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.JPEGImageEncoder       ->
> com.sun.image.codec.jpeg.JPEGImageEncoder          JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.JPEGImageEncoder       ->
> com.sun.image.codec.jpeg.JPEGQTable                JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.PNMImage               ->
> sun.security.action.GetPropertyAction              JDK internal API
> (java.base)
>    com.sun.media.jai.codecimpl.PNMImageEncoder        ->
> sun.security.action.GetPropertyAction              JDK internal API
> (java.base)
>    com.sun.media.jai.codecimpl.TIFFImage              ->
> com.sun.image.codec.jpeg.JPEGCodec                 JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.TIFFImage              ->
> com.sun.image.codec.jpeg.JPEGDecodeParam           JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.TIFFImage              ->
> com.sun.image.codec.jpeg.JPEGImageDecoder          JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.TIFFImageEncoder       ->
> com.sun.image.codec.jpeg.JPEGCodec                 JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.TIFFImageEncoder       ->
> com.sun.image.codec.jpeg.JPEGEncodeParam           JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.TIFFImageEncoder       ->
> com.sun.image.codec.jpeg.JPEGImageEncoder          JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.fpx.FPXImage           ->
> com.sun.image.codec.jpeg.JPEGCodec                 JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.fpx.FPXImage           ->
> com.sun.image.codec.jpeg.JPEGDecodeParam           JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.codecimpl.fpx.FPXImage           ->
> com.sun.image.codec.jpeg.JPEGImageDecoder          JDK internal API (JDK
> removed internal API)
> jai_core-1.1.3.jar -> JDK removed internal API
> jai_core-1.1.3.jar -> java.desktop
>    com.sun.media.jai.opimage.IIPResolutionOpImage     ->
> com.sun.image.codec.jpeg.JPEGCodec                 JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.opimage.IIPResolutionOpImage     ->
> com.sun.image.codec.jpeg.JPEGDecodeParam           JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.opimage.IIPResolutionOpImage     ->
> com.sun.image.codec.jpeg.JPEGImageDecoder          JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.tilecodec.JPEGTileDecoder        ->
> com.sun.image.codec.jpeg.JPEGCodec                 JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.tilecodec.JPEGTileDecoder        ->
> com.sun.image.codec.jpeg.JPEGDecodeParam           JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.tilecodec.JPEGTileDecoder        ->
> com.sun.image.codec.jpeg.JPEGImageDecoder          JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.tilecodec.JPEGTileDecoder        ->
> com.sun.image.codec.jpeg.JPEGQTable                JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.tilecodec.JPEGTileEncoder        ->
> com.sun.image.codec.jpeg.JPEGCodec                 JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.tilecodec.JPEGTileEncoder        ->
> com.sun.image.codec.jpeg.JPEGEncodeParam           JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.tilecodec.JPEGTileEncoder        ->
> com.sun.image.codec.jpeg.JPEGImageEncoder          JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.tilecodec.JPEGTileEncoder        ->
> com.sun.image.codec.jpeg.JPEGQTable                JDK internal API (JDK
> removed internal API)
>    com.sun.media.jai.tilecodec.JPEGTileEncoder        ->
> sun.awt.image.codec.JPEGParam                      JDK internal API (JDK
> removed internal API)
>    javax.media.jai.RasterAccessor                     ->
> sun.awt.image.BytePackedRaster                     JDK internal API
> (java.desktop)
> jai_imageio-1.1.jar -> java.base
>    com.sun.media.imageioimpl.plugins.pnm.PNMImageReader ->
> sun.security.action.GetPropertyAction              JDK internal API
> (java.base)
>    com.sun.media.imageioimpl.plugins.pnm.PNMImageWriter ->
> sun.security.action.GetPropertyAction              JDK internal API
> (java.base)
> protobuf-java-3.4.0.jar -> jdk.unsupported
>    com.google.protobuf.UnsafeUtil                     -> sun.misc.Unsafe
>                                   JDK internal API (jdk.unsupported)
>    com.google.protobuf.UnsafeUtil$1                   -> sun.misc.Unsafe
>                                   JDK internal API (jdk.unsupported)
>    com.google.protobuf.UnsafeUtil$JvmMemoryAccessor   -> sun.misc.Unsafe
>                                   JDK internal API (jdk.unsupported)
>    com.google.protobuf.UnsafeUtil$MemoryAccessor      -> sun.misc.Unsafe
>                                   JDK internal API (jdk.unsupported)
> swt.win32.win32.x86_64-3.6.1.v3655c.jar -> java.desktop
>    org.eclipse.swt.awt.SWT_AWT$1                      ->
> java.awt.peer.ComponentPeer                        JDK internal API
> (java.desktop)
>
> 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 dependence 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.ImageFormatException Use javax.imageio @since 1.4
> com.sun.image.codec.jpeg.JPEGCodec       Use javax.imageio @since 1.4
> com.sun.image.codec.jpeg.JPEGDecodeParam Use javax.imageio @since 1.4
> com.sun.image.codec.jpeg.JPEGEncodeParam Use javax.imageio @since 1.4
> com.sun.image.codec.jpeg.JPEGImageDecoder Use javax.imageio @since 1.4
> com.sun.image.codec.jpeg.JPEGImageEncoder Use javax.imageio @since 1.4
> com.sun.image.codec.jpeg.JPEGQTable      Use javax.imageio @since 1.4
> java.awt.peer.ComponentPeer              Should not use. See
> https://bugs.openjdk.java.net/browse/JDK-8037739
> sun.awt.image.codec.JPEGParam            Use javax.imageio @since 1.4
> sun.misc.Unsafe                          See
> http://openjdk.java.net/jeps/260
> sun.security.action.GetPropertyAction    Use
> java.security.PrivilegedAction @since 1.1
>
> As you can see part of the report is due to imageoi-ext jars in the
> collection (I've made it light gray), but the rest seems legit and
> points to both GeoTools sources and some dependencies.
>
> Cheers
> Andrea
>
> == GeoServer Professional Services from the experts! Visit
> http://goo.gl/it488V for more information. == Ing. Andrea Aime @geowolf
> Technical Lead GeoSolutions S.A.S. Via di Montramito 3/A 55054 Massarosa
> (LU) phone: +39 0584 962313 fax: +39 0584 1660272 mob: +39 339 8844549
> http://www.geo-solutions.it http://twitter.com/geosolutions_it
> ------------------------------------------------------- *Con riferimento
> alla normativa sul trattamento dei dati personali (Reg. UE 2016/679 -
> Regolamento generale sulla protezione dei dati “GDPR”), si precisa che ogni
> circostanza inerente alla presente email (il suo contenuto, gli eventuali
> allegati, etc.) è un dato la cui conoscenza è riservata al/i solo/i
> destinatario/i indicati dallo scrivente. Se il messaggio Le è giunto per
> errore, è tenuta/o a cancellarlo, ogni altra operazione è illecita. Le
> sarei comunque grato se potesse darmene notizia. This email is intended
> only for the person or entity to which it is addressed and may contain
> information that is privileged, confidential or otherwise protected from
> disclosure. We remind that - as provided by European Regulation 2016/679
> “GDPR” - copying, dissemination or use of this e-mail or the information
> herein by anyone other than the intended recipient is prohibited. If you
> have received this email by mistake, please notify us immediately by
> telephone or e-mail.*
> _______________________________________________
> GeoTools-Devel mailing list
> GeoTools-Devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/geotools-devel
>
-- 
--
Jody Garnett
_______________________________________________
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to