【问题标题】:Swing components are light-weight?Swing 组件是轻量级的吗?
【发布时间】:2010-09-29 20:07:18
【问题描述】:

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

【问题讨论】:

    标签: java swing awt


    【解决方案1】:

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

    另一方面,AWT(抽象窗口工具包)是重量级工具包,因为它只是调用操作系统以生成其 GUI 组件。

    Painting in AWT and Swing 文章中的Evolution of the Swing Paint System 部分解释了轻量级和重量级之间的区别:

    当原始 AWT API 是 仅针对 JDK 1.0 开发 存在重量级组件 (“重量级”是指 组件有它自己的不透明原生 窗户)。这允许 AWT 依赖 严重依赖于每个中的油漆子系统 原生平台。

    [...]

    有 引入轻量级 JDK 1.1 中的组件(“轻量级” 组件是一个重用 其最近的本机窗口 重量级祖先),需要 AWT 实施油漆处理 共享中的轻量级组件 Java 代码。

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

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 您对组件占用的内存有何看法? swing组件占用内存少吗?
    • 很难说。轻量级组件可能占用更多,因为操作系统处理一些重量级组件的东西。或者操作系统对象的开销可能很大。或者只是连接这些对象可能会产生巨大的开销。
    • 除此之外,它在很大程度上取决于您使用的 LAF(外观和感觉)。这是 Swing 的另一优势:您只需几行代码即可更改 LAF。
    【解决方案3】:

    这只是一个附录,在另一个上下文中处理重量级与轻量级:编程模型。

    在这种情况下,Swing 绝对是重量级和复杂的。 它被认为不适合瘦客户端实现,并且考虑到当今有这么多不同的设备,Swing 实际上是一种死技术,尽管 Oracle 还没有淘汰它......但是(另见 JavaFX 作为替代)。

    【讨论】:

      猜你喜欢
      • 2020-07-16
      • 2011-11-15
      • 2011-02-01
      • 2011-06-16
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 2012-11-25
      • 2012-01-20
      相关资源
      最近更新 更多