Ohhnews

分类导航

$ cd ..
foojay原文

2026年9月JavaFX链接汇总

#javafx#java#桌面应用#开源#版本发布

以下是 2026 年 9 月的 JavaFX LinksOfTheMonth。这是一个重要的月份,因为 JavaFX 27 发布了!

你可以在 jfx-central.com 上找到每周列表。我们漏掉什么了吗?你希望在之后的某期综述中收录什么内容吗?请通过 [email protected] 告诉我们。

核心

  • 来自 OpenJFX 邮件列表:
    • Alexander Zuev 集成了 8384483:创建 NSAccessibilityTable 协议的实现,这是一次跨 11 个文件、585 行的新增,为 macOS 提供了对表格和列表的适当辅助功能支持:“为了保持功能,为表格和列表创建了单独的原生 peer;列表 peer 目前为了向后兼容而将其角色报告为表格,这一点之后可以更改;修复了长期存在的 bug,即表格报告当前选中行不正确。”由 Andy Goryachev 和 Ambarish Rapte 审阅。PR #2217 --- 变更集 67853fbf
  • Gufran Thakur 在 Reddit 上提问:“JavaFX 的未来会是什么样?”已经有很多有趣的回答。想补充你的看法吗?另外,感谢 Marius Hanl 在回答中提到 JFX Central,我们很感激! :-)
  • Jose Pereda 集成了 8391779:在获得焦点但未选中内容的 WebView 上触发复制键事件后 JVM 崩溃:“这个 PR 给 WebKit/EditorJava.cpp 增加了一个保护措施,以防止将空选区传给剪贴板;在获得焦点但未选中内容的 WebView 上触发复制键事件时,这会导致 JVM 立即终止。”已审阅并于 9 月 8 日集成。(GitHub 上的 PR)
  • 发布周期说明:向后移植到 JavaFX 27.0.1 的截止日期是 9 月 7 日,jfx27u 现已开放接收 27.0.2 修复 —— 由 Kevin Rushforth 宣布,版本号提升由 Ambarish Rapte 集成,时间为 9 月 8 日。
  • JavaFX 27 的发行说明已在 OpenJFX 仓库中发布,列出了此版本包含的所有内容:7 项新功能、20 项其他增强、77 个 bug 修复和 6 个安全修复。
  • Gluon 团队发布了 JavaFX 27 现已可用,概述了此次发布:macOS 上默认使用 Metal 渲染管线、CSS 中的条件样式表和媒体查询、窗口标题栏中的 JavaFX 控件、RichTextArea 的新增功能,以及 70 多个 bug 修复和控件性能改进。升级前有两点需要检查:JavaFX 27 使用 --release 25 编译,因此较旧的 JDK 会在启动时失败;在 macOS 上,你可以通过 -Dprism.order=es2 启动参数回退到之前的管线。
  • JavaFX 27 亮点列出了新增内容:RichTextArea 制表位属性,以及嵌入图像、文本背景和波浪下划线属性;条件样式表导入;ConditionalFeature 和平台媒体查询;标题栏中的 JavaFX 控件;现在会遵循“减少动态效果”偏好的动画;改进的 macOS 辅助功能,包括可导航的静态文本和超链接;通过 GtkFileChooserNative 实现更好的 Flatpak 集成;以及包括 UIWindowScene 支持在内的 iOS 改进。社区修复了 60 多个 bug,依赖项升级到 WebKit 623.1、GStreamer 1.28.3、libxml2 2.15.3 和 libxslt 1.1.45。亮点页面将此次发布的大部分工作归功于 Gluon。
  • Andy Goryachev 集成了 8390913:RichTextArea:当设置了段前和段后间距时,下箭头卡在段落上:“修复了 JDK-8370902 中引入的、在段落间距(段前、段后、行距)非零时导航损坏的问题。”Rich Editor Demo 也已更新,除了段前/段后间距外,还允许设置段落行距(右键单击 → 段落)。这是一次较大的改动,涉及 11 个文件、539 行,由 Jose Pereda 和 Lukasz Kostyra 审阅,于 9 月 15 日集成。(GitHub 上的 PR,变更集)
  • Marius Hanl 集成了 8392149:将 SkinBase 中已弃用的 snap 方法标记为待移除,这对编写自定义皮肤的人是一个提醒:“既然我们将来会在某个时候移除 Region 中的 snapping 方法,那么我们也应该在 SkinBase 中这样做。”这是 JDK-8390773 的延续,由 Kevin Rushforth 和 Andy Goryachev 审阅,于 9 月 15 日集成。(GitHub 上的 PR,变更集)
  • Michael Redlich 为 InfoQ 撰写了 Java 27 发布报道,其中有一节介绍 JavaFX 27:JavaFX 27 与 Helidon 27 和 Jipher 20 一起成为 Oracle Java Verified Portfolio 的新成员,带来了“macOS 上的 Metal 渲染管线,以在现代 Apple 硬件上获得更流畅的性能”、增强的文本编辑控件以及持续的辅助功能改进。
  • Alexander Matveev 在 OpenJFX 中集成了 8331458:用基于 Media Foundation 的 MP4 demux 替换 qtdemux:“在 Windows 上用基于 Media Foundation 的 MP4 demuxer 替换了 qtdemux。来自 MP4 和 fMP4 (HLS) 的 H.264 视频现在使用 Media Foundation 而不是 DirectShow 解码。这一更改避免了新 MP4 demuxer 遇到的若干 DirectShow 问题,并降低了实现复杂度。”该变更集还修复了 8305842(在 Windows 11 上重新初始化时视频有时无法启动)。参见 PR #2206 和 commit 67f70684。
  • Michael Strauß 集成了一个修复,解决带水平滚动条的 TableView 中行消失的问题:“VirtualFlow 将滚动位置存储在两个值中……这两个值可能会变得不一致……这个补丁相当简单:当所有单元格都能容纳时,将 absoluteOffset 设为零。”参见 PR #2317 和 commit。
  • 来自 milchshakee 的公共服务公告(PSA)在 Reddit 上:从 JDK 27 开始,根据 JDK-8248122,你不再需要单独的 Main 类来从 classpath 启动 JavaFX 应用程序。

应用

  • Former_Weather_1174 做了一个本地音乐播放器。“我做了一个基于 JavaFX 的本地音乐播放器。虽然它还相当简陋,但已经具备所有必要功能。我想有些人可能会感兴趣。这是 GitHub 仓库:Kimusic 的链接。”
  • Helal Anwar 分享了 Passport Studio FX 的视频,这是一款桌面应用,旨在为本地照相馆和打印店简化护照和证件照制作。它提供基于 MODNet 和 ONNX Runtime 的 AI 背景移除、按护照尺寸宽高比进行手动裁剪、自定义背景颜色、缩放控制、标准照片尺寸预设,以及带裁切边框的 A4 打印排版生成。技术栈包括 Java、JavaFX、FXML、OpenCV、ONNX Runtime、MODNet、Apache PDFBox、Maven,以及用于 Windows 构建的 jpackage。所有图像都在本地处理,因此不会上传到云端。
  • LooseCartographer989 在 Reddit 上宣布了 NumeHub,声称它是“有史以来构建的最大的 JavaFX 应用程序”:“四年前,我打开了一个 JavaFX 项目,想看看这个平台在崩溃之前能走多远。它从未崩溃。所以我继续做了下去。”NumeHub 是一个单一桌面应用,集成了项目、CRM、销售点系统、WhatsApp 和电子邮件营销活动、文件浏览器、浏览器和系统监控,并在上层有一个 AI 代理(基于 MCP 工具构建),可通过语音或文本回答问题。“数百万个节点。内存不到半 GB。每周都有新版本。”可在 Windows 和 macOS(Apple Silicon 和 Intel)上运行,支持英语、葡萄牙语、中文和德语;如果有需求,计划支持 Linux。它不是开源的,下载地址在这里。该帖子变成了一场有趣的“谁的 JavaFX 应用最大”竞赛,PartOfTheBotnet(9 年、5,440 次提交)、_DystopianSnowman(13 年、约 9 万行代码)和 Siedlerchr 都为 JabRef 发表了看法。
  • Thunder_ZEK 在 Reddit 上分享了他的小项目,Memento:“它是一个会向你提出 100 个问题的应用……关于你的人生,而这 100 个问题的答案基本上就是关于你和你的生活的深度信息。所以回答之后,你可以下载一份 PDF 并分享给任何人。”使用 JDK 17、JavaFX 17、SQLite 和 OpenPDF 构建,除非你导出,否则所有数据都保留在你的设备上。源代码在 GitHub 上。他从 YouTube 教程中学习 JavaFX,并在几个月内构建了这个项目,以证明自己已经掌握了它——包含一个 Windows 安装程序,但“它只能在我的笔记本电脑上运行 lol。”
  • JabRef 团队发布了 JabRef 6.0-beta.1,这是基于 JavaFX 的 BibTeX/BibLaTeX 参考文献管理器的下一个主要版本的首个 beta。亮点:几乎所有内容现在都可以通过键盘导航,并带有视觉指示;支持 Software Heritage 标识符 (SWHID) 的抓取器;来自 themes.jabref.org 的社区主题(Everforest、Nord、Papers、Chocolate Honey 等)可在首选项中预览并选择;每个标签页的图标;以及自动重新连接到共享数据库。GitHub 上的项目。
  • NURI 演示了 StarLore,一款游戏化天文 RPG 桌面应用:“StarLore 是一个基于 JavaFX 的桌面应用,融合了天文学、神话、探索和互动游戏。”## 组件、库、工具
  • Erik Costlow 在 InfoQ 上发表了一篇文章,介绍 FlexGanttFX 走向开源:“Dirk Lemmerman 已将 FlexGanttFX 开源,这是一个用于生成甘特图的资源调度框架。Lemmerman 在该库历经 15 年闭源之后将其开源,一方面是为了提高代码的可用性,另一方面则是采用 AGPL 许可证来应对项目维护的问题。”
  • Guilty_Village_958 在 Reddit 上宣布,luvml 2.1 已发布至 Maven Central,“这是一个类型安全的 Java DSL,将 HTML、CSS 和 Vue 模板统一为一种类型化的创作语言,而非三种语言。”对 JavaFX 开发者来说,真正值得关注的是它的姊妹项目 luvjfx,“一个简洁、类型安全的 JavaFX 构建 DSL”:用嵌套调用取代命令式设置,其属性方法由 JavaFX 本身通过反射自动生成(涵盖 51 种节点类型的 367 项能力),内置单向和双向绑定,并提供了通往原生 JavaFX API 的逃生通道。目前尚未发布任何版本,因此 luvjfx 暂时还没有 Maven 坐标。
  • Chad Preisler 需要一个在大规模下仍然可用的有序列表:“我需要一个在 #JavaFX 中的有序列表,能够在 TableView 中显示数百万条记录,并且仍然保持可用。” mods 项目——“为 JavaFX 提供的新组件,或对现有 JavaFX 功能的增强”——创建于数年前,最近获得了一些线程修复、改进的字符串排序,以及 README 中的使用说明。
  • Florian Enner 发表了一篇文章,即我们上周分享的那段视频背后的文字内容:在 Raspberry Pi 5 上将 JavaFX 27 作为 GraalVM 原生镜像运行。文章对比了 Gluon Substrate(仍基于 GraalVM 23 CE 和 JavaFX 21)、BellSoft 的 Liberica NIK,以及他自己的 StaticFX——后者“在标准工具链上作为常规的 GraalVM Feature 运行”,并保持所有 JavaFX 模块可用,包括 Media 和 Web。对于在 Raspberry Pi 5 上运行 AtlantaFX Sampler,首个窗口的显示时间从 jlink 下的 3.6 秒降至 0.5 秒,访问所有页面后的内存占用从 1,424 MB 降至 634 MB,最终生成的二进制文件约为 33 MB。缺失的可达性元数据仍是最大的障碍,“但在我看来,回报值得你突破最初的门槛。”
  • Dirk Lemmermann 发布了 GemsFX 4.5.0:DialogPane 新增了可取消对话框功能,使得对话框可以通过 ESC 键或专用的取消按钮关闭;为简化对话框选项,PowerPaneApp 中的忙碌按钮被移除;SVGUtil 现在使用默认的加载器上下文,并将 jsvg 更新至 2.2.0。GitHub 上的项目。
  • mkpaz 发布了 AtlantaFX 3.0.0,这是 JavaFX 主题集合的一次重大更新:新增窗口装饰、Scene Builder 插件、主题管理器,以及一个全新的 Sidebar 组件。参见发布说明与变更日志。
  • Techsenger 团队在 Reddit 上介绍了 PatternFX:这是一个提供 MVC、MVP 和 MVVM 模板的框架,三者共享同一套架构基础。它将窗口建模为可动态组合的组件树,每个组件都用三种模板之一构建,并通过类型安全的“端口”而非总线来组织组件间的通信。其他特性包括组件生命周期支持、组件继承、历史记录保留、组件级日志记录,以及无 FXML 的设计,并附带一个用三种模板实现同一示例的演示。他们的 ShellFX 平台便构建于其上。

播客、视频、图书

  • Josh Long 发布了两段视频,主题是如何将 Spring Boot、JavaFX、GraalVM 原生镜像和 Spring Security 结合起来构建桌面应用:“原生、极快、动态、高效、可复用的桌面应用,在 Mac、Windows 和 Linux 上都能良好运行,外观出色,同时内存占用只相当于类似 Electron 应用的一小部分”。This Week in Spring, September 8th, 2026 也提及了此事。
  • Florian Enner 发布了一段短视频,JavaFX 27 Native Image running AtlantaFX Sampler on Raspberry Pi 5,展示了 AtlantaFX Sampler——它使用了所有控件以及 JavaFX 提供的几乎所有特性——作为提前编译(AOT)的 JavaFX 27 原生镜像,用最新的 Oracle GraalVM 25.3 创建:“一切都能正常工作,包括 javafx.media、javafx.web,以及用于打开文件的桌面集成。”该原生镜像使用他的 jfx-static-feature 构建,这是一个 GraalVM Feature,可将 JavaFX 原生代码静态链接为独立可执行文件,在 Windows、Linux 和 macOS 上支持富文本、WebView 和媒体功能,且同时支持 Intel 和 ARM 架构。
  • Artistic_Solution117 分享了一段视频,内容是“Java-EARTH-GLOBE-1 的第二次测试。一次成像的纯 JavaFX Google Earth / Nasa Worldwind 风格查看器。在 JVM 上实时运行,即 agent 运行的地方。使用 gemini 3.8 flash 构建,具备 24 核光线追踪和本地磁盘缓存”。
  • Chad Preisler 分享了一段纯 JavaFX Kafka 客户端的演示视频:“来看看我的纯 #JavaFX Kafka 客户端应用吧。这个项目从我第一次展示它以来已经走过了很长的路。我觉得它非常实用。希望你们喜欢。”Visual Kafka (VK) Demo 在 Chad Preisler 的 YouTube 频道上完整演示了最终成果。我们在 2023 年 2 月曾分享过这个项目的一个非常早期的版本,当时它还只是“一个非常基础的 Kafka 主题查看器”。

教程

  • Creating a Simple 3D Platformer Game Using JavaFX 是 RottenWiFi 团队撰写的一篇分步指南,带领读者构建一个可玩的 3D 平台游戏原型,包含玩家角色、多个平台、重力、WASD 移动与跳跃、轴对齐包围盒碰撞检测、坠落重生,以及一个目标平台。文章从 Maven 配置和相机设置入手,逐步讲解帧率无关的移动和逐轴碰撞解析。其重点在于基础概念——场景图、坐标系和物理——而非生产级工具,正如文中所说:“JavaFX 是一个带有 3D 图形功能的桌面应用框架,而非一套完整的商业游戏引擎”。

杂项

  • Nirvex1 在 Reddit 上寻求建议,他正在使用 Java 11、JavaFX、Maven、Hibernate 和 MariaDB 构建一个桌面人才招聘系统:“到目前为止,最具挑战性的部分之一是管理大约 17 个不同的 FXML 视图,并将它们全部与其控制器正确连接起来。我还不得不花相当多的时间去理解 module-info.java、资源路径,以及在一个模块化的 JavaFX 应用中所有部分是如何协同工作的。幸运的是,这部分终于稳定下来了。”问题涉及 Hibernate 会话管理和 LazyInitializationException、如何在不冻结 UI 的情况下运行数据库查询,以及哪些线程模式和架构选择能让大型多视图 JavaFX 应用保持可维护性。最初的回答大多主张在桌面客户端与数据库之间加入一个后端服务,而不是直接连接数据库。

  • enthalpyzx 在 Reddit 上发起了一场讨论:“JavaFX 如何吸引更多开发者?”,其视角来自一位尚未编写过 JavaFX 应用、但对其所见颇为喜欢的人:“我注意到 JavaFX 非常擅长做一些我从未想象过的了不起的事情。”讨论中提出的开放性问题包括:JavaFX 的多平台能力究竟如何,应用能否在每个桌面平台上都看起来原生(AtlantaFX 被提及为可能的答案,此外还有 Java-GI 和 QtJambi 等封装库),为什么托盘图标和通知之类的功能仍然需要 AWT,以及最重要的是缺乏单一推荐的工作方式:“我希望 Gluon 或 Oracle 能站出来说:看,现在事情就是这么运作的,桌面应用该这么做,移动应用该这么做,这是你必须使用的库。”还有人询问:The Definitive Guide to Modern Java Clients with JavaFX 和 Learn JavaFX 17 是否是好的入门材料?

  • indyjoe 在 Reddit 上询问,有哪些好方案能在尽量少重写的前提下于浏览器中运行 JavaFX,同时仍保留桌面版本、支持较大的每客户端数据模型,并能扩展到数百个并发用户。讨论权衡了 WebFX(前景不错,但控件支持有限,且基本上是一个人的项目)、CheerpJ(对 AWT/Swing 支持良好,但 JavaFX 尚无时间表)、Gluon(一个旧原型,在没有资金支持的情况下未再更新)、JPro(服务端渲染,对于具有大量每用户数据的应用是个顾虑),以及 GraalVM 到 WASM 的路径是否可行。## JFX Central

  • 八月的 JavaFX 每周链接已汇总并发布在 Foojay.io 上。

  • JFX Central 上的新内容:

  • 使用 Spring Security 和 OAuth 2.0 保护 JavaFX 桌面应用程序
    分享此页面

  • Bluesky

  • Mastodon

  • LinkedIn

  • Reddit

  • Hacker News

  • 电子邮件

  • 复制链接

  • 分享...

