JavaFX 27 Release Notes

The following contains all of the release notes for JavaFX 27 releases:

JavaFX 27

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 27 release.

Supported Runtimes

JavaFX 27 requires JDK 25 or later. JDK 27 is recommended.

Supported Platforms

JavaFX 27 is available for Linux x86_64, Windows x86_64, and macOS AArch64.

Important Changes

  • JavaFX 27 Requires JDK 25 or Later (JDK-8376601)

    JavaFX 27 is compiled with --release 25 and thus requires JDK 25 or later to run. If you attempt to run a JavaFX 27 application with an older JDK, the Java launcher will exit with an error message indicating that the javafx.base module cannot be read.

  • Metal Is the Default Rendering Pipeline on macOS (JDK-8373091)

    Metal is now the default rendering pipeline on macOS, replacing the OpenGL-based ES2 pipeline. Applications will benefit from a modern, faster, and low-power graphics API. If needed, applications can revert to the ES2 pipeline by adding -Dprism.order=es2 to the command line.

List of New Features

# Link Area Summary
1 JDK-8356042 javafx/controls RichTextArea: tab stops attributes
2 JDK-8366198 javafx/controls RichTextArea: embedded image, text background, wavy underline attributes
3 JDK-8364149 javafx/graphics Conditional stylesheet imports
4 JDK-8374804 javafx/graphics ConditionalFeature media queries
5 JDK-8374822 javafx/graphics Platform media query
6 JDK-8386617 javafx/graphics JavaFX controls in the title bar

List of Other Enhancements

# Link Area Summary
1 JDK-8343133 javafx/accessibility Create implementation of NSAccessibilityNavigableStaticText protocol
2 JDK-8379150 javafx/accessibility [macos] [a11y] Create implementation of accessibility protocol for hyperlink
3 JDK-8370902 javafx/controls RichTextArea: migrate to new text APIs
4 JDK-8374809 javafx/controls [RichTextArea] accessibility
5 JDK-8380933 javafx/controls TableView sorting very slow when many cells selected
6 JDK-8385533 javafx/controls Cell "focused" PseudoClass handling is unnecessary
7 JDK-8377904 javafx/graphics Replace Double.parseDouble() with CssNumberParser
8 JDK-8378895 javafx/graphics Reduce object allocations in Renderer.getPeerInstance()
9 JDK-8378970 javafx/graphics Don't use exceptions for flow control in CssParser.colorValueOfString()
10 JDK-8385459 javafx/other Animations should respect reducedMotion preference
11 JDK-8389371 javafx/other cssref: explain font properties
12 JDK-8377427 javafx/scenegraph Reduce substring allocations in Color.web(String, double)
13 JDK-8358823 javafx/window-toolkit Improve documentation of custom header bars
14 JDK-8374630 javafx/window-toolkit Replace GtkFileChooserDialog with GtkFileChooserNative to allow for better Flatpak integration

List of Fixes

