使用哪个库能更快地构建Java应用程序,SWT还是Swing?

10

在Java应用程序中,使用哪个库更快:SWT还是Swing?


可能是Java桌面应用程序:SWT vs. Swing的重复问题。 - Georg Schölly
7个回答

14
几年前,Swing性能较慢,因此开发了SWT,在系统上进行本机API调用。然而,Swing的性能显著提高,不再是这种情况。SWT是非标准的,而Swing是Java规范的正式组成部分。JavaFX也将构建在Swing之上。除非您的工作需要编写Eclipse插件,否则建议使用Swing。要看到使用Swing开发的真正好的应用程序,请查看Jetbrain的Java IDE。您可以在30天内进行尝试。

http://www.jetbrains.com/idea/

当然,Sun的Netbeans也是一个纯Swing应用程序,并且它是免费的。

http://www.netbeans.org/


9

没有慢的Swing应用程序,只有编写不良的应用程序。这也适用于SWT。大多数应用程序由于Eclipse核心架构而产生更好的响应。在J6之前,在无响应期间出现灰色窗口的问题有几个,但是使用完全双缓冲方法在Swing PLAFs中解决了这个问题。没有更好的UI框架,只有更好的编写程序,适当地使用多线程来避免UI的不响应。个人更喜欢Swing :)


当然有一些慢的Swing应用程序;我使用过几个。我也使用过几个缓慢的SWT应用程序。 - Draemon

8
今天,这两个框架都很快。我建议检查以下标准:
  1. SWT比Swing更容易使用(特别是如果这是您的第一个UI)
  2. Swing更老,您可以找到更多组件
  3. 如果您还使用JFace,则会发现许多功能强大的小部件可以直接使用(在Swing中需要大量额外配置)。
  4. Swing可在任何地方使用,而SWT则不行
  5. SWT正在积极开发,您有源代码,并且错误会被快速修复。Swing多年来一直没有改动,然后突然为Java 6发布了一个重大更新。如果您在Swing上遇到问题,那么Sun可能并不关心。
  6. 如果您选择Swing,请使用类似于SwingX的框架。这将使您的生活变得更加简单。

4
根据维基百科的介绍,目前还没有明确的胜者(如果您愿意,可以修改这一点)。不可避免地,您可以编写基准测试,以显示其中一个比另一个快得多。Swing 在 Java 方面有更多的自由来进行优化。SWT 可以允许更多的优化在窗口系统内发生。
可能对性能产生更大影响的是应用程序的行为。请集中精力使您的代码整洁(必要时进行一些分析)。

如果是这种情况,那么Swing不是最胜任的吗?因为它最能够模拟操作系统的主题。 - Dimitry
不可能!SWT使用本地小部件,因此您无法通过Swing表现得更好。 - gizmo
我相信Swing在跟进本地小部件方面有着更好的记录。它不必处理修复本地API的问题。在这方面,Swing失败的地方是在具有可插拔引擎的情况下,例如在Linux上。 - Tom Hawtin - tackline
好的,汤姆,维基百科已经按照你的要求修复了。http://en.wikipedia.org/w/index.php?title=Swing_(Java)&oldid=245060801 ;) - shemnon
我们将看看它能持续多久 :) - shemnon

1
“更快”是主观的。两者都可以运行得很快,但是在Swing中做某些愚蠢的事情并让它“感觉”缓慢很容易导致自己被打到脚上。
尽管如此,我发现在代码层面上使用Swing比SWT更容易。

0

在我看来,关于小部件工具包的技术决策非常微妙。当涉及到应用程序框架时,你需要交付的工作量相当大,而且更加决定性。我认为,唯一支持SWT的论点是其本地L&F。另一方面,现在大多数UI都趋向于非本地L&F。你可以清楚地看到这一点,Eclipse RCP应用程序使用表单框架的趋势,该框架绘制自定义渐变和部分,并且在任何方式上都不是本地界面(同样适用于e4,即Eclipse v4详细项目)。

总之,如果RCP是你的项目选项,我会使用Eclipse RCP(即SWT)。这个平台的完整性、活力和速度是无与伦比的。如果RCP不是一个选项,Spring RCP对我来说看起来相当有说服力(基于Swing)。


-2

多年来,使用Swing编写的应用程序比使用SWT编写的应用程序更多。但是,在Windows平台上,SWT的用户友好性优于Swing。但是,也有例外情况(http://www.amazon.com/Rich-Client-Programming-Plugging-NetBeans/dp/0132354802)。

有一个更大的RCP应用程序社区使用SWT进行开发。虽然使用Netbeans的RCP应用程序不如其他平台流行,但数量也相当可观。

随着Java 6 UPDATE 10即将推出,Swing应用程序的性能应该会很好。也就是说,这种性能提升可能同样适用于SWT应用程序。

此致敬礼,
~A


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接