用于桌面应用程序的Swing vs JavaFx

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

我主要关心的是桌面GUI应用程序应该如何更好?(我在网上看了一下,很多人都认为JavaFX和Swing一样好,但除了简单的意见论战之外,我没有看到很多有效的论点)。它必须在Windows、Mac和一些流行的Linux发行版上都能运行。

  • 什么会更干净、更容易维护?

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

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

242780 次浏览

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

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

我会四处寻找一些(第三方?)组件,做你想要的。我必须为一个议程视图创建自定义Swing组件,可以在其中预订多个资源,还必须创建一个类似excel的网格,可以很好地配合键盘导航等等。我花了很长时间才使它们很好地工作,因为每当遇到问题时,我都需要深入研究Swing的许多复杂问题。鼠标和焦点行为以及许多其他事情可能很难正确处理,特别是对于一个普通的Swing用户。我希望JavaFX能够更加面向未来,更加流畅。

什么会更干净、更容易维护?

在所有条件都相同的情况下,JavaFX的API在组件之间更加一致。然而,这更多地依赖于代码是如何编写的而不是使用什么库来编写它

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

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

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

就我个人而言,我认为JavaFX是“即将出现的”UI库,它还没有相当(但不仅仅是可用的),而Swing是边缘遗留的UI库,它目前具有完整的功能和支持,但在未来几年可能不会那么多(因此FX有可能在某个时候超过它)。

正如Oracle所说,JavaFX是他们基于Java的富客户端策略的下一步。 因此,这是我对你的情况的建议:

什么样的维护更容易、更干净

  • JavaFX对Swing进行了一些改进,例如,可以使用FXML标记ui,以及使用CSS进行主题化。它有很大的潜力来编写一个模块化的,干净的&可维护的代码。

从头开始构建什么会更快

    这在很大程度上取决于你的技能和你使用的工具。
    • 对于swing,各种ide提供了快速开发的工具。我个人认为最好的是NetBeans中的GUI构建器。
    • JavaFX也有来自各种ide的支持,尽管目前还不像Swing那样成熟。然而,它对FXML &CSS使得在JavaFX上开发GUI更加直观。
    • 李< / ul > < / >

    MVC模式支持

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

    要了解更多信息,请查看Oracle关于JavaFX的FAQ。

没有人提到它,但是JavaFX不能在Oracle认为是“服务器”的某些架构上编译或运行(例如Solaris),因为缺少“jfxrt.jar”支持。继续使用SWT,直到进一步通知。

在集成了视频的旧笔记本电脑上,Swing应用程序启动和工作比JavaFX应用程序快得多。至于开发,我建议切换到Scala -可比的Scala Swing应用程序包含2..代码比Java少3倍。 至于Swing vs SWT: Netbeans GUI比Eclipse快得多…