← JavaFX

OpenJFX 24 Release Notes

Released versions

VersionRelease dateRelease notes
24.0.2July 15, 2025release notes
24.0.1April 15, 2025release notes
24March 18, 2025release notes

Release Notes for JavaFX 24.0.2

List of Fixed Bugs

Issue keySummarySubcomponent
JDK-8318985[macos] Incorrect 3D lighting on macOS 14 and latergraphics
JDK-8350284WebKit 620.1 crashes on startup on Windows x86 32-bitweb
JDK-8352162Update libxml2 to 2.13.8web
JDK-8352164Update libxslt to 1.1.43web
JDK-8353916Unexpected event type for DOM mutation events with WebKit 620.1web
JDK-8354876Update SQLite to 3.49.1web
JDK-8354940Fail to sign in to Microsoft sites with WebViewweb

Release Notes for JavaFX 24.0.1

List of Fixed Bugs

Issue keySummarySubcomponent
JDK-8351368RichTextArea: exception pasting from Wordcontrols
JDK-8349256Update PipeWire to 1.3.81graphics
JDK-8340322Update WebKit to 620.1web
JDK-8347937Canvas pattern test fails and crashes on WebKit 620.1web
JDK-8349924Additional WebKit 620.1 fixes from WebKitGTK 2.46.6web
JDK-8351264Some images don’t load with WebKit 620.1web

Release Notes for JavaFX 24

Introduction

The following notes describe important changes and information about this release. In some cases, the descriptions provide links to additional detailed information about an issue or a change.

These release notes cover the standalone JavaFX 24 release. JavaFX 24 requires JDK 22 or later. JDK 24 is recommended.

Important Changes

JavaFX 24 Requires JDK 22 or Later

JavaFX 24 is compiled with --release 22 and thus requires JDK 22 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-8340003 for more information.

JavaFX Applications Must Use --enable-native-access

Running a JavaFX application on JDK 24 will produce a warning from each of the three JavaFX modules that rely on native access, due to the changes specified in JEP 472. Each warning will include the following message:

WARNING: Restricted methods will be blocked in a future release unless native access is enabled

In order to suppress the warning now, and to be able to run your application at all in a subsequent version of the JDK, you need to explicitly enable native access for all modules that need it. This is done by passing --enable-native-access= to java on the command line, listing the modules that you grant native access. This list of modules includes javafx.graphics and, optionally, javafx.media and javafx.web, if your application uses those modules.

For example:

java --enable-native-access=javafx.graphics,javafx.media,javafx.web

See JDK-8347744 for more information.

The jdk.jsobject Module is Now Included with JavaFX

The jdk.jsobject module, which is used by JavaFX WebView applications, is now included with JavaFX, replacing the JDK module of the same name. The jdk.jsobject module is deprecated as of JDK 24, and will be removed in a future release of the JDK.

To facilitate the transition, jdk.jsobject is now an upgradable module in the JDK. This means that the version of jdk.jsobject delivered with JavaFX can be used in place of the one in the JDK to avoid the compiler warning. This can be done as follows:

Applications using the SDK

When running with the JavaFX SDK, use the --upgrade-module-path argument. For example:

javac --upgrade-module-path=/path/to/javafx-sdk-24/lib
java --upgrade-module-path=/path/to/javafx-sdk-24/lib

NOTE: The above will fail if you run your application with JDK 23 or earlier. JDK 24 is recommended when running JavaFX 24, but if you choose to run JavaFX 24 with an earlier JDK, use the --module-path option instead.

When creating your custom Java runtime image, put the JavaFX jmods on the module path ahead of the JDK jmods. For example:

jlink --output jdk-with-javafx \
 --module-path /path/to/javafx-jmods-24:/path/to/jdk-24/jmods \
 --add-modules ALL-MODULE-PATH

NOTE: The above will fail if you create a custom image using JDK 23 or earlier. JDK 24 is recommended with JavaFX 24, but if you choose to run JavaFX 24 with an earlier JDK, put the JDK jmods ahead of the JavaFX jmods on the module path (that is, reverse the order of javafx-jmods-24 and jdk-24/jmods).

See JDK-8337280 for more information.

Pluggable Image Loading via javax.imageio

JavaFX 24 supports the Java Image I/O API, allowing applications to use third-party image loaders in addition to the built-in image loaders. This includes the ability to use variable-density image loaders for formats like SVG. When an image is loaded using a variable-density image loader, JavaFX rasterizes the image with the screen’s DPI scaling.

