JDK-8148969 : Reorganize FX SDK layout to match JDK 9 layout
  • Type: Enhancement
  • Component: javafx
  • Sub-Component: build
  • Affected Version: 9
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2016-02-03
  • Updated: 2016-02-16
  • Resolved: 2016-02-15
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 9
9Fixed
Related Reports
Blocks :  
Relates :  
Relates :  
Relates :  
Description
The layout of the JDK changed in JDK 9 (about a year ago) to remove the "jre" directory within the JDK, and move everything up one directory -- see JDK-8049367. Subsequently, the ext directory was removed, so jfxrt.jar was moved from lib/ext to lib -- see JDK-8065702.

These changes are not yet reflected in the FX "legacy" SDK that is created in build/sdk. We still create that directory tree with an "rt" directory (which corresponds to jre), and we still place jfxrt.jar in the "ext" directory.

In preparation for enabling the jigsaw module system, we have changed the layout of the sdk in the FX sandbox-9-jake forest to match the JDK 9 layout -- see JDK-8131894. In order to make forward progress, to prepare for upgrading to JDK 9 as the boot JDK, we need to port these changes to FX 9-dev.
Comments
Changeset: 151fdd3d048f Author: kcr Date: 2016-02-15 13:08 -0800 URL: http://hg.openjdk.java.net/openjfx/9-dev/rt/rev/151fdd3d048f 8148969: Reorganize FX SDK layout to match JDK 9 layout Reviewed-by: ddhill, ckyang
15-02-2016

+1. Looks good to me.
15-02-2016

Regarding my comment about the two follow-up issues above, I found the problem with the inclusion of prism-es2 native library, which was just a missing piece of the 9-jake patch that didn't get applied, so I have fixed that along with adding the documentation of the new build properties to gradle.properties.template. Updated webrev: http://cr.openjdk.java.net/~kcr/8148969/webrev.01/ Delta webrev between .00 and .01 versions: http://cr.openjdk.java.net/~kcr/8148969/delta.00.01/
15-02-2016

waded through the review and nothing popped at me. +1
11-02-2016

I should also mention for the benefit of reviewers that the substantive changes are in: build.gradle
11-02-2016

I noticed two follow-up issues that need to be addressed: 1) The new INCLUDE_ES2 and INCLUDE_NULL3D build flags should be documented in gradle.properties.template 2) prism_es2.dll is built even when INCLUDE_ES2 is false (although it is never loaded since the corresponding class files are correctly filtered out). I will just fix the first one when I push (and included it in any subsequent webrev, should such be needed). I will file a follow-on JBS bug for the second one.
11-02-2016

I have tested this on Linux, Mac, and Windows.
11-02-2016

Webrev: http://cr.openjdk.java.net/~kcr/8148969/webrev.00/ As indicated in the description, this is a port of the JavaFX SDK reorganization part of JDK-8131894. It is a necessary step to enable moving to JDK 9 as the boot JDK. By doing it now we reduce the delta we have to keep in the 9-jake sandbox. JavaFX developers will need to be aware that jfxrt.jar has moved. Instead of it being in build/sdk/rt/lib/ext/jfxrt.jar it is in build/sdk/lib/jfxrt.jar. Most of the changes in this webrev are to account for this. The other change is that the class filtering is now being done when building the SDK in the first place. This eliminates the post-filtering that used to be done when delivering the bundle into to the JDK build. The filtering is now done when generating jfxrt.jar. This makes the "openzip" task somewhat obsolete (it is removed entirely in jake), but I left it in place for this RFE. One implication of this is that developers wishing to build and test the prism-es2 pipeline on Windows or the prism-null pipeline on any platform will now need to specify a build flag, "-PINCLUDE_ES2=true" or "-PINCLUDE_NULL3D=true", respectively.
11-02-2016