【问题标题】:Is JavaFX complete replacement of Swing?JavaFX 是否完全替代了 Swing?
【发布时间】:2013-02-28 01:23:21
【问题描述】:

我有一个 Java 桌面应用程序,其中图形用户界面是在摇摆中设计的。在我们知道JavaFX replacing Swing 之后,我们已经用JavaFX 替换了图形用户界面。

"6. JavaFX 是否正在取代 Swing 作为 Java 的新客户端 UI 库 东南?是的。然而,Swing 仍将是 Java SE 规范的一部分 在可预见的未来,并包含在 JRE 中。一方面, Swing 广泛用于现有的 Java 桌面应用程序,但依赖于 在旧架构上,这需要一定程度的专业知识 和专业化。另一方面,JavaFX 具有一组现代的 可以使用标准 CSS 技术进行皮肤设置的 UI 控件。尽管 我们建议开发人员尽可能多地利用 JavaFX API 在构建新应用程序时,可以使用 Swing 和 JavaFX 在同一个应用程序中,允许开发人员扩展现有的 Swing 应用程序。”

现在我们听说甲骨文将 JavaFX 工具包捐赠给开源社区,OpenJDK 社区已经同意接受。

JavaFX 工具包是从 Sun 的 F3 项目演变而来的。最初的 版本基于 JavaFX 脚本语言,然而,在 2011 年,该工具包完全用 Java 重写并由 Oracle 作为 JavaFX 2.0。 2011 年 10 月,甲骨文宣布将 将 JavaFX 工具包捐赠给开源社区,并在 11 月之前 2011 年 OpenJDK 社区已经同意接受它。

我不认为 JavaFX 是稳定的。它没有快速支持。文档解释性不够。当阶段关闭时,它不会释放内部存储器。我的应用程序是多线程应用程序,我的应用程序大部分时间都在更新每个单独线程的状态。本机捆绑包中 JRE 的自包含副本不可靠,我们必须将其替换为驻留在 JDK 中的 JRE 文件夹。

这真的令人沮丧,我想知道 JavaFX 是否适合开发 Java 桌面应用程序。

【问题讨论】:

  • 如果您愿意分享您提到的不足(稳定性、缓慢的支持等)的具体实例,那将会很有趣。
  • Swing 多年来一直没有发展。即使 JavaFX 现在并不坚如磐石,我相信它是 Java GUI 的未来。例如,它将在 ARM 上的 JVM 8 上运行。开发应用程序时是否值得单独调试/等待补丁的痛苦?这取决于您,如果您想立即使用它:您是早期采用者(有优势),我希望 JavaFX 8 将成为每个人都希望的完整“稳定”版本。就是说,我没有遇到很多人认为 Swing 是未来的 Java GUI:每个人都认为它正在消亡,对大多数人来说它是遗留技术。

标签: java swing javafx-2


【解决方案1】:

2020 年更新

在最初发布此问题后的随后几年中,JavaFX 技术似乎进展顺利。 Java 已按其 6 个月的火车时间表发布,JavaFX 版本也已在每个版本之后不久发布。

Oracle 已完成使 JavaFX 开源的过程,称为OpenJFX。代码库现在以sub-project on the OpenJDK 项目的形式存放。领导层已分配给Gluon 公司。

受欢迎程度和社区似乎在增长。竞争对手已经倒下,如 Microsoft SilverlightAdobe Flash 均已死去。

Oracle 继续支持 Swing,但仅限于 maintenance-mode。相比之下,JavaFX 继续发展和改进。

Oracle 销售对 JavaFX 的支持,Azul Systems 等其他供应商也是如此。

一些提供 Java 实现的供应商将 JavaFX/OpenJFX 库与他们的 JVM 捆绑在一起。其中包括带有 ZuluFX 产品的 Azul Systems 和带有 LibericaFX 产品的 BellSoft。

虽然目前是最先进的,但正在为 iOS 和其他平台使用 OpenJFX 和 ahead-of-time compilationGraalVM 构建原生应用程序。

见:


【讨论】:

  • 嗨!感谢更新。这是碎片化开始后我看到的对该领域最好的概述。
【解决方案2】:

根据 Oracle 的说法,JavaFX Swing 的替代品:

http://www.oracle.com/technetwork/java/javafx/overview/faq-1446554.html#6,问题 6,说:

JavaFX 是否正在取代 Swing 作为 Java SE 的新客户端 UI 库?

是的。然而,在可预见的未来,Swing 仍将是 Java SE 规范的一部分,因此包含在 JRE 中。虽然我们建议开发人员在构建新应用程序时尽可能利用 JavaFX API,但可以使用 JavaFX 扩展 Swing 应用程序,从而实现更平滑的过渡。

【讨论】:

    【解决方案3】:
    Is JavaFX complete replacement of Swing?
    

    我认为不是,

    • 与 Swing 相比,大多数组件的大小只有一半(开发价格???),

    • JavaFX8 中的实现(可通过 Java8 访问)有一个重要点 Swing JComponents 可以从 JavaFX 容器中访问,而 JavaFX 组件可以在 Swing JContainers 中访问(在较新的 JavaFX2.2 中实现),

      李>
    • 那么 JavaFX 将可用于开发桌面应用程序

    • 还有一个问题是是否可以在一个 JPanel 中添加 JavaFX TextArea 和 Swing JTextArea,反之亦然(来自 xxx.scene.xxx 的面板)

    • FX Experience 上的更多(最佳信息、路线图、开发...)(通知偶尔会关闭 :-)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多