Applications that want to use this feature can use existing open-source Image I/O extension libraries, or register a custom Image I/O service provider instance with the IIORegistry class. Refer to the Java Image I/O documentation for more information.

See JDK-8306707 for more information.

ScrollPane Consumes Navigation Keys Only When It Has Direct Focus

ScrollPane now only responds to key events when it is the active focus owner. This ensures that custom controls and other UI elements work correctly inside a ScrollPane, providing a more consistent and intuitive navigation experience.

Applications that prefer the previous behavior, where ScrollPane always reacts to arrow keys and other navigational inputs, can manually restore it by adding an event handler. See this note for an example of how to do this.

See JDK-8340852 for more information.

Removed Features and Options

JavaFX No Longer Supports Running With a Security Manager

The Java Security Manager has been permanently disabled in JDK 24 via JEP 486.

Likewise, as of JavaFX 24, it is no longer possible to run JavaFX applications with a security manager enabled. This is true even if you run your application on an older JDK that still supports the security manager.

The following exception will be thrown when the JavaFX runtime is initialized with the Security Manager enabled:

UnsupportedOperationException: JavaFX does not support running with the Security Manager

See JDK-8341090 for more information.

Known Issues

JavaFX Warning Printed for Use of Terminally Deprecated Methods in sun.misc.Unsafe

Running a JavaFX application on JDK 24 will produce a warning the first time any UI Control or complex shape is rendered:

WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
...
WARNING: sun.misc.Unsafe::allocateMemory will be removed in a future release

To disable this warning, pass --sun-misc-unsafe-memory-access=allow to java on the command line. For example:

java --sun-misc-unsafe-memory-access=allow

This will be fixed in a subsequent version of JavaFX, after which time this flag will no longer be needed.

See JDK-8345121 for more information.

List of New Features

Issue KeySummarySubcomponent
JDK-8301121RichTextArea Control (Incubator)controls
JDK-8343646Public InputMap (Incubator)controls
JDK-8091673Public focus traversal API for use in custom controlscontrols
JDK-8306707Support pluggable image loading via javax.imageiographics
JDK-8329098Support “@1x” image naming convention as fallbackgraphics
JDK-8332895Support interpolation for backgrounds and bordersgraphics
JDK-8341514Add reducedMotion and reducedTransparency preferencesgraphics
JDK-8343336Add persistentScrollBars preferencegraphics
JDK-8343398Add reducedData preferencegraphics
JDK-8345188Support tree-structural pseudo-classesscenegraph

List of Other Enhancements

Issue KeySummarySubcomponent
JDK-8336031Create implementation of NSAccessibilityStaticText protocolaccessibility
JDK-8226911Interpolatable’s contract should be reexaminedanimation
JDK-8344443Deprecate FXPermission for removalbase
JDK-8309381Support JavaFX incubator modulesbuild
JDK-8340003Bump minimum JDK version for JavaFX to JDK 22build
JDK-8334874Horizontal scroll events from touch pads should scroll the TabPane tabscontrols
JDK-8338016SplitMenuButton constructors should match MenuButtoncontrols
JDK-8323706Remove SimpleSelector and CompoundSelector classesgraphics
JDK-8339603Seal the class hierarchy of Node, Camera, LightBase, Shape, Shape3Dgraphics
JDK-8341372BackgroundPosition, BorderImage, BorderStroke, CornerRadii should be finalgraphics
JDK-8346227Seal Paint and Materialgraphics
JDK-8337280Include jdk.jsobject module with JavaFXother
JDK-8341090Remove support for security manager from JavaFXother
JDK-8305418[Linux] Replace obsolete XIM as Input Method Editorwindow-toolkit

See the API docs for a list of new APIs and deprecated APIs in each release.

List of Fixed Bugs

