Swing被认为是轻量级的,因为它是完全用Java实现的,而无需调用本机操作系统来绘制图形用户界面组件。
另一方面,AWT(抽象窗口工具箱)是重量级的工具箱,因为它仅调用操作系统以产生其GUI组件。
《AWT上的绘画》和《
Swing》一文中“ Swing
Paint系统
”的演变部分解释了轻量级和重量级之间的区别:
当为JDK 1.0开发原始AWT
API时,仅存在重量级组件(“重量级”表示该组件具有其自己的不透明本机窗口)。这使AWT可以非常依赖每个本机平台中的绘画子系统。[…]
随着JDK
1.1中轻量级组件的引入(“轻量级”组件是重用其最接近的重量级祖先的本机窗口的组件),AWT需要在共享Java代码中实现轻量级组件的绘制处理。
由于Swing是用Java实现的,因此确实存在一些性能劣势,但是,我听说在Java的最新发行版中性能有所提高。
Swing的优势在于,与AWT中提供的组件相比,它具有更多可用的组件,例如,
JTable并且
JList具有更多的图形和可扩展性,从而允许开发更多的图形丰富的应用程序。



