Bump minimum JDK version for JavaFX to JDK 25

XMLWordPrintable

    • Type: CSR
    • Resolution: Unresolved
    • Priority: P3
    • jfx27
    • Component/s: javafx
    • None
    • behavioral
    • low
    •  A JavaFX application that has a dependency on another library that runs on JDK 24, but fails to run on JDK 25, will be unable to update to JavaFX 27. As JDK 24 is already out of support, this is not likely to be a problem.
    • Class file construct
    • JDK

      Summary

      Update the minimum version needed to run JavaFX to JDK 25.

      Problem

      In order for JavaFX to be able to use more recent JDK features, we should increase the minimum version of the JDK that can run the latest JavaFX. Additionally, there is an ongoing cost to keeping JavaFX buildable and runnable on older versions of Java, and little reason to continue to do so.

      Solution

      Use javac --release 25 to generate the class files that make up the JavaFX modules, except for the javafx.swing module where we will use -source 25 -target 25. The javafx.swing module requires the jdk.unsupported.desktop module, which is excluded by --release NN. Using -source 25 -target 25 is functionally equivalent, although it doesn't provide protection against accidentally using APIs that are present in the boot JDK with which we build JavaFX, but are unavailable in JDK 25. Care must be taken not to introduce a dependency on a too-new API by the javafx.swing module. As that module is unlikely to evolve, this is not much of a concern.

      Specification

      The class files in all JavaFX modules will be version 69.0 class files, meaning that they will only run on JDK 25 or newer.

      The following will be added to the JavaFX 27 release notes:

      ### JavaFX 27 Requires JDK 25 or Later
      
      JavaFX 27 is compiled with `--release 25` and thus requires JDK 25 or later in order to run.
      If you attempt to run with an older JDK, the Java launcher will exit with an error message
      indicating that the `javafx.base` module cannot be read.
      
      See [JDK-8376601](https://bugs.openjdk.org/browse/JDK-8376601) for more information.
      

            Assignee:
            Kevin Rushforth
            Reporter:
            Kevin Rushforth
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated: