哪个库更适合更快的 Java 应用程序 swt 或 swing?
7 回答
几年前,Swing 速度很慢,因此开发了 SWT 以在系统上进行本机 API 调用。然而,Swing 的性能有了很大的提高,现在情况已经不是这样了。SWT 是非标准的,而 Swing 是 Java 规范的正式一部分。JavaFX 也将构建在 Swing 之上。除非您的工作需要编写 Eclipse 插件,否则我会使用 Swing。
要查看使用 Swing 开发的真正优秀的应用程序,请查看 Jetbrain 的 Java IDE。您可以试用 30 天。
http://www.jetbrains.com/idea/
当然,Sun 的 Netbeans 也是一个纯 Swing 应用程序,而且它是免费的。
没有缓慢摆动的应用程序。只是写的不好。这也适用于 SWT。由于 Eclipse 核心架构,大多数应用程序做出了更好的响应。在 J6 之前,在无响应期间存在灰色窗口的几个问题,但在摆动 PLAF 中使用完全双缓冲方法完全解决了这个问题。没有更好的 UI 框架。只有更好的编写程序可以适当地使用多线程来避免 UI 无响应。我个人更喜欢 Swing :)
今天,这两个框架都很快。我建议检查这些标准:
- SWT 比 Swing 更易于使用(尤其是如果这是您的第一个 UI)
- Swing 比较老,可以找到更多组件
- 如果您还使用 JFace,您会发现许多开箱即用的强大小部件(您需要在 Swing 中进行大量额外配置)。
- Swing 随处可用,SWT 不可用
- SWT 是积极开发的,你有源码,bug 会很快修复。Swing 已经好几年没有被触及了,然后突然出现了 Java 6 的重大更新。如果您对 Swing 有疑问,那么 Sun 可能不在乎。
- 如果您选择 Swing,请使用SwingX 之类的框架。这将使您的生活更加简单。
根据维基百科,没有明确的赢家(尽管您可以根据需要进行编辑)。不可避免地,您可以编写基准测试来显示其中一个比另一个快得多。Swing 在 Java 方面有更多的自由来优化。SWT 可以允许在窗口系统中进行更多优化。
可能对性能的更大影响将来自您的应用程序的行为方式。专注于让你的代码干净(并在必要时进行一些分析)。
“更快”是主观的。两者都可以跑得很快,但是用 Swing 做一些愚蠢的事情来击中自己的脚并让它感觉慢更容易。
尽管如此,我发现在代码级别上使用 Swing 比使用 SWT 更容易。
对小部件工具包的技术决策在我看来是薄冰。恕我直言,当涉及到应用程序框架时,您必须交付的工作量相当大,而且更具决定性。我相信唯一支持 SWT 的论点是它是原生的 L&F。另一方面,如今大多数 UI 都倾向于非本地 L&F。您在 Eclipse RCP 应用程序使用表单框架的趋势中清楚地看到了这一点,该框架绘制自定义渐变和部分,并且以任何方式都不是本机界面(这同样适用于 e4,eclipse v4 细化项目)。总而言之,如果 RCP 在您的项目中是一个选项,我会使用 Eclipse RCP(即 SWT)。这个平台的完整性、活力和节奏是无与伦比的。如果不能选择 RCP,那么 Spring RCP 对我来说看起来非常有说服力(它是基于 Swing 的)。
多年来,使用 swing 编写的应用程序比使用 SWT 编写的应用程序多。但是SWT在windows上的用户友好性比Swing更胜一筹。但是,也有例外(http://www.amazon.com/Rich-Client-Programming-Plugging-NetBeans/dp/0132354802)。
有一个更大的使用 SWT 开发的 RCP 应用程序社区。尽管使用 Netbeans 的 RCP 应用程序没有那么大,但这是相当可观的。
随着 Java 6 UPDATE 10 即将推出,Swing 应用程序的性能应该会相当不错。也就是说,性能改进也可能适用于 SWT 应用程序。
BR,
~A