【发布时间】:2020-07-30 01:43:57
【问题描述】:
从我的角度来看,JavaFX 比 Swing 更现代且更易于使用。
我看了一个Oracle employee写的关于future of JavaFX的文档,偶然发现一句话:
Oracle 重申 Swing 和 AWT 仍然是 Java SE 的核心 跨所有 Java SE 版本和支持的 Oracle 技术 时间表。
为什么较新的 JavaSE 版本支持 Swing,但 JavaFX 不支持?
【问题讨论】:
从我的角度来看,JavaFX 比 Swing 更现代且更易于使用。
我看了一个Oracle employee写的关于future of JavaFX的文档,偶然发现一句话:
Oracle 重申 Swing 和 AWT 仍然是 Java SE 的核心 跨所有 Java SE 版本和支持的 Oracle 技术 时间表。
为什么较新的 JavaSE 版本支持 Swing,但 JavaFX 不支持?
【问题讨论】:
这是一个商业问题。
一个答案是,他们希望能够将 JavaFX 发布周期与主要 Java SE 发布周期分开。尽管事实证明 JavaFX 遵循新的 Java SE 发布节奏。
第二个答案是,将它们分开可能会使项目治理更简单。
但为什么是 JavaFX 而不是 Swing?
再次,商业原因:
JavaFX 被认为比 Swing 更“利基”。因此,将其分开被认为更容易接受。
Swing(和 AWT)是旧项目中广泛使用的技术。过去,我指的是已经存在 20 多年的“成熟”/“遗留”项目。分离 Swing 更有可能破坏更多旧项目。
“破坏”旧客户代码或实践的重大更改不利于 Oracle 的业务模式。它们惹恼了支付大量 Java 许可费用的企业客户,他们可能正在考虑“战略性地”切换到其他语言。
Swing(和 AWT)尚未在积极开发中,因此它们通常不会像 JavaFX 那样对主要的 Java SE 计划造成拖累。
无论如何,这一切都没有实际意义。拆分 JavaFX 而不是 Swing 的决定是多年前做出的。它发生了。忍受它。
【讨论】:
jlink / jpackage 时这并不重要,因为它们都创建了特定于平台的自包含应用程序)。