# Link Area Summary
1 JDK-8195614 javafx/base FilteredList throws ArrayIndexOutOfBoundsException if created with 1 element
2 JDK-8195750 javafx/base FilteredList throws ArrayIndexOutOfBoundsException on ListChangeEvent with multiple change
3 JDK-8208758 javafx/base ListChangeBuilder doesn't shift indices after idempotent change pairs
4 JDK-8237868 javafx/base java.lang.IndexOutOfBoundsException in FilteredList
5 JDK-8359020 javafx/base TabObservableList.reorder changes content of filtered list
6 JDK-8387655 javafx/base java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()" because "newValue" is null
7 JDK-8181411 javafx/controls Performance problem with TreeTableView selectAll()
8 JDK-8202066 javafx/controls ListView with large number of rows is extremly slow when changing current multiple selection to a subset
9 JDK-8256142 javafx/controls TreeView: initial focused item incorrect
10 JDK-8274928 javafx/controls JavaFX virtual keyboard missing ^ character
11 JDK-8301283 javafx/controls Util methods for computing text/width height giving up some performance
12 JDK-8303060 javafx/controls ChoiceBox: adding ~1000 items takes a long time
13 JDK-8311505 javafx/controls Deselection of TableView rows is slow
14 JDK-8338145 javafx/controls ComboBox popup is in wrong location on first showing
15 JDK-8351094 javafx/controls macOS: MenuBar with custom menu items disappears
16 JDK-8365938 javafx/controls FileChooser: initialDirectory must be a valid folder
17 JDK-8372398 javafx/controls [macOS] Shown ContextMenu does not close when macOS system menu is clicked
18 JDK-8375444 javafx/controls MenuButton - textTruncated Property is always false
19 JDK-8376492 javafx/controls NullPointer in ContextMenu sub-menu when graphic and style classes are changed while the menu is open
20 JDK-8377393 javafx/controls RichTextArea: failed to export null color attribute value
21 JDK-8379662 javafx/controls TreeTableView: initial focused item incorrect
22 JDK-8380216 javafx/controls [macos] Missing dispatch_release in the GlassAplication class
23 JDK-8380308 javafx/controls TreeView: selection of many rows is slow
24 JDK-8380926 javafx/controls HeavyweightDialog does not check for a valid stage
25 JDK-8380935 javafx/controls TextFieldSkin caret width calculation is broken
26 JDK-8384006 javafx/controls ComboBox text does not update on String converter update
27 JDK-8384806 javafx/controls ComboBox converter does not properly update contained null values
28 JDK-8385666 javafx/controls Fix for JDK-8384806 broke combo box cell graphics
29 JDK-8385959 javafx/controls Prompt text should be visible in empty focused TextInputControls
30 JDK-8154847 javafx/graphics Rendering is incorrect or not visible with StageStyle.UNIFIED on some graphics cards
31 JDK-8369348 javafx/graphics Failed assertion with scissor rect when Metal API Validation is enabled
32 JDK-8373527 (not public) javafx/graphics Improve Graphics playback
33 JDK-8373688 javafx/graphics Wrong render scale is used if Window is on another screen when Scene is sized
34 JDK-8375070 javafx/graphics NPE in Scene.ClickGenerator::preProcess when mouse button is none
35 JDK-8375227 javafx/graphics Silent OOBE in NGGroup::renderContent
36 JDK-8375363 javafx/graphics StyleHelper.resetToInitialValues() interrupts animated properties
37 JDK-8375561 javafx/graphics Class NGGroup is in need of some cleanup
38 JDK-8377153 javafx/graphics JavaFX FlowPane layout causing improper wrapping of TextFlow nodes with max-width styling
39 JDK-8379209 javafx/graphics Uninitialised variable in pathApplierFunctionFast of coretext.c
40 JDK-8379211 javafx/graphics Uninitialised memory in Java_com_sun_javafx_font_freetype_OSFreetype_FT_1Outline_1Decompose
41 JDK-8379257 javafx/graphics Update JPEG Image Decoding Software to 10
42 JDK-8382883 javafx/graphics JavaFX on Linux crashed after some time when ES2Context.makeCurrent() was called
43 JDK-8383783 javafx/graphics MediaQueryParser should reject query lists without comma separator
44 JDK-8386590 javafx/graphics GridPane - content-biased child spanning multiple columns/rows is sized ignoring hgap/vgap
45 JDK-8387337 javafx/graphics GlassClipboard: Replace deprecated hash_map and hash_set
46 JDK-8378510 javafx/media Provide media support for libavcodec version 62
47 JDK-8379206 javafx/media 4 Null pointer dereference defect groups in 4 glib files
48 JDK-8379207 (not public) javafx/media Improve audio conversion
49 JDK-8379210 javafx/media Null pointer dereference in gst_value_compare_fraction of gstvalue.c
50 JDK-8379213 javafx/media 3 Null pointer dereference defect groups in dlmalloc.c
51 JDK-8379561 javafx/media Remove UNICODE related code from GLib
52 JDK-8381447 javafx/media Remove G_DISABLE_CHECKS compiler flag on Windows to align GLib/GStreamer compilation with macOS/Linux
53 JDK-8383129 (not public) javafx/media Better Handling of MP4 Files
54 JDK-8383143 (not public) javafx/media Enhance Playlist Loading
55 JDK-8384809 javafx/media Update GStreamer to 1.28.3
56 JDK-8375016 javafx/other Several catch blocks for NullPointerExceptions exist in the codebase
57 JDK-8376836 javafx/other Fix mistakes in FX API docs
58 JDK-8388526 javafx/other [Windows] Crash in Platform.Preferences refresh on OS theme change when using FXCanvas
59 JDK-8384814 javafx/scenegraph [macOS] Trackpad scroll gestures suddenly stop
60 JDK-8389093 javafx/scenegraph Typos in the JavaFX CSS Reference Guide
61 JDK-8341852 javafx/web Fix potential threading issue in WebView's RTImage
62 JDK-8364680 javafx/web HelloWebView demo crashes when msn webpage is scrolled
63 JDK-8368572 javafx/web Update WebKit to 623.1
64 JDK-8375084 javafx/web Update libxslt to 1.1.45
65 JDK-8377099 javafx/web Additional WebKit 623.1 fixes from WebKitGTK 2.50.4
66 JDK-8377930 javafx/web Additional WebKit 623.1 fixes from WebKitGTK 2.50.5
67 JDK-8378226 javafx/web Animated GIFs do not animate after WebKit 620.1 update
68 JDK-8378277 (not public) javafx/web Improve Editor selection
69 JDK-8380557 javafx/web Additional WebKit 623.1 fixes from WebKitGTK 2.50.6
70 JDK-8383092 (not public) javafx/web Enhance WebView Resource Loading
71 JDK-8384522 javafx/web Update libxml2 to 2.15.3
72 JDK-8263959 javafx/window-toolkit Unexpected disable behaviour on macOS MenuBar
73 JDK-8335541 javafx/window-toolkit [macOS] Help system menu won't hide or it is shown twice
74 JDK-8352298 javafx/window-toolkit FileChooser: inconsistent behavior with setInitialName()
75 JDK-8381517 javafx/window-toolkit GlassViewDelegate::convertNSStringToJString can return uninitialized value
76 JDK-8382165 javafx/window-toolkit Emojis used in Stage.setTitle are not rendered and break application switching on Linux platform
77 JDK-8387626 javafx/window-toolkit java.lang.NullPointerException: Cannot invoke "com.sun.glass.ui.Window.isMinimized()" because "this.platformWindow" is null
78 JDK-8388508 javafx/window-toolkit [macOS] MenuItem graphics in the system menu bar is corrupted or disappears, or JVM crashes in CoreGraphics, under memory pressure