205

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

我主要关心的是桌面 GUI 应用程序会更好吗?(我在网上看了很多人建议 JavaFX 和 Swing 一样好,但除了简单的意见火焰战,我没有看到很多有效的论据)。它必须适用于 Windows、Mac 和一些流行的 Linux 发行版。

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

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

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

4

6 回答 6

160

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

一切都是平等的,可能是 JavaFX - API 在组件之间更加一致。但是,这更多地取决于代码是如何编写的,而不是使用什么库来编写它

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

高度依赖于您正在构建的内容。Swing 有更多的组件(第 3 方以及内置),但并非所有组件都已进入更新的 JavaFX 平台,因此如果您需要某些东西,可能需要重新发明轮子有点习惯。另一方面,如果你想做过渡/动画/视频的东西,那么这在 FX 中要容易几个数量级。

要记住的另一件事是(也许)外观和感觉。如果您绝对必须拥有默认的系统外观,那么 JavaFX(目前)无法提供此功能。对我来说不是必须的(无论如何我更喜欢默认的 FX 外观),但我知道有些政策要求对系统样式进行限制。

就我个人而言,我认为 JavaFX 是“即将推出”的 UI 库,它还没有完全出现(但不仅仅是可用),而 Swing 是目前功能齐全且受支持的边界线遗留 UI 库,但可能不会未来几年会有这么多(因此外汇很有可能会在某个时候超越它。)

于 2013-05-22T15:00:36.920 回答
91

正如 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 的这些常见问题解答帖子。

于 2014-02-17T20:13:31.090 回答
19

没有人提到它,但由于缺少对“jfxrt.jar”的支持,JavaFX 不能在某些被 Oracle 视为“服务器”的架构(例如 Solaris)上编译或运行。坚持使用 SWT,直至另行通知。

于 2014-04-04T01:42:33.597 回答
6

我认为这个问题没有一个正确的答案,但我的建议是坚持使用 SWT,除非您遇到需要进行如此大规模检修的严重限制。

此外,SWT 实际上比 Swing 更新且维护得更积极。(它最初是作为使用本机组件的 Swing 的替代品而开发的)。

于 2013-05-22T14:56:50.423 回答
0

I'd look around to find some (3rd party?) components that do what you want. I've had to create custom Swing components for an agenda view where you can book multiple resources, as well as an Excel-like grid that works well with keyboard navigation and so on. I had a terrible time getting them to work nicely because I needed to delve into many of Swing's many intricacies whenever I came upon a problem. Mouse and focus behaviour and a lot of other things can be very difficult to get right, especially for a casual Swing user. I would hope that JavaFX is a bit more future-orientated and smooth out of the box.

于 2013-05-22T14:57:48.370 回答
0

在带有集成视频的旧笔记本上 Swing 应用程序的启动和运行速度比 JavaFX 应用程序快得多。至于开发,我建议切换到 Scala - 可比较的 Scala Swing 应用程序包含的代码比 Java 少 2..3 倍。至于 Swing 与 SWT:Netbeans GUI 比 Eclipse 快得多......

于 2014-09-08T20:37:55.733 回答