Issue KeySummarySubcomponent
JDK-8336331Doc: Clarification in AccessibleAttribute, AccessibleRoleaccessibility
JDK-8340829Generated API docs should clearly identify EA buildsbuild
JDK-8345136Update JDK_DOCS property to point to JDK 23 docsbuild
JDK-8218745TableView: visual glitch at borders on horizontal scrollingcontrols
JDK-8296387[Tooltip, CSS] -fx-show-delay is only applied to the first tooltip that is shown before it is displayedcontrols
JDK-8320232Cells duplicated when table collapsed and expandedcontrols
JDK-8334900IOOBE when adding data to a Series of a BarChart that already contains datacontrols
JDK-8334901Style class “negative” is not always added for new BarChart data with negative valuecontrols
JDK-8336592Wrong type in documentation for TreeTableViewcontrols
JDK-8340852ScrollPane should not consume navigation keys when it doesn’t have direct focuscontrols
JDK-8341440ScrollPane: no immediate effect changing fitWidth/fitHeightcontrols
JDK-8341687Memory leak in TableView after interacting with TableMenuButtoncontrols
JDK-8342233Regression: TextInputControl selection is backwards in RTL modecontrols
JDK-8344067TableCell indices may not match the TableRow indexcontrols
JDK-8347305RichTextArea Follow-upcontrols
JDK-8347715RichTextArea Follow-up: Minor Bugscontrols
JDK-8348736RichTextArea clamp and getTextcontrols
JDK-8323787Mac System MenuBar throws IOB exceptiongraphics
JDK-8333374Cannot invoke “com.sun.prism.RTTexture.contentsUseful()” because “this.txt” is nullgraphics
JDK-8336097UserAgent Styles using lookups are promoted to Author level if look-up is defined in Author stylesheetgraphics
JDK-8336389Infinite loop occurs while resolving lookupsgraphics
JDK-8339068[Linux] NPE: Cannot read field “firstFont” because "" is nullgraphics
JDK-8340405JavaFX shutdown hook can hang preventing app from exitinggraphics
JDK-8341010TriangleMesh.vertexFormat Property default value is wronggraphics
JDK-8341418Prism/es2 DrawableInfo is never freed (leak)graphics
JDK-8342703CSS transition is not started when initial value was not specifiedgraphics
JDK-8183521Unable to type characters with tilde with swiss german keyboard layoutlocalization
JDK-8336277Colors are incorrect when playing H.265/HEVC on Windows 11media
JDK-8336938Update libFFI to 3.4.6media
JDK-8338701Provide media support for libavcodec version 61media
JDK-8346228Update GStreamer to 1.24.10media
JDK-8346229Update Glib to 2.82.4media
JDK-8344367Fix mistakes in FX API docsother
JDK-8288893Popup and its subclasses cannot input text from InputMethodscenegraph
JDK-8335470[XWayland] JavaFX tests that use AWT Robot fail on Waylandswing
JDK-8340005Eliminate native access calls from javafx.swingswing
JDK-8340849[macos] Crash when creating a child window of a JavaFX window after Platform::exitswing
JDK-8328994Update WebKit to 619.1web
JDK-8334124Rendering issues with CSS “text-shadow” in WebViewweb
JDK-8336941Update libxslt to 1.1.42web
JDK-8337481File API: file.name contains path instead of nameweb
JDK-8338307Additional WebKit 619.1 fixes from WebKitGTK 2.44.3web
JDK-8340208Additional WebKit 619.1 fixes from WebKitGTK 2.44.4web
JDK-8087863Mac: “Select All” within ListView/TreeView is handled differently depending on the useSystemMenuBar valuewindow-toolkit
JDK-8273743KeyCharacterCombination for ”+” does not work on US QWERTY keyboard layoutwindow-toolkit
JDK-8319779SystemMenu: memory leak due to listener never being removedwindow-toolkit
JDK-8325445[macOS] Colors are not displayed in sRGB color spacewindow-toolkit
JDK-8332222Linux Debian: Maximized stage shrinks when opening another stagewindow-toolkit
JDK-8333919[macOS] dragViewOffsetX/dragViewOffsetY are ignored for the dragView imagewindow-toolkit
JDK-8335469[XWayland] crash when an AWT ScreenCast session overlaps with an FX ScreenCast sessionwindow-toolkit
JDK-8339178[macos] Swing InterOp Platform.exit() crashwindow-toolkit
JDK-8339183[macos] Premature exit in Swing interop when last JFrame is disposedwindow-toolkit
JDK-8340982[win] Dead key followed by Space generates two characters instead of onewindow-toolkit
JDK-8344372Setting width for TRANSPARENT Stage -> gtk_window_resize: assertion ‘height > 0’window-toolkit
JDK-8348744Application window not always activated on macOS 15window-toolkit

List of Security fixes

Issue KeySummarySubcomponent
JDK-8335714 (not public)Enhance playing MP3smedia
JDK-8335715 (not public)Improve Direct Show supportmedia