发现错误或想补充内容?在 GitHub 上编辑此页面 [LOADING...]
作者

Frank Delporte

Frank Delporte 是一位 Java Champion、Java 开发者、Azul 高级技术文档工程师、博主,著有《Java 树莓派编程——电子与物联网项目实践指南》,并且是 Pi4J、Lottie4J、Sheetmusic4J 等项目的开源贡献者……

相关文章

JavaFX [LOADING...]
Frank Delporte2026年8月31日 222 次浏览

2026 年 8 月 JavaFX 链接

JavaFX JavaFX [LOADING...]
Frank Delporte2026年7月31日 544 次浏览

2026 年 7 月 JavaFX 链接

JavaFX JavaFX [LOADING...]
Frank Delporte2026年6月30日 471 次浏览

2026 年 6 月 JavaFX 链接

JavaFX JavaFX [LOADING...]
Frank Delporte2026年5月31日 543 次浏览

2026 年 5 月 JavaFX 链接

JavaFX

参与讨论

JavaFX [LOADING...]
Frank Delporte2026年8月31日 222 次浏览

2026 年 8 月 JavaFX 链接

JavaFX JavaFX [LOADING...]
Frank Delporte2026年7月31日 544 次浏览

2026 年 7 月 JavaFX 链接

JavaFX JavaFX [LOADING...]
Frank Delporte2026年6月30日 471 次浏览

2026 年 6 月 JavaFX 链接

JavaFX JavaFX [LOADING...]
Frank Delporte2026年5月31日 543 次浏览

2026 年 5 月 JavaFX 链接

JavaFX