OpenJFX 21 Release Notes

Planned versions

Version Planned release date
21.0.4 July 16, 2024
21.0.5 October 15, 2024
21.0.6 January 21, 2025

All planned release dates are informative. Contact us for a personalised quote for our JavaFX Long Term Support (LTS) service.

Released versions

Version Release date Release notes
21.0.3 April 16, 2024 release notes
21.0.2 January 16, 2024 release notes
21.0.1 October 17, 2023 release notes
21 September 19, 2023 release notes

Release Notes for JavaFX 21.0.3

List of Fixed Bugs

Issue key Summary Subcomponent
JDK-8321970 New table columns don’t appear when using fixed cell size unless refreshing tableView controls
JDK-8325154 resizeColumnToFitContent is slower than it needs to be controls
JDK-8322795 CSS performance regression up to 10x graphics
JDK-8318614 Update WebKit to 617.1 web
JDK-8322703 Intermittent crash in WebView in a JFXPanel from IME calls on macOS web
JDK-8324337 Cherry-pick WebKit 617.1 stabilization fixes web
JDK-8325258 Additional WebKit 617.1 fixes from WebKitGTK 2.42.5 web
JDK-8326989 Text selection issues on WebView after WebKit 617.1 web
JDK-8327177 macOS: wrong GlobalRef deleted in GlassMenu window-toolkit

List of Security fixes

Issue key Summary Subcomponent
JDK-8313040 (not public) Enhanced Font handling graphics
JDK-8313064 (not public) General enhancements of image handling graphics
JDK-8313072 (not public) Enhanced handling of Fonts graphics
JDK-8322236 (not public) Build failure after JDK-8313064 graphics
JDK-8313032 (not public) Enhanced handling of Glass window-toolkit
JDK-8320441 (not public) Additonal fix for JDK-8313032 window-toolkit

Release Notes for JavaFX 21.0.2

List of Fixed Bugs

Issue key Summary Subcomponent
JDK-8317370 JavaFX runtime version is wrong at runtime base
JDK-8311185 VirtualFlow jump when cellcount changes controls
JDK-8307536 FileAlreadyExistsException from NativeLibLoader when running concurrent applications with empty cache graphics
JDK-8313648 JavaFX application continues to show a black screen after graphic card driver crash graphics
JDK-8319079 Missing range checks in decora graphics
JDK-8317508 Provide media support for libavcodec version 60 media
JDK-8318386 Update Glib to 2.78.1 media
JDK-8318387 Update GStreamer to 1.22.6 media
JDK-8320267 WebView crashes on macOS 11 with WebKit 616.1 web
JDK-8251240 Menus inaccessible on Linux with i3 wm window-toolkit
JDK-8315074 Possible null pointer access in native glass window-toolkit
JDK-8315958 Missing range checks in GlassPasteboard window-toolkit
JDK-8319066 Application window not always activated in macOS 14 Sonoma window-toolkit
JDK-8319669 [macos14] Running any JavaFX app prints Secure coding warning window-toolkit

List of Security fixes

Issue key Summary Subcomponent
JDK-8319669 (not public) Better Glyph handling graphics
JDK-8313105 (not public) Improved media framing media
JDK-8313056 (not public) General enhancements of Glass window-toolkit

Release Notes for JavaFX 21.0.1

List of Fixed Bugs

Issue key Summary Subcomponent
JDK-8313856 Replace VLA with malloc in pango graphics
JDK-8313900 Possible NULL pointer access in NativeAudioSpectrum and NativeVideoBuffer media
JDK-8310681 Update WebKit to 616.1 web
JDK-8311097 Synchron XMLHttpRequest not receiving data web
JDK-8314212 Crash when loading in WebView web
JDK-8315657 Application window not activated in macOS 14 Sonoma window-toolkit

Release Notes for JavaFX 21


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 21 release. JavaFX 21 requires JDK 17 or later.

Important Changes

JavaFX Requires macOS 11 or Later

On Mac platforms, JavaFX 21 requires macOS 11 or later. An exception will be thrown when initializing the JavaFX runtime on older versions of macOS.

See JDK-8308114 for more information.

JavaFX Requires GTK 3 on Linux

On Linux platforms, JavaFX 21 requires GTK3 version 3.8 or later. The JavaFX GTK2 library has been removed. An exception will be thrown when initializing the JavaFX runtime if the GTK 3 library cannot be loaded.

See JDK-8299595 for more information.

Return Type of javafx.css.Match::getPseudoClasses Changed

