Details
-
Bug
-
Resolution: Fixed
-
P3
-
8u20
Description
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 discussingRT-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 toRT-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.
This issue was pointed out by Joe Darcy while we were discussing
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
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.
Attachments
Issue Links
- relates to
-
JDK-8093568 javac warning No SupportedSourceVersion annotation
- Resolved