« ◇電源コードと電源ボタンの位置 | トップページ | メモ:jdeps/jlinkによる縮小JREでは不足が出る »

メモ:Java8とJava11の差

 Java8とJava11の差

同じソースでもJava8とJava11では動作が異なります。

次のコードはディスプレイのサイズを取得しています。これをJDK8とJDK11で動かすと異なる結果となります。

// HelloWorld.java
import java.awt.*;
public class HelloWorld{
   public static void main(String[]args_){
      System.err.println("win-height="
                        +GraphicsEnvironment
                        .getLocalGraphicsEnvironment()
                        .getDefaultScreenDevice()
                        .getDefaultConfiguration()
                        .getBounds()
                        .height
                        );
      }
   }

次の様にJava8とJava11でコンパイルし動作させると

:: A10_test.bat
@echo off
set JDK8=C:\Program Files\Java\jdk1.8.0_152
set JDK11=C:\Program Files\Java\jdk-11

echo JDK8
del /q /s HelloWorld.class  > NUL 2>&1
"%JDK8%\bin\javac" HelloWorld.java
"%JDK8%\bin\java" HelloWorld

echo JDK11
del /q /s HelloWorld.class  > NUL 2>&1
"%JDK11%\bin\javac" HelloWorld.java
"%JDK11%\bin\java" HelloWorld

echo build-JDK8 run-JDK11
del /q /s HelloWorld.class  > NUL 2>&1
"%JDK8%\bin\javac" HelloWorld.java
"%JDK11%\bin\java" HelloWorld

del /q /s HelloWorld.class  > NUL 2>&1

pause

次の結果が得られます。

JDK8
win-height=2160
JDK11
win-height=1440
build-JDK8 run-JDK11
win-height=1440
続行するには何かキーを押してください . . .

画面は4KなのでJDK8の動作が正しく、JDK11は正確ではありません。

Java9では多くのクラスが初期化時に異常を起こしたり、JVM自体が発狂したりしました。それに比べると、ましにはなりましたが、まだまだ採用できるレベルではなさそうです。

|

« ◇電源コードと電源ボタンの位置 | トップページ | メモ:jdeps/jlinkによる縮小JREでは不足が出る »

トラックバック


この記事へのトラックバック一覧です: メモ:Java8とJava11の差:

« ◇電源コードと電源ボタンの位置 | トップページ | メモ:jdeps/jlinkによる縮小JREでは不足が出る »