Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8096193

javac performance regression due to addition of FXML annotation processor

XMLWordPrintable

      An FXML annotation processor was added to FX 8u20 (see RT-34472). This has likely caused a performance regression (which needs to be quantified), and possibly a conformance issue as well.

      This issue was pointed out by Joe Darcy while we were discussing RT-36094 which caused compilation warning messages when compiling any file with javac, even one that doesn't use FX.

      This can be verified compiling a simple "no-op" test program.

      ---------- Noop.java ----------
      public class Noop {
          public static void main(String[] args) {
          }
      }
      -------------------------------

      $ javac -J-Dsun.misc.URLClassPath.debug=true Noop.java

      which lists, among other things, all jar files and classes that are opened during compilation.

      If you run with JDK 8 or 8u20-b03 then jfxrt.jar is not opened.

      If you run with JDK 8u20-b04 then you will see that jfxrt.jar is opened and com/sun/javafx/fxml/annotation/FXMLAnnotationProcessor.class is loaded. Also, a warning message is printed due to RT-36094 (fixed after b04).

      The warning message has been fixed, but jfxrt.jar is still opened and the FXML annotation processor is still run when compiling any .java file with javac.

      We should consider making the annotation processor optional (if that is even possible) or removing it.

            msladecek Martin Sládeček
            kcr Kevin Rushforth
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported: