每当我读到Swing时,他们都会说它们是轻量级组件。所以我只是用谷歌搜索Swing,发现这意味着Swing不依赖于本地同行。这就是为什么他们被称为“轻量级”?我的意思是重量轻,我想可能Swing组件比AWT组件占用更少的内存。不是这样吗?
答案 0 :(得分:12)
Swing被认为是轻量级的,因为它完全用Java实现,而不需要调用本机操作系统来绘制图形用户界面组件。
另一方面,AWT(Abstract Window Toolkit)是重量级工具包,因为它只是调用操作系统来生成GUI组件。
Evolution of the Swing Paint System文章中的Painting in AWT and Swing部分解释了轻量级和重量级之间的区别:
原始AWT API时 仅为JDK 1.0开发 重量级组件存在 (“重量级”意味着 组件有自己的不透明原生 窗口)。这使得AWT可以依赖 严重依赖每个油漆子系统 原生平台。
[...]
使用 轻量化的引入 JDK 1.1中的组件(“轻量级”) 组件是重用的组件 最接近的原生窗口 重量级祖先),AWT需要 实施油漆加工 共享中的轻量级组件 Java代码。
由于Swing是用Java实现的,它确实有一些性能劣势,但是,我听说在最近的Java版本中性能有所提高。
Swing的优势在于它有更多可用的组件,例如JTable
和JList
,它们比AWT中提供的组件更具图形性和可扩展性,允许更多图形丰富的应用程序开发的。
答案 1 :(得分:8)
轻量级与重量级是如何实现UI组件的问题。重量级组件包装操作系统对象,轻量级组件则不包含。它们严格地在JDK中实现。
答案 2 :(得分:0)
这只是一个在另一个背景下解决重量级与轻量级的附录:编程模型。
在这种情况下,Swing绝对是重量级和复杂的。 它被认为不适合瘦客户端实现,并且考虑到今天有这么多不同的设备,Swing实际上是死技术,即使Oracle还没有退出它......(另见JavaFX作为替代方案) )。