Answers:
您必须在某个地方安装Java。当然,所有GUI框架都是如此,但是Java感觉到2吨大猩猩。它的负载越来越好,但是那些早期的Java applet日子使很多人望而却步。如果只需要它来运行一个应用程序,则需要大量维护才能使其与安全补丁等保持同步。每个人都必须拥有适用于youtube的Flash,.net框架会在幕后安装,每个人的浏览器都启用了javascript。Java通常是一件额外的事情。
尽管它可以一次写入,但可以在任何地方运行,但您仍然发现Mac OSX没有要使用的新奇东西,或者一个客户端拒绝通过JRE 1.4升级其mandrake linux。
作为开发人员,您必须考虑线程。而且这是一种棘手的方式,因为可以使用多线程,但是像所有的单线程一样假装。但是,随后引入的库中有一半具有一定程度的多线程,并假定您了解EDT invokeLater,并且这使很多课程难以完成。
Swing经验不会轻易转移到其他类型的UI开发中。例如,如果您是.css中表格的专家,那么Jtables,渲染器,编辑器等将完全使您处于混乱状态。
总的来说,Swing的主要问题在于它没有达到其营销方式。对于许多用例来说,这是一种完全合适的技术,但是在最初的5到6年中,它们充满了糟糕的实现和糟糕的applet。而现在,它是一种古老的技术-可用于Web 3.0或其他任何技术。
综上所述,我确实喜欢Swing,并且认为当您需要它的好处时,优点通常胜过缺点。但是,Web体验现在无处不在,以至于许多用户将比最精简的令人惊叹的swing应用程序更轻松地使用Web应用程序。虽然有很棒的Swing应用程序,但是它们似乎并不是主流。
乔纳斯
Swing概括了您的基础架构,以为您提供平台中立的用户体验。唯一的重量级组件(由操作系统提供)是JFrame容器,其余的大部分由Swing管理员处理。另一方面,AWT要求OS绘制所有UI组件,这意味着在使用特定于OS的本机UI组件时,它在许多方面都更快。SWT试图为各种标准组件(例如大多数操作系统上可用的按钮和标签)取得中间立场,让OS处理这些组件,而对于其他专用组件,SWT将为您处理创建。
话虽如此,我可以概述一下缺点。
(1)由于该工具包为您创建和呈现了组件,而不是询问操作系统,因此您无法利用操作系统提供的内置组件的速度。
(2)对于大多数OS平台,关于用户使用的外观和感觉,UI并不特别吸引人。
(3)可以更好地简化某些布局管理器,例如GridBadLayout等。我已经失去了我所从事的项目数量的计算,在那些项目中人们已经用一些定制的代码包装了GridBagLayout,从而获得了一种更简单的使用方式。
我建议您使用AWT,Swing和SWT编写一个简单的应用程序,然后将开发方法与最终产品进行比较,然后查看其他开发人员的各种意见,并确定哪种方法效果最好。我已经与Swing一起工作了很多年,并且使用了不喜欢SWT的方法,但是我逐渐意识到,与其他框架相比,Swing比需要的复杂得多。
Swing速度慢(性能差),难以使用/笨拙(与许多其他工具相比),并且在某些平台上看起来不太好,实际上非常不好。