适用于桌面应用程序的 Swing vs JavaFx [已关闭]

2022-08-31 06:08:36

我有一个非常大的程序,目前正在使用SWT。该程序可以在Windows,Mac和Linux上运行,它是一个具有许多元素的大型桌面应用程序。现在SWT有点老了,我想切换到Swing或JavaFX。我想听听你对三件事的看法。

我主要关心的是,对于桌面GUI应用程序来说,什么会更好?(我在网上看了一下,很多人认为JavaFX和Swing一样好,但我没有看到很多有效的论点,除了简单的意见火焰战争)。它必须在Windows,Mac和一些流行的Linux发行版上运行。

  • 什么会更清洁,更容易维护?

  • 从头开始构建什么会更快?

我正在我的应用程序中使用MVC方法,如果这有任何帮助的话。


答案 1

什么会更清洁,更容易维护?

在所有条件相同的情况下,可能是JavaFX - API在组件之间更加一致。但是,这更多地取决于代码的编写方式,而不是用于编写代码的库

从头开始构建的速度会更快吗?

高度依赖于您正在构建的内容。Swing有更多的组件(第三方和内置),并不是所有的组件都进入了较新的JavaFX平台,所以如果你需要一些自定义的东西,可能会有一定程度的重新发明轮子。另一方面,如果你想做过渡/动画/视频的东西,那么这在FX中更容易几个数量级。

要记住的另一件事是(也许)外观和感觉。如果你绝对必须有默认的系统外观和感觉,那么JavaFX(目前)无法提供这个。对我来说,这不是一个大的必然(无论如何,我更喜欢默认的FX外观),但我知道一些政策要求限制系统风格。

就个人而言,我认为JavaFX是“新兴”的UI库,还没有完全存在(但绰绰有余),而Swing是边缘遗留的UI库,目前功能齐全且受支持,但在未来几年可能不会那么多(因此FX可能会在某个时候超过它)。


答案 2

正如Oracle所说,JavaFX是其基于Java的富客户端战略的下一步。因此,这是我针对您的情况推荐的:

什么会更容易和更清洁地维护

  • JavaFX在Swing上引入了一些改进,例如,使用FXML标记UI的可能性,以及使用CSS进行主题设置的可能性。它具有编写模块化,干净且可维护的代码的巨大潜力。

从头开始构建会更快

  • 这在很大程度上取决于您的技能和您使用的工具。
    • 对于 Swing,各种 IDE 提供了用于快速开发的工具。我个人发现的最好的是NetBeans中的GUI构建器。
    • JavaFX也得到了各种IDE的支持,尽管不像Swing目前的支持那么成熟。但是,它在FXML和CSS中对标记的支持使得JavaFX上的GUI开发变得直观。

MVC 模式支持

  • JavaFX对MVC模式非常友好,你可以将你的工作干净利落地分离为:演示(FXML,CSS),模型(Java,域对象)和逻辑(Java)。
  • 恕我直言,Swing中的MVC支持并不是很吸引人。您将在各种组件中看到的流缺乏一致性。

有关更多信息,请在此处查看Oracle关于JavaFX的常见问题解答文章。


推荐