22

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

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

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

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

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

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

4

3 回答 3

19

根据 Oracle 的说法,JavaFXSwing 的替代品:

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 应用程序,从而实现更平滑的过渡。

于 2013-12-11T12:37:29.760 回答
10
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 的面板)

  • 更多(最好的信息,路线图,发展......)关于外汇体验(通知偶尔会下降:-)

于 2013-03-12T13:49:34.670 回答
1

2020年更新

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

Oracle 已完成使 JavaFX 开源的过程,即OpenJFX。代码库现在作为OpenJDK项目的子项目存放。领导层已分配给Gluon公司。

人气和社区似乎正在增长。竞争对手已经倒下,比如微软 SilverlightAdob​​e Flash都死了。

Oracle 继续支持 Swing,但仅限于维护模式。相比之下,JavaFX 继续发展和改进。

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

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

尽管目前是最先进的,但正在使用 OpenJFX 为 iOS 和其他平台构建原生应用程序,并使用GraalVM进行提前编译

看:


在此处输入图像描述

于 2020-07-19T04:15:13.927 回答