在百度百科中 得到相关介绍:
SWT 全称 Standard Widget Toolkit
直译为 "标准窗口小部件工具箱"
它是一个开源的GUI编程框架,与AWT/Swing有相似的用处,著名的开源IDE-eclipse就是采用SWT开发的.
在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit). 虽然AWT框架也使用的是原生窗口部件(native widgets),但是它一直未能突破LCD问题。LCD问题导致了一些主要平台特征的遗失。
为解决这个问题,Sun又创建了一个新的框架。这个框架不再使用原生窗口部件,而是使用仿真窗口部件(emulated widgets)。这个方法虽然解决了LCD问题,并且提供了丰富的窗口部件集,但是它也带来了新的问题。例如,Swing应用程序的界面外观不再和原生应用程序的外观相似。 虽然在JVM中这些Swing应用程序已经得到了最大程度的性能改善,但是它们还是存在着其原生对应物所不具有的性能问题。并且,Swing应用程序消耗太多的内存,这样Swing不适于一些小设备,如PDA和移动电话等。
IBM进行了尝试以彻底解决AWT和Swing框架带来的上述问题。最终,IBM创建了一个新的GUI库,这就是SWT。SWT框架通过JNI来访问原生窗口部件。如果在宿主(host)平台上无法找到一个窗口部件,SWT就会自动地模拟它。
为了方便开发SWT程序,在SWT基础上又创建了一个更易用、功能强大的图形包“JFace”。然而,JFace并不能完全覆盖SWT的所有功能,所以编程时SWT、JFace都会要用到,但是一般来说,能用JFace的组件就最好不要用SWT的。
SWT本身仅仅是Eclipse组织为了开发Eclipse IDE环境所编写的一组底层图形界面 API。或许是无心插柳,或是有意为之,至今为止,SWT无论是在性能和外观上,都超越了SUN公司提供的AWT和SWING。目前SWT已经十分稳定。这里指的稳定应该包含两层意思:
一是指性能上的稳定,其中的关键是源于SWT的设计理念。SWT最大化了操作系统的图形构件API,就是说只要操作系统提供了相应图形的构件,那么SWT只是简单应用JNI技术调用它们,只有那些操作系统中不提供的构件,SWT才自己去做一个模拟的实现。可以看出SWT的性能上的稳定大多时候取决于相应操作系统图形构件的稳定性。
另一个稳定是指SWT API包中的类、方法的名称和结构已经少有改变,程序员不用担心由于Eclipse组织开发进度很快(Eclipse IDE每天都会有一个Nightly版本的发布),而导致自己的程序代码变化过大。从一个版本的SWT更新至另一版本,通常只需要简单将SWT包换掉就可以了。
上面又介绍了 一个 JFace 概念,那么 JFace和 又SWT有什么区别呢 ?
JFace 是一个用户界面工具箱,它提供很难实现的、用于开发用户界面功能部件的 helper 类。JFace 在原始的窗口小部件系统的级别之上运行。它提供用于处理常见的用户界面编程任务的类:
●查看器负责处理填充、排序、过滤和更新窗口小部件等最辛苦的工作。
●操作和添加项介绍用于定义用户操作的语义,并指定在何处提供它们。
●图像和字体注册表提供用于处理用户界面资源的常见模式。
●对话框和向导定义用于构建与用户进行复杂交互的框架。
JFace 使您可以专注于实现特定插件的功能,而不必花费精力来处理底层窗口小部件系统或者解决几乎在任何用户界面应用程序中都很常见的问题。
SWT 和 JFace 之间的界线是很明显的。SWT 根本不依赖于任何 JFace 或平台代码。许多 SWT 示例说明可以如何构建独立的应用程序。
JFace 用来在 SWT 库顶部提供常见的应用程序用户界面功能。JFace 并不试图“隐藏”SWT 或者替换它的功能。它提供一些类和接口,以处理与使用 SWT 来对动态用户界面编程相关联的许多常见任务。
本人解读:看来 JFace 是一个在SWT 上封装的常用功能的框架,它提供了SWT的功能和更简易的MVC模式。
从 CSDN的 zwgs1985 博客 专栏中了解到如下SWT, SWING, AWT各自的特点:
AWT的优势在于,简单,稳定,兼容于任何一个java版本。也支持GUI组件的自动disposal。同时也是线程安全的。在AWT 中的图形用户界面是通过本地方法来实现的,每个AWT 方法都有一个与其对应的本地方法,称为peer。由于平台无关性的需要,AWT 所能够实现的功能是各种不同操作系统的图形库所提供的功能的交集。
而SWING,则是为了解决AWT的很多缺点。SWING 提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT。 它们是JFC的一部分。 它们支持可更换的观感和主题(各种操作系统默认的特有主题),然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们。这意味着你可以在任意平台上使用JAVA支持的任意观感。 轻量级元件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为。
Eclipse项目用称为SWT的的图形库和工具包取代了Java标准中的AWT和Swing。SWT直接调用了操作系统的图形库,从而使得Java应用程序的Look & Feel 与操作系统的习惯完全一致;更为重要的是,对本地方法的直接调用大幅度的提高了基于SWT 的Java应用程序的运行速度。SWT 的缺点主要在于两点:(1) 不是Java语言标准;和(2) 支持的平台太少。
本人涉取知识的目标还仅限于Windows 系统下的程序设计,因此对 SWT 的特性感觉还好,但还在还仅仅是一点初级认识。
幼本学生 于 2009-09-19 笔记