SWT(Standard Widget Toolkit) 是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是用SWT开发的。在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit).AWT框架底层使用原生窗口部件(native widgets)构建,只能使用各个平台窗口部件的子集。
SWT是一个为Java设计提供了高效的部件工具包,可以便携式的访问用户界面操作系统。
软件简介
SWT窗口小部件具有与本机窗口小部件相同的外观和感觉,因为它们通常是相同的本机窗口小部件。这与Swing工具包形成对比,其中所有窗口小部件都是本机窗口小部件的模拟。SWT的深度平台集成使其能够在特定平台上包装特定的本机对象,如在Microsoft Windows上包装ActiveX对象。
SWT必须针对每个需要支持的新GUI库进行移植。与Swing和AWT不同,SWT不是Java发布的一部分,因此在不是每个Java支持的平台上都可以使用SWT。SWT程序可能会暴露于特定于平台的错误,因为它为每个平台使用不同的本机库。
SWT旨在成为高性能的GUI工具包,比Swing更快、更响应和更轻量级。基准测试表明,在一般情况下,Swing和SWT都没有超越对方。
SWT类不允许对所有窗口小部件类进行简单的继承,这可能会影响可扩展性。与Swing相比,SWT更难实现对现有窗口小部件的定制。SWT对象必须使用dispose方法显式释放,这与标准的Java自动垃圾收集相反。
SWT被广泛用于开发各种应用程序,如apache Directory Studio、Eclipse及其插件、IBM Rational和Lotus软件产品、RSSOwl等。Eclipse社区的开源努力导致了将SWT移植到适用于Web的窗口小部件工具包,即Eclipse远程应用程序平台(RAP),它将qooxdoo Ajax库与SWT API结合在一起,为Web开发提供了快速的应用程序开发方式。
发展历程
SWT最初由IBM的Stephen Northover开发,并由Eclipse基金会与Eclipse IDE一起维护。它是作为AWT和Swing的替代品而设计的,使用Java本机接口(JNI)访问操作系统的本机GUI库,以实现高性能和本机外观。SWT的设计是在AWT的低级性能和外观与Swing的高级易用性之间取得的一种妥协。SWT是本机代码对象的包装器,因此在本机平台GUI库不支持所需功能时,SWT会在Java中实现自己的GUI代码。SWT的一个主要设计目标是高性能、本机外观和深度平台集成。