swt在linux上运行效率,Java中AWT、Swing与SWT三大GUI技术的原理与效率差异

MineHe原创

看了一下对Java GUI讨论的帖子,所以写了一篇文章来阐述一下各种GUI技术的优劣。

Java世界中,目前最知名的三大GUI库分别是:

1、AWT(Abstract Window Toolkit)抽象窗口工具包库,包含于所有的Java SDK中

2、Swing高级图形库,包含于Java2 SDK中

3、来自IBM Eclipse开源项目的SWT(Standard Widget Toolkit)标准窗口部件库,不包含于JDK中,需要从Eclipse单独下载

一、AWT的原理:小巧却简陋的GUI系统

AWT出现于Java 1.x中,是Java初期所内置的一种面向窗口应用的库。AWT使用的技术是对等设计模式(即Peer),其结构关系参见下图。

从这幅类关系图很容易看出AWT的技术实现和Peer设计模式。图中,黄色的类是java.awt包中的类,浅灰色部分是Java虚拟机部分,而深灰色则是Windows平台。

awt的重点是对等Peer设计模式。所谓Peer对等设计模式就是将awt控件直接对应到运行平台上的一个类似或者等同控件上。比如图中的Button类就是对应了深灰色的Windows的标准Button功能。

对等模式用于在两个控件间之间建立一个相互作用的联系,而充当纽带的则是Java虚拟机和虚拟机-GDI的接口(以Windows为例子)。所以,我们可以看出,awt首先需要经过通用的Java技术来控制图形、事件等,然后Java虚拟机再将请求传送到具体的平台图形和控件接口去交互。

对等模式的效率并不很高,因为AWT通过了虚拟机和虚拟机-GDI这两个层次来完成一个操作,经过的层次系统越多,速度和效率就越慢。而且Peer对等模式有一个致命的弱点:移植性非常差!

这就是Sun为什么要用Swing来诱惑我们离开AWT的主要原因。因为既然是对等模式,那么AWT就必须使用所有图形操作系统的图形接口功能的交集,因为 AWT的接口只有一套,所以,为了保证移植性,就只能使用所有系统都能够支持的最少特性。因而我们经常可以听见有人抱怨AWT的功能太少,图形太难看等等,这是为了保证移植性而作出的牺牲。

二、猛犸巨兽的诞生-Swing

从Java2 即Java 1.2版本开始,Sun开始在JDK中提供一套新的图形界面接口系统-Swing。所有Java爱好者都投入了对Swing的研究和迷恋。随着一大批使用Swing作为界面技术的IDE和程序出现,很快大家都意识到Swing的问题所在。

一些人认为Swing是轻量级的GUI系统,无论官方如何说,没有一个Java程序员会认为Swing是轻量级的,相反,Swing是一个非常巨大的GUI库,这一点已经是Java界的共识。

Swing的一些底层类是借用了AWT的Component、Container、Window等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值