跨平台GUI开发:Qt Jambi vs SWT

12

我目前参与一个开发Linux应用(Fedora 10)的项目。但是,以后可能需要将这些应用程序移植到Mac OS X和Windows上,我们不想因为选择错误的GUI工具包而措手不及。

由于各种历史原因,我们锁定了Java。我们正在决定使用Qt Jambi还是SWT来创建GUI。我对它们的使用经验不多,所以我正在做一些小型原型来尝试并了解它们。到目前为止(只在Linux上开发),它们之间没有太大区别。然而,在短时间内我能深入探讨的范围有限。这就是为什么我需要帮助的原因。

我们感兴趣的特定功能有:

  • 无框窗口

  • 自定义形状窗口(即非矩形)

  • 美观

有没有人对这两个库有任何经验或见解,可能会在以后给我们带来麻烦?

  • 敏捷编程人员无疑会关注短语“可能是…以后”,并说我们不必担心。然而,在其他决定因素缺乏的情况下,未来的可扩展性选项是很重要的。我保证在必须的时候再写任何跨平台特定代码 :)

2月11日更新:感谢您们提供了这么好的答案。对于那些好奇的人,我们可能会选择Jambi。主要是因为它的样式表功能,使我们能够轻松完成许多自定义小部件形状的工作。Qt的示例套件显示,无框、自定义形状的窗口确实可以在不同的平台上使用,所以我们不用担心将来会出问题。LGPL的发布是我们考虑Jambi的原因 :)

5个回答

9
我同意Vinegar的看法:不要排除Swing。我用Swing和SWT都进行了开发,但没有用过Qt。使用Swing,你的代码将自动跨平台。使用SWT,你需要一点点努力才能实现跨平台,虽然付出的努力并不多。你打算实现本地应用程序、Applet还是Web Start应用程序?
SWT的优点是它使用所有本机小部件(熟悉的外观)。SWT的缺点是它使用所有本机小部件(比Swing拥有的小部件少)。这更是优点还是缺点取决于你在做什么以及你的目标是什么。这意味着Swing具有更广泛的小部件。但是,SWT有一些Swing做不到或者做得不够好的事情,比如启动系统原生浏览器并在该浏览器中执行JavaScript脚本。
如果你考虑SWT,请仔细考虑。如果你有特定的需求(比如在应用程序启动的浏览器窗口中执行JavaScript),那么它可能是你最好的选择。然而,如果Swing可以完全满足你的需求,那么它可能是更好的选择。
希望其他人能提供关于Qt Jambi的信息。
请注意,支持应该成为你决策的考虑因素。对于SWT,支持它的社区较小。对于Swing,有一个更大的社区,但这并不意味着修复程序会更快地进入开发版本中。对于Qt Jambi和SWT,如果修复了错误,你只需与你的应用程序一起分发更新的库。对于Swing,你必须等待更新的JRE。这两种情况都不是破坏协议的因素,但必须予以考虑。
许可费可能或可能不是考虑因素。当然,SWT和Swing没有许可费。至于Jambi,我不知道任何信息,但它可能取决于你的预期使用方式--例如,你是分发GPL应用程序还是商业许可的应用程序。
祝你好运!

1
他们已经使用LGPL发布了Qt,所以这不再是一个问题。感谢您精心的比较。 :) - Adeel Ansari
@Vinegar: 哦,谢谢你关于Qt和LGPL的信息。我通常使用Gnome而不是KDE,所以我对Qt的发展不太了解。 - Eddie

4

我没有使用SWT的经验,但我也使用过Jambi/Qt、Swing和GTK。在我看来,Qt/Jambi唯一的问题是许可证(你必须在GPL下发布软件或购买商业许可证)。你不能免费开始编写软件然后“看看会发生什么”。你必须确信你的软件会成功,因为你必须购买许可证。很多时候这不是一个问题。

问候。

哦,我忽略了那些评论,谢谢回复。这是个好消息!诺基亚做得很好。

@cursa并没有说过这个,所以请注意,Qt/Jambi不仅仅是小部件工具包。你可以使用网络类、字符串操作(以及正则表达式引擎)、互斥锁、2D向量和栅格图形、OpenGL等等。这真正提高了应用程序开发的速度。

我还建议Jambi菜鸟下载Qt包,因为它有一个非常好的帮助浏览器叫做Assistant,而Jambi缺少这个功能。所有的Qt和Jambi的API都是相同的(除了slots和signals),甚至文档也没有变化,所以你可以交替使用它们。


1
没有Zax,请看我的评论给Eddie。它已经发布到LGPL,所以问题不再存在。(没有投反对票) - Adeel Ansari

4

2
这似乎是不正确的,因为QT Jambi网站上显示2015年发布了版本4.8.6。 - user1667096

0

我不会排除SWT,因为它在Eclipse世界中取得了巨大的成功。我已经愉快地使用它约6年,从未被迫使用swing。


-1
我不建议使用SWT。SWT是一个设计不良的库,有很多hack和bug。你将会一直寻找简单UI任务的解决方法。

你的回答已经说明了一切关于SWT,IBM(现在是Eclipse)开发了一个无用的东西。 - Extreme Coders

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