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.
Supported Platforms
JavaFX 25 is available for Linux x86_64, Windows x86_64, macOS AArch64, and macOS x86_64.
List of Enhancements
| # | Link | Area | Summary |
|---|---|---|---|
| 1 | JDK-8271024 | javafx/graphics | Implement macOS Metal Rendering Pipeline |
List of Fixes
| # | Link | Area | Summary |
|---|---|---|---|
| 1 | JDK-8378507 | javafx/accessibility | JavaFX CSS Reference skips heading levels: <h2> followed by <h4> |
| 2 | JDK-8378366 | javafx/accessibility | Accessibility issues in CSS Reference Guide and Introduction to FXML |
| 3 | JDK-8372453 | javafx/window-toolkit | [macOS] Iconifying owner may not iconify owned window |
| 4 | JDK-8371052 | javafx/media | Update libFFI to 3.5.2 |
| 5 | JDK-8370632 | javafx/web | Additional libxslt 1.1.43 fixes |
| 6 | JDK-8368879 | javafx/graphics | Intermittent crash on exit when disposing MTLRTTextureData |
| 7 | JDK-8368691 | javafx/web | Update libxml2 to 2.14.6 |
| 8 | JDK-8368631 | javafx/graphics | Avoid updating disposed MTLTexture |
| 9 | JDK-8368166 | javafx/graphics | Media query should accept multiple rules |
| 10 | JDK-8368021 | javafx/window-toolkit | Window buttons of extended RTL stage are on the wrong side |
| 11 | JDK-8367602 | javafx/controls | Regression: TabPane with wrapped label calculates wrong initial size |
| 12 | JDK-8367578 | javafx/web | Additional WebKit 622.1 fixes from WebKitGTK 2.48.7 |
| 13 | JDK-8367370 | javafx/window-toolkit | Accent color platform preference not updating in macOS 26 (Tahoe) |
| 14 | JDK-8366744 | javafx/web | Update SQLite to 3.50.4 |
| 15 | JDK-8366217 | javafx/media | Update GStreamer to 1.26.5 |
| 16 | JDK-8361644 | javafx/web | Update ICU4C to 77.1 |
| 17 | JDK-8350479 | javafx/window-toolkit | SW pipeline should use default pipeline in Glass |
| 18 | JDK-8335748 | javafx/graphics | Rippling of frame on scrolling |
OpenJFX 25.0.1
These release notes refer to the OpenJFX 25.0.1. There is no equivalent JavaFX 25.0.1.
List of Fixes
| # | Link | Area | Summary |
|---|---|---|---|
| 1 | JDK-8361648 | javafx/media | Update Glib to 2.84.3 |
| 2 | JDK-8360270 | javafx/web | Websocket communication issues with Vaadin applications through webview |
| 3 | JDK-8356982 | javafx/web | Update WebKit to 622.1 |
| 4 | JDK-8328684 | javafx/web | HellowWebView demo crashes when a webpage is scrolled |
Important Changes
-
javafx/build
-
JavaFX 25 Requires JDK 23 or Later (JDK-8359387)
JavaFX 25 is compiled with
--release 23and thus requires JDK 23 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 thejavafx.basemodule cannot be read.
-
-
javafx/graphics
-
JavaFX Applications No Longer Need --sun-misc-unsafe-memory-access=allow (JDK-8334137)
It is no longer necessary to pass
--sun-misc-unsafe-memory-access=allow to javaon the command line when running JavaFX applications. The bug that formerly caused this option to be needed has been fixed.
-
-
javafx/window-toolkit
-
JavaFX Requires GTK 3.20 or Later on Linux (JDK-8359396)
On Linux platforms, JavaFX requires GTK3 version 3.20 or later. An exception will be thrown when initializing the JavaFX runtime if the GTK 3 library cannot be loaded or is older than 3.20.
-
Removed Features and Options
-
javafx/graphics
-
A Deprecated TransitionEvent Constructor Has Been Removed (JDK-8353617)
The
TransitionEvent(EventType, StyleableProperty, Duration)constructor was deprecated for removal in JavaFX 24 and has now been removed. Application developers should useTransitionEvent(EventType, StyleableProperty, String, Duration)instead.
-
List of New Features
| # | Link | Area | Summary |
|---|---|---|---|
| 1 | JDK-8355774 | javafx/controls | RichTextArea: provide mechanism for CSS styling of highlights |
| 2 | JDK-8357594 |
javafx/controls |
Additional geometry-based Text/TextFlow APIs |
| 3 | JDK-8313424 | javafx/graphics | JavaFX controls in the title bar (Preview) |
| 4 | JDK-8314482 | javafx/graphics | TextFlow: TabStopPolicy |
| 5 | JDK-8341670 | javafx/graphics | [Text,TextFlow] Public API for Text Layout Info |
| 6 | JDK-8345348 | javafx/graphics | CSS media feature queries |
List of Other Enhancements
| # | Link | Area | Summary |
|---|---|---|---|
| 1 | JDK-8313556 |
javafx/accessibility |
Create implementation of NSAccessibilitySlider protocol |
| 2 | JDK-8313558 | javafx/accessibility | Create implementation of NSAccessibilityStepper protocol |
| 3 | JDK-8350316 | javafx/accessibility | Create implementation of NSAccessibilityProgressIndicator protocol |
| 4 | JDK-8351773 | javafx/accessibility | Create implementation of NSAccessibilityGroup protocol |
| 5 | JDK-8356983 | javafx/accessibility | Create implementation of NSAccessibilityImage protocol |
| 6 | JDK-8359257 | javafx/accessibility | Create accessibility protocol for TabGroup component |
| 7 | JDK-8361379 | javafx/accessibility | [macos] Refactor accessibility code to retrieve attribute by name |
| 8 | JDK-8335547 | javafx/controls | Support multi-line prompt text for TextArea |
| 9 | JDK-8358255 | javafx/graphics | Factor out boilerplate code of EventHandler properties in Scene and Window |
| 10 | JDK-8337960 | javafx/media | Improve performance of mfwrapper by reusing GStreamer media buffers for decoded video |
| 11 | JDK-8349373 | javafx/other | Support JavaFX preview features |
List of Fixes
| # | Link | Area | Summary |
|---|---|---|---|
| 1 | JDK-8357157 | javafx/animation | Exception thrown from AnimationTimer freezes application |
| 2 | JDK-8170720 | javafx/base | VetoableListDecorator: Indexes to remove are not aggregated |
| 3 | JDK-8233179 | javafx/base | VetoableListDecorator#sort throws IllegalArgumentException "duplicate children" |
| 4 | JDK-8347753 | javafx/base | VetoableListDecorator doesn't accept its own sublists for bulk operations |
| 5 | JDK-8351038 | javafx/base | ConcurrentModificationException in EventType constructor |
| 6 | JDK-8351276 | javafx/base | Prevent redundant computeValue calls when a chain of mappings becomes observed |
| 7 | JDK-8358770 | javafx/build | incubator.richtext pom missing dependency on incubator.input |
| 8 | JDK-8361713 | javafx/build | JavaFX API docs overview is missing an intro section |
| 9 | JDK-8089080 | javafx/controls | [TextArea] Caret disappear after pressing backspace to clear the content |
| 10 | JDK-8185887 | javafx/controls | TableRowSkinBase fails to correctly virtualize cells in horizontal direction |
| 11 | JDK-8207333 | javafx/controls | [Linux, macOS] Column sorting is triggered always after context menu request on table header |
| 12 | JDK-8252566 | javafx/controls | TreeTableView: broken row layout for fixedCellSize |
| 13 | JDK-8276326 | javafx/controls | Empty Cells in TableView supposedly after using setFixedCellSize() |
| 14 | JDK-8277000 | javafx/controls | Tree-/TableRowSkin: replace listener to fixedCellSize by live lookup |
| 15 | JDK-8299753 | javafx/controls | Tree/TableView: Column Resizing With Fractional Scale |
| 16 | JDK-8299755 | javafx/controls | Tree/TableView: Cursor Decouples From Divider When Resizing With Fractional Scale |
| 17 | JDK-8333275 | javafx/controls | ComboBox: adding an item from editor changes editor text |
| 18 | JDK-8335587 | javafx/controls | TextInputControl: Binding prompt text that contains linebreak causes exception |
| 19 | JDK-8340344 | javafx/controls | The first item in TreeView is not aligned in the beginning |
| 20 | JDK-8341281 | javafx/controls | Root TreeItem with null value breaks TreeTableView |
| 21 | JDK-8346824 | javafx/controls | Collapsing tree view causes rendering issues |
| 22 | JDK-8347392 | javafx/controls | Thread-unsafe implementation of c.s.j.scene.control.skin.Utils |
| 23 | JDK-8348100 | javafx/controls | Tooltips cannot be instantiated on background thread |
| 24 | JDK-8349091 | javafx/controls | Charts: exception initializing in a background thread |
| 25 | JDK-8349098 | javafx/controls | TabPane: exception initializing in a background thread |
| 26 | JDK-8349105 | javafx/controls | Pagination: exception initializing in a background thread |
| 27 | JDK-8349255 | javafx/controls | TitledPane: exception initializing in a background thread |
| 28 | JDK-8349756 | javafx/controls | Memory leak in PaginationSkin when setting page count / index |
| 29 | JDK-8349758 | javafx/controls | Memory leak in TreeTableView |
| 30 | JDK-8350976 | javafx/controls | MenuBarSkin: exception initializing in a background thread |
| 31 | JDK-8351047 | javafx/controls | TitledPane should handle titles that are resizable |
| 32 | JDK-8351368 | javafx/controls | RichTextArea: exception pasting from Word |
| 33 | JDK-8351878 | javafx/controls | RichTextArea: copy/paste issues |
| 34 | JDK-8355012 | javafx/controls | JavaFX modena.css -fx-highlight-text-fill bug |
| 35 | JDK-8355415 | javafx/controls | RichTextArea: NPE in VFlow::scrollCaretToVisible |
| 36 | JDK-8355615 | javafx/controls | ConcurrentModificationException creating MenuBar on background thread |
| 37 | JDK-8357393 | javafx/controls | RichTextArea: fails to properly save text attributes |
| 38 | JDK-8364049 | javafx/controls | ToolBar shows overflow menu with fractional scale |
| 39 | JDK-8364088 | javafx/controls | ToolBarSkin: NPE in select() |
| 40 | JDK-8281384 | javafx/graphics | Random chars on paste from Windows clipboard |
| 41 | JDK-8318985 | javafx/graphics | [macos] Incorrect 3D lighting on macOS 14 and later |
| 42 | JDK-8342530 | javafx/graphics | Specifying "@Nx" scaling level in ImageStorage should only load that specific level |
| 43 | JDK-8349256 | javafx/graphics | Update PipeWire to 1.3.81 |
| 44 | JDK-8350149 | javafx/graphics | VBox ignores bias of child controls when fillWidth is set to false |
| 45 | JDK-8351067 | javafx/graphics | Enforce Platform threading use |
| 46 | JDK-8351867 | javafx/graphics | No UI changes while iconified |
| 47 | JDK-8353632 | javafx/graphics | [Linux] Undefined reference to PlatformSupport::OBSERVED_SETTINGS with C++14 |
| 48 | JDK-8353845 | javafx/graphics | com.sun.javafx.css.BitSet.equals(null) throws NPE |
| 49 | JDK-8354797 | javafx/graphics | Parent.needsLayoutProperty() should return read-only getter |
| 50 | JDK-8354813 | javafx/graphics | Parent.isNeedsLayout() may return wrong value in property listener |
| 51 | JDK-8357004 | javafx/graphics | Windows platform color changes are not picked up in some cases |
| 52 | JDK-8358454 | javafx/graphics | Wrong <br> tags in cssref.html |
| 53 | JDK-8329227 | javafx/media | Seek might hang with fMP4 H.265/HEVC or H.265/HEVC over HTTP/FILE |
| 54 | JDK-8357714 | javafx/media | AudioClip.play crash on macOS when loading resource from jar |
| 55 | JDK-8088343 | javafx/other | Race condition in javafx.concurrent.Task::cancel |
| 56 | JDK-8350048 | javafx/other | Enforce threading restrictions for show and hide methods in Window, Control, and Skin |
| 57 | JDK-8245602 | javafx/samples | Ensemble8: HTMLEditor Toolbar gets scrolled out of view |
| 58 | JDK-8146479 | javafx/scenegraph | Scene is black after stage is restored (content changed while minimized) |
| 59 | JDK-8340322 | javafx/web | Update WebKit to 620.1 |
| 60 | JDK-8352162 | javafx/web | Update libxml2 to 2.13.8 |
| 61 | JDK-8352164 | javafx/web | Update libxslt to 1.1.43 |
| 62 | JDK-8354876 | javafx/web | Update SQLite to 3.49.1 |
| 63 | JDK-8354940 | javafx/web | Fail to sign in to Microsoft sites with WebView |
| 64 | JDK-8176813 | javafx/window-toolkit | Mac: Failure to exit full-screen programmatically in some cases |
| 65 | JDK-8348095 | javafx/window-toolkit | [Linux] Menu shows up in wrong position when using i3 windows manager in full screen mode |
| 66 | JDK-8351733 | javafx/window-toolkit | Crash when creating too many nested event loops |
| 67 | JDK-8353314 | javafx/window-toolkit | macOS: Inconsistent fullscreen behavior |
| 68 | JDK-8353548 | javafx/window-toolkit | [macOS] DragEvent.getScreenY() returns incorrect value in secondary monitor |
| 69 | JDK-8354478 | javafx/window-toolkit | Improve StageStyle documentation |
| 70 | JDK-8354631 | javafx/window-toolkit | [macos] OpenURIHandler events not received by AWT when JavaFX is primary toolkit |
| 71 | JDK-8356652 | javafx/window-toolkit | Input field ignores custom input source characters |
| 72 | JDK-8357584 | javafx/window-toolkit | [XWayland] [OL10] Robot.mousePress() is delivered to wrong place |
| 73 | JDK-8363813 | javafx/window-toolkit | Missing null check in GlassScreen |