电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

Swing的历史


发布日期:2020/4/4
 

要了解Swing首先必须了解AWTAWT是Swing的基础

Java的发展速度超出了人们的想象Java API中最可视的部分——API突然成为了人们关注的焦点遗憾的是原来的AWT不能满足发展的需要

原来的AWT不是为许多开发人员使用的功能强大的用户界面(UI)工具包而设计的其设计目的是支持开发小应用程序中的简单用户界面例如原来的AWT缺少许多面向对象UI工具包中所能见到的特性例如剪贴板打印支持和键盘导航等特性在AWT中都不存在原来的AWT甚至不包括弹出式菜单或滚动窗格等基本特性而弹出式菜单和滚动窗格是开发现代用户界面的两个基本元素

此外AWT的下层构件还有严重的缺陷人们使AWT适应基于继承的具有很大伸缩性的事件模型甚至更糟基于对等组件(peer)的体系结构也被用于AWT该体系结构注定要成为AWT的致命弱点

为了尽快推向市场和保持本地的界面样式于是产生了基于对等组件的体系结构而该体系结构注定是要失败的对等组件是完成薄弱的AWT对象所委托任务的本地用户界面组件对等组件负责完成所有的具体工作包括绘制自己对事件做出反应等这使得AWT组件除了在适当的时间与其对等组件交互外无事可做由于AWT类中是较复杂的本地对等组件的外壳所以AWT的早期开发人员能在最快的时间(原来的AWT是在不足六个星期的时间内开发出来的)内创建组件例如javaawtPanel类只包含十二行代码

另外对等组件的设计也有严重的缺点首先在大多数平台上对等组件都是在本地窗口中绘制的每个组件一个本地窗口实在不能得到高性能为此含有大量AWT组件的小应用程序付出了很高的性能代价

把不同平台上的本地对等组件硬塞进Java框架中也是一个问题使这些AWT组件跨平台的表现一致是完全不可能的结果不但没有实现急需的新组件而且开发时间都浪费在修补对等组件的错误上和不兼容问题上了

更糟的是AWT有很高的错误发生率于是第三方开始提供他们自己的工具包这些工具包提供了更可靠的下层构件并提供了比AWT更多的功能这些工具包之一是Netscape的Interner基础类(IFC)IFC是一组建立在NEXTSTEP中的用户界面工具包概念基础上的一组轻量类IFC组件不是对等的在许多方面胜过了AWT组件IFC还吸引了更多的开发人员加盟

由于认识到Java领域很可能在标准用户界面工具包问题上出现分裂局面Javasoft和Netscape达成了一个交易共同实现Java基础类(Apple公司和IBM公司也参加了JFC的开发)Netscape开发人员与Swing工程师一起合作以便把大部分的IFC的功能嵌入到Swing组件中

起初打算让Swing类似于Netscape的IFC然而随着时间的推移在增加了插入式界面样式等特性并修改了设计之后Swing大大地偏离了它原来的目标随着Swing版本的推出虽然大量的IFC技术仍然嵌在Swing中但是Swing与IFC相似的部分已大部分消失了今天在一个功能全面的用户界面工具包中Swing提供了AWT和IFC中最优秀的成份

上一篇:Ubuntu 上利用 subclipse 访问 SVN

下一篇:对象的接口