Planned versions
Version | Planned release date |
---|---|
21.0.6 | January 21, 2025 |
21.0.7 | April 25, 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.5 | October 15, 2024 | release notes |
21.0.4 | July 16, 2024 | 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.5
List of Enhancements
Issue key | Summary | Subcomponent |
---|---|---|
JDK-8334874 | Horizontal scroll events from touch pads should scroll the TabPane tabs | controls |
List of Fixed Bugs
Issue key | Summary | Subcomponent |
---|---|---|
JDK-8323787 | Mac System MenuBar throws IOB exception | graphics |
JDK-8328994 | Update WebKit to 619.1 | web |
JDK-8329011 | Update SQLite to 3.45.3 | web |
JDK-8331765 | Websocket callbacks are not executed after WebKit 617.1 update | web |
JDK-8334713 | WebKit build failed on LoongArch64 because currentStackPointer is undefined | web |
JDK-8318841 | macOS: Memory leak with MenuItem when Menu.useSystemMenuBar(true) is used | window-toolkit |
JDK-8319779 | SystemMenu: memory leak due to listener never being removed | window-toolkit |
Release Notes for JavaFX 21.0.4
List of Fixed Bugs
Issue key | Summary | Subcomponent |
---|---|---|
JDK-8329705 | Add missing Application thread checks to platform specific a11y methods | accessibility |
JDK-8330462 | StringIndexOutOfBoundException when typing anything into TextField | accessibility |
JDK-8331748 | Update libxml2 to 2.12.6 | web |
JDK-8332539 | Update libxml2 to 2.12.7 | web |
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 cnn.com in WebView | web |
JDK-8315657 | Application window not activated in macOS 14 Sonoma | window-toolkit |
Release Notes for JavaFX 21
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 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
, orTreeItem
, and overridesaddEventHandler
orremoveEventHandler
- An application class that is not a subclass of
Node
implements their ownaddEventHandler
orremoveEventHandler
using a signature other than that of the newly added methods (for example, copying the same incorrect pattern thatMenuItem
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 |