Getting ready for Java 9

This topic has been viewed 9248 times and has 2 replies
Thread status: Active
Questions about extending features and developing plug-ins [img]http://www.sweethome3d.com/images/flags/en_small.gif[/img]
Post Reply New Topic
libnoon
Posts: 4
Joined: Sun Feb 19, 2017 4:25 pm
Country: France

Getting ready for Java 9

Post by libnoon »

Hello,

Java provides a migration guide to Java 9.

FYI I have tried running the checking tools (jdeps for dependencies, jdeprscan for deprecated APIs).

Here are the results of jdeprscan. I have shortened the deprecated methods for brevity.

Code: Select all

+ jdeprscan --class-path /home/noon/Downloads/softs/SweetHome3D-5.4/lib/SweetHome3D.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/lib/Furniture.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/lib/Textures.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/lib/Help.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/lib/iText-2.1.7.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/lib/freehep-vectorgraphics-svg-2.1.1b.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/lib/sunflow-0.07.3i.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/lib/jmf.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/lib/batik-svgpathparser-1.7.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/lib/java3d-1.6/j3dcore.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/lib/java3d-1.6/j3dutils.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/lib/java3d-1.6/vecmath.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/lib/java3d-1.6/gluegen-rt.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/lib/java3d-1.6/jogl-java3d.jar:/home/noon/Downloads/softs/SweetHome3D-5.4/jre8/lib/javaws.jar lib/SweetHome3D.jar lib/Furniture.jar lib/Textures.jar lib/Help.jar lib/iText-2.1.7.jar lib/freehep-vectorgraphics-svg-2.1.1b.jar lib/sunflow-0.07.3i.jar lib/jmf.jar lib/batik-svgpathparser-1.7.jar lib/java3d-1.6/j3dcore.jar lib/java3d-1.6/j3dutils.jar lib/java3d-1.6/vecmath.jar lib/java3d-1.6/gluegen-rt.jar lib/java3d-1.6/jogl-java3d.jar
Deprecated methods (collected here as there are a lot of occurrences):
[...] deprecated method: java/awt/Component::minimumSize()Ljava/awt/Dimension; 
[...] deprecated method: java/awt/Component::preferredSize()Ljava/awt/Dimension; 
[...] deprecated method: java/awt/Component::reshape(IIII)V 
[...] deprecated method: java/awt/Component::size()Ljava/awt/Dimension; 
[...] deprecated method: java/awt/Container::countComponents()I 
[...] deprecated method: java/awt/Container::insets()Ljava/awt/Insets; 
[...] deprecated method: java/awt/event/InputEvent::getModifiers()I 
[...] deprecated method: java/awt/Graphics::getClipRect()Ljava/awt/Rectangle; 
[...] deprecated method: java/awt/List::addItem(Ljava/lang/String;I)V 
[...] deprecated method: java/awt/List::addItem(Ljava/lang/String;)V 
[...] deprecated method: java/awt/List::delItem(I)V 
[...] deprecated method: java/awt/Toolkit::getFontMetrics(Ljava/awt/Font;)Ljava/awt/FontMetrics; 
[...] deprecated method: java/awt/Window::hide()V 
[...] deprecated method: java/awt/Window::show()V 
[...] deprecated method: java/io/DataInputStream::readLine()Ljava/lang/String; 
[...] deprecated method: java/io/File::toURL()Ljava/net/URL; 
[...] deprecated method: java/lang/Boolean::<init>(Ljava/lang/String;)V 
[...] deprecated method: java/lang/Boolean::<init>(Z)V 
[...] deprecated method: java/lang/Byte::<init>(B)V 
[...] deprecated method: java/lang/Character::<init>(C)V 
[...] deprecated method: java/lang/Double::<init>(D)V 
[...] deprecated method: java/lang/Double::<init>(Ljava/lang/String;)V 
[...] deprecated method: java/lang/Float::<init>(D)V 
[...] deprecated method: java/lang/Float::<init>(F)V 
[...] deprecated method: java/lang/Float::<init>(Ljava/lang/String;)V 
[...] deprecated method: java/lang/Integer::<init>(I)V 
[...] deprecated method: java/lang/Integer::<init>(Ljava/lang/String;)V 
[...] deprecated method: java/lang/Long::<init>(J)V 
[...] deprecated method: java/lang/Long::<init>(Ljava/lang/String;)V 
[...] deprecated method: java/lang/Package::getPackage(Ljava/lang/String;)Ljava/lang/Package; 
[...] deprecated method: java/lang/Short::<init>(S)V 
[...] deprecated method: java/lang/Thread::stop()V 
[...] deprecated method: java/net/MulticastSocket::setTTL(B)V 
[...] deprecated method: javax/swing/JComponent::reshape(IIII)V 
[...] deprecated method: javax/swing/JList::getSelectedValues()[Ljava/lang/Object; 
[...] deprecated method: javax/swing/text/JTextComponent::viewToModel(Ljava/awt/Point;)I 
Jar file lib/SweetHome3D.jar:
class com/eteks/sweethome3d/swing/PlanComponent uses deprecated class javax/swing/JApplet 
Jar file lib/Furniture.jar:
Jar file lib/Textures.jar:
Jar file lib/Help.jar:
Jar file lib/iText-2.1.7.jar:
Jar file lib/freehep-vectorgraphics-svg-2.1.1b.jar:
class org/freehep/graphicsio/gif/GIFImageWriterSpi uses deprecated field javax/imageio/spi/ImageWriterSpi::STANDARD_OUTPUT_TYPE 
class org/freehep/graphicsio/ppm/PPMImageWriterSpi uses deprecated field javax/imageio/spi/ImageWriterSpi::STANDARD_OUTPUT_TYPE 
class org/freehep/graphicsio/raw/RawImageWriterSpi uses deprecated field javax/imageio/spi/ImageWriterSpi::STANDARD_OUTPUT_TYPE 
Jar file lib/sunflow-0.07.3i.jar:
Jar file lib/jmf.jar:
class com/sun/media/ui/BufferedPanel overrides deprecated method java/awt/Component::reshape(IIII)V 
class com/sun/media/ui/BufferedPanelLight overrides deprecated method java/awt/Component::reshape(IIII)V 
class com/sun/media/ui/ColumnList overrides deprecated method java/awt/Component::isFocusTraversable()Z 
Jar file lib/batik-svgpathparser-1.7.jar:
Jar file lib/java3d-1.6/j3dcore.jar:
class javax/media/j3d/J3DGraphics2DImpl overrides deprecated method java/awt/Graphics::getClipRect()Ljava/awt/Rectangle; 
Jar file lib/java3d-1.6/j3dutils.jar:
class com/sun/j3d/utils/applet/JMainFrame$1 uses deprecated class java/applet/Applet 
class com/sun/j3d/utils/applet/JMainFrame implements deprecated interface java/applet/AppletStub 
class com/sun/j3d/utils/applet/JMainFrame implements deprecated interface java/applet/AppletContext 
class com/sun/j3d/utils/applet/JMainFrame uses deprecated class java/applet/AppletStub 
class com/sun/j3d/utils/applet/JMainFrame uses deprecated class java/applet/AppletContext 
class com/sun/j3d/utils/applet/JMainFrame uses deprecated class java/applet/Applet 
class com/sun/j3d/utils/applet/JMainFrame has field named applet of deprecated type Ljava/applet/Applet; 
class com/sun/j3d/utils/applet/JMainFrame has method named <init> having deprecated parameter type Ljava/applet/Applet; 
class com/sun/j3d/utils/applet/JMainFrame has method named <init> having deprecated parameter type Ljava/applet/Applet; 
class com/sun/j3d/utils/applet/JMainFrame has method named <init> having deprecated parameter type Ljava/applet/Applet; 
class com/sun/j3d/utils/applet/JMainFrame has method named build having deprecated parameter type Ljava/applet/Applet; 
class com/sun/j3d/utils/applet/JMainFrame has method named getAppletContext having deprecated return type Ljava/applet/AppletContext; 
class com/sun/j3d/utils/applet/JMainFrame has method named getAudioClip having deprecated return type Ljava/applet/AudioClip; 
class com/sun/j3d/utils/applet/JMainFrame has method named getApplet having deprecated return type Ljava/applet/Applet; 
class com/sun/j3d/utils/applet/JMainFrame has method named access$000 having deprecated return type Ljava/applet/Applet; 
class com/sun/j3d/utils/applet/MainFrame$1 uses deprecated class java/applet/Applet 
class com/sun/j3d/utils/applet/MainFrame implements deprecated interface java/applet/AppletStub 
class com/sun/j3d/utils/applet/MainFrame implements deprecated interface java/applet/AppletContext 
class com/sun/j3d/utils/applet/MainFrame uses deprecated class java/applet/AppletStub 
class com/sun/j3d/utils/applet/MainFrame uses deprecated class java/applet/AppletContext 
class com/sun/j3d/utils/applet/MainFrame uses deprecated class java/applet/Applet 
class com/sun/j3d/utils/applet/MainFrame has field named applet of deprecated type Ljava/applet/Applet; 
class com/sun/j3d/utils/applet/MainFrame has method named <init> having deprecated parameter type Ljava/applet/Applet; 
class com/sun/j3d/utils/applet/MainFrame has method named <init> having deprecated parameter type Ljava/applet/Applet; 
class com/sun/j3d/utils/applet/MainFrame has method named <init> having deprecated parameter type Ljava/applet/Applet; 
class com/sun/j3d/utils/applet/MainFrame has method named build having deprecated parameter type Ljava/applet/Applet; 
class com/sun/j3d/utils/applet/MainFrame has method named getAppletContext having deprecated return type Ljava/applet/AppletContext; 
class com/sun/j3d/utils/applet/MainFrame has method named getAudioClip having deprecated return type Ljava/applet/AudioClip; 
class com/sun/j3d/utils/applet/MainFrame has method named getApplet having deprecated return type Ljava/applet/Applet; 
class com/sun/j3d/utils/applet/MainFrame has method named access$000 having deprecated return type Ljava/applet/Applet; 
class com/sun/j3d/utils/behaviors/picking/PickMouseBehavior uses deprecated class java/awt/Event 
class com/sun/j3d/utils/pickfast/behaviors/PickMouseBehavior uses deprecated class java/awt/Event 
class com/sun/j3d/utils/picking/behaviors/PickMouseBehavior uses deprecated class java/awt/Event 
Jar file lib/java3d-1.6/vecmath.jar:
Jar file lib/java3d-1.6/gluegen-rt.jar:
class com/jogamp/common/util/JogampVersion uses deprecated field java/util/jar/Attributes$Name::IMPLEMENTATION_URL 
class com/jogamp/common/util/JogampVersion uses deprecated field java/util/jar/Attributes$Name::IMPLEMENTATION_VENDOR_ID 
Jar file lib/java3d-1.6/jogl-java3d.jar:
class com/jogamp/nativewindow/awt/JAWTWindow uses deprecated class java/applet/Applet 
class com/jogamp/opengl/awt/GLCanvas overrides deprecated method java/awt/Component::reshape(IIII)V 
class com/jogamp/opengl/awt/GLJPanel overrides deprecated method javax/swing/JComponent::reshape(IIII)V 
class jogamp/opengl/awt/VersionApplet extends deprecated class java/applet/Applet 
class jogamp/opengl/awt/VersionApplet uses deprecated class java/applet/Applet 

libnoon
Posts: 4
Joined: Sun Feb 19, 2017 4:25 pm
Country: France

Re: Getting ready for Java 9

Post by libnoon »

And here is the jdeps summary:

Code: Select all

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.apple.eawt.AppEvent                  Use java.awt.Desktop and JEP 272 @since 9
com.apple.eawt.AppEvent$FullScreenEvent  Use java.awt.Desktop and JEP 272 @since 9
com.apple.eawt.Application               Use java.awt.Desktop and JEP 272 @since 9
com.apple.eawt.ApplicationAdapter        Use java.awt.Desktop and JEP 272 @since 9
com.apple.eawt.ApplicationEvent          Use java.awt.Desktop and JEP 272 @since 9
com.apple.eawt.ApplicationListener       Use java.awt.Desktop and JEP 272 @since 9
com.apple.eawt.FullScreenAdapter         Use java.awt.Desktop and JEP 272 @since 9
com.apple.eawt.FullScreenListener        Use java.awt.Desktop and JEP 272 @since 9
com.apple.eawt.FullScreenUtilities       Use java.awt.Desktop and JEP 272 @since 9
java.awt.peer.ComponentPeer              Should not use. See https://bugs.openjdk.java.net/browse/JDK-8037739
java.awt.peer.LightweightPeer            Should not use. See https://bugs.openjdk.java.net/browse/JDK-8037739
sun.misc.BASE64Decoder                   Use java.util.Base64 @since 1.8
sun.misc.JavaNetAccess                   Removed. See http://openjdk.java.net/jeps/260
sun.misc.Resource                        Removed. See http://openjdk.java.net/jeps/260
sun.misc.SharedSecrets                   Removed. See http://openjdk.java.net/jeps/260
sun.misc.URLClassPath                    Removed. See http://openjdk.java.net/jeps/260
User avatar
Puybaret
Posts: 9440
Joined: Mon Nov 07, 2005 12:00 pm
Country: Paris, France
Contact:

Re: Getting ready for Java 9

Post by Puybaret »

Thanks for your inquiry, but jdeprscan doesn't seem accurate enough yet to make it useful. For example, there's no calls to Thread#stop or to Component#preferredSize in Sweet Home 3D!
Emmanuel Puybaret, Sweet Home 3D creator
Post Reply New Topic

Who is online

Users browsing this forum: No registered users and 1 guest