摆动部件重量轻?

每当我读到Swing时,他们都会说它们是轻量级组件。 所以我只是用谷歌搜索Swing,发现这意味着Swing不依赖于本地同行。 这就是为什么他们被称为“轻量级” ? 我的意思是轻量级我认为Swing组件占用的内存比AWT组件少。 不是这样吗?

Swing被认为是轻量级的,因为它完全用Java实现,而不需要调用本机操作系统来绘制图形用户界面组件。

另一方面, AWT (Abstract Window Toolkit)是重量级工具包,因为它只是调用操作系统来生成GUI组件。

来自AWT和Swing中的绘画 的Swing Paint System部分的演变解释了轻量级和重量级之间的区别:

当为JDK 1.0开发原始AWT API时,只存在重量级组件(“重量级”意味着该组件具有自己的不透明本机窗口)。 这使得AWT在很大程度上依赖于每个本机平台中的绘图子系统。

[…]

随着JDK 1.1中轻量级组件的引入(“轻量级”组件是重用其最近的重量级祖先的本机窗口的组件),AWT需要在共享Java代码中实现轻量级组件的绘制处理。

由于Swing是用Java实现的,它确实有一些性能劣势,但是,我听说在最近的Java版本中性能有所提高。

Swing的优势在于它拥有更多可用的组件,例如JTableJList ,它们比AWT中提供的组件更具图形和可扩展性,允许开发更多图形丰富的应用程序。

轻量级与重量级是UI组件如何实现的问题。 重量级组件包装操作系统对象,轻量级组件不包含。 它们严格地在JDK中实现。

这只是一个附录,解决了另一个背景下的重量级与轻量级:编程模型。

在这种情况下,Swing绝对是重量级和复杂的。 它被认为不适合瘦客户端实现,并且考虑到今天有这么多不同的设备,Swing实际上是死技术,即使Oracle还没有退出它……(也见JavaFX作为替代方案) )。