The return type of javafx.css.Match.getPseudoClasses has been changed to Set<PseudoClass> instead of a non-public type. Most applications will not be impacted by this change, since this is not a method that applications ever need to call. In the unlikely event that an existing application binary does call this method, a NoSuchMethodError will be thrown. The solution is to recompile the application.

See JDK-8304959 for more information.

Event Handler Methods Added to EventTarget Interface

Four new default methods were added to the javafx.event.EventTarget interface:

  • <E extends Event> void addEventHandler(EventType<E>, EventHandler<? super E>)
  • <E extends Event> void removeEventHandler(EventType<E>, EventHandler<? super E>)
  • <E extends Event> void addEventFilter(EventType<E>, EventHandler<? super E>)
  • <E extends Event> void removeEventFilter(EventType<E>, EventHandler<? super E>)

This change allows applications to manage event handlers for all EventTarget implementations.

Most applications will not run into any backward compatibility problems with this change. The change is fully binary compatible and, for most use cases, it is also source compatible.

A compilation error will occur in one of the following two unlikely cases:

  • An application class extends Menu, MenuItem, TableColumnBase, or TreeItem, and overrides addEventHandler or removeEventHandler
  • An application class that is not a subclass of Node implements their own addEventHandler or removeEventHandler using a signature other than that of the newly added methods (for example, copying the same incorrect pattern that MenuItem used prior to this release)

In these cases, the declared methods must be changed to conform to the updated interface method signature.

See JDK-8306021 for more information.

List of Enhancements

Issue key Summary Subcomponent
JDK-8284542 [Win] Missing attribute for toggle state of CheckBox in CheckBoxTreeItem accessibility
JDK-8301312 Create implementation of NSAccessibilityButton protocol accessibility
JDK-8283063 Optimize Observable{List/Set/Map}Wrapper.retainAll/removeAll base
JDK-8304439 Subscription based listeners base
JDK-8304960 ObservableListBase should defer constructing ListChangeBuilder base
JDK-8305885 Use ReadOnly*PropertyBase class where possible base
JDK-8306021 Add event handler management to EventTarget base
JDK-8090647 Mnemonics : on windows we should cancel the underscore latch when an app loses focus. controls
JDK-8091153 Customize the Table Button Menu controls
JDK-8091419 TableView: invoke table menu button programmatically controls
JDK-8307960 Create Table Column PopupMenu lazily controls
JDK-8309470 Potential performance improvements in VirtualFlow controls
JDK-8290765 Remove parent disabled/treeVisible listeners graphics
JDK-8307363 TextFlow.underlineShape() graphics
JDK-8299756 Minor updates in CSS Reference other
JDK-8306648 Update the JavaDocs to show the NEW section and DEPRECATED versions other
JDK-8307208 Add GridPane constructor that accepts hGap and vGap values scenegraph
JDK-8260528 Clean glass-gtk sizing and positioning code window-toolkit
JDK-8299595 Remove terminally deprecated JavaFX GTK 2 library window-toolkit
JDK-8302355 Public API for Toolkit.canStartNestedEventLoop() window-toolkit

List of Fixed Bugs

Issue key Summary Subcomponent
JDK-8284662 [Win] Screen reader fails to read ListView/ComboBox item count if > 100 accessibility
JDK-8298382 JavaFX ChartArea Accessibility Reader accessibility
JDK-8308191 [macOS] VoiceOver decorations are shifted on second monitor accessibility
JDK-8224260 ChangeListener not triggered when adding a new listener in invalidated method base
JDK-8303740 JavaFX – Leak in Logging, Logging remembers last exception base
JDK-8303897 ObservableValue’s when binding should only invalidate when strictly needed base
JDK-8308114 Bump minimum version of macOS for x64 to 11.0 (matching aarch64) build
JDK-8088594 NullPointerException on showing submenu of a contextmenu controls
JDK-8088998 XYChart: duplicate child added exception when remove & add a series in several charts controls
JDK-8090123 Items are no longer visible when collection is changed controls
JDK-8137244 Empty Tree/TableView with CONSTRAINED_RESIZE_POLICY is not properly resized controls
JDK-8138842 TableViewSelectionModel.selectIndices does not select index 0 controls
JDK-8154038 Spinner’s converter should update its editor controls
JDK-8172849 Non-intuitive baseline alignment for labeled controls with graphics controls
JDK-8173321 TableView: Click on right trough has no effect when cell height is higher than viewport height controls
JDK-8178368 Right alignment of text fields and alignment of prompt text works incorrectly controls
JDK-8230833 LabeledSkinBase computes wrong height with ContentDisplay.GRAPHIC_ONLY controls
JDK-8237505 RadioMenuItem in ToggleGroup: deselected on accelerator controls
JDK-8245919 Region#padding property rendering error controls
JDK-8283551 ControlAcceleratorSupport menu items listener causes memory leak controls
JDK-8293836 Rendering performance degradation at bottom of TableView with many rows controls
JDK-8299986 Wrong sublist used in ListChangeListener controls
JDK-8300893 Wrong state after deselecting two or more cells of a TableView selection controls
JDK-8303026 [TextField] IOOBE on setting text with control characters that replaces existing text controls
JDK-8303680 Virtual Flow freezes after calling scrollTo and scrollPixels in succession controls
JDK-8305248 TableView not rendered correctly after column is made visible if fixed cell size is set controls
JDK-8306447 Adding an element to a long existing list may cause the first visible element to jump controls
JDK-8307538 Memory leak in TreeTableView when calling refresh controls
JDK-8310638 Filtering a TableView with a large number of items freezes the UI controls
JDK-8311127 Regression: The fix for TableView and TreeTableView menu button affects all table column headers controls
JDK-8233955 VM crashes if more than one file are added to ClipboardContent via drag and drop graphics
JDK-8246104 Some complex text doesn’t render correctly on macOS graphics
JDK-8251862 Wrong position of Popup windows at the intersection of 2 screens graphics
JDK-8281327 JavaFX does not support fonts installed per-user on Windows 10/11 graphics
JDK-8290092 Temporary files are kept when call Clipboard.getSystemClipboard().getImage() graphics
JDK-8290866 Apple Color Emoji turns gray after JavaFX version 18 graphics
JDK-8295078 TextField blurry when inside an TitledPane -> AnchorPane graphics
JDK-8299968 Second call to Stage.setScene() create sizing issue with uiScale > 1.0 graphics
JDK-8300872 WebView’s ColorChooser fails to initialize when running in security context graphics
JDK-8302511 HitInfo.toString() throws IllegalArgumentException graphics
JDK-8302797 ArrayIndexOutOfBoundsException in TextRun.getWrapIndex() graphics
JDK-8304831 TextFlow.hitTest.insertionIndex incorrect with surrogate pairs graphics
JDK-8306708 Region.layoutInArea uses incorrect snap scale value graphics
JDK-8306990 The guarantees given by Region’s floor and ceiling functions should work for larger values graphics
JDK-8307542 Call to FcConfigAppFontAddFile uses wrong prototype, arguments graphics
JDK-8309508 Possible memory leak in JPEG image loader graphics
JDK-8309935 Mac – SystemMenuBar, IndexOutOfBoundsException on change graphics
JDK-8304290 Some JNI calls made without checking exceptions in media media
JDK-8306328 Update libFFI to 3.4.4 media
JDK-8194704 Text/TextFlow hitTest() javadoc scenegraph
JDK-8301763 Adding children to wrong index leaves inconsistent state in Parent#childrenSet scenegraph
JDK-8304933 BitSet (used for CSS pseudo class states) listener management is incorrect scenegraph
JDK-8304959 Public API in javafx.css.Match should not return private API class PseudoClassState scenegraph
JDK-8231865 JFXPanel sends resize event with size 0x0 on HiDPI devices swing
JDK-8242419 JFXPanel: MouseEvent always reports that Primary button changed state if held swing
JDK-8299977 Update WebKit to 615.1 web
JDK-8306115 Update libxml2 to 2.10.4 web
JDK-8306329 Update ICU4C to 73.1 web
JDK-8150709 Mac OSX and German Keyboard Layout (Y/Z) window-toolkit
JDK-8275033 Drag and drop a file produces NullPointerException Cannot read field "dragboard" window-toolkit
JDK-8278938 [Win] Robot can target wrong key for punctuation and symbols window-toolkit
JDK-8299348 Size-restricted window can be observed with incorrect dimensions window-toolkit
JDK-8304441 [macos] Crash when putting invalid unicode char on clipboard window-toolkit
JDK-8306121 Scene not rendered initially when changing scenes after fix for JDK-8296621 window-toolkit

List of Security fixes

Issue key Summary Subcomponent
JDK-8304751 (not public) Improve pipeline layout graphics
JDK-8299781 (not public) Improve JFX navigation web
JDK-8303501 (not public) Unable to navigate to relative URLs after fix for JDK-8299781 web