Swing vs JavaFx用于桌面应用程序

Qui*_*ion 189 java user-interface swing javafx swingx

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

我主要担心的是桌面GUI应用程序会有什么好处?(我在网上看了很多人都认为JavaFX和Swing一样好,但除了简单的意见火焰战争之外我没有看到很多有效的论据).它必须适用于Windows,Mac和一些流行的Linux发行版.

  • 什么更干净,更容易维护?

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

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

Mic*_*rry 152

什么更干净,更容易维护?

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

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

高度依赖于你正在建设的东西.Swing有更多的组件(第三方以及内置)并且并非所有组件都已经进入新的JavaFX平台,所以如果你需要一些东西,可能会有一定数量的重新发明轮子有点习惯.另一方面,如果你想做转换/动画/视频内容,那么这在FX中更容易.

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

就我个人而言,我认为JavaFX是"即将到来"的UI库,它还没有完全存在(但不仅仅是可用的),而Swing作为边缘传统的UI库,目前功能齐全并且支持,但可能不会未来几年这么多(因此外汇有可能在某些时候超过它.)

  • 我相信这些观点都适用于 .NET 世界以及桌面 GUI 世界,其中 Windows Presentation Foundation 是旨在取代旧 Windows Forms 的现代方法,因此理论上它在所有方面都更好,除非它不会(还没有?但已经好几年了)支持您所期望的本机通用控件/外壳外观,例如简单的文件对话框/目录浏览器/树视图控件。 (4认同)

Yon*_*iel 81

正如Oracle所述,JavaFX是其基于Java的富客户端战略的下一步.因此,这是我建议你的情况:

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

  • JavaFX引入了一些关于Swing的改进,例如,使用FXML标记UI的可能性,以及使用CSS的主题.它具有编写模块化,清晰和可维护代码的巨大潜力.

从头开始构建什么会更快

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

MVC模式支持

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

有关详细信息,请在此处查看Oracle关于JavaFX的这些常见问题解答.


小智 14

没有人提到它,但是由于缺少"jfxrt.jar"支持,JavaFX不会在Oracle(例如Solaris)认为是"服务器"的某些体系结构上编译或运行.坚持SWT,直到另行通知.

  • @Quillion特别要求建立一个桌面应用程序,"必须在windows,mac和一些流行的Linux风格上工作."_.所以我猜他不关心Solaris. (13认同)

Rus*_*ser 5

我不认为这个问题有任何正确的答案,但我的建议是坚持使用SWT,除非你遇到需要如此大规模改革的严重限制.

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

  • SWT从未打算取代Swing.怎么会这样?Swing来自SUN的Java,而SWT仅在4或5个平台上运行,最初来自IBM,并在Eclispe Foundation中进一步开发.如果你可以说:SWT旨在取代AWT. (15认同)