【问题标题】:Pure lightweight application in javajava中的纯轻量级应用
【发布时间】:2010-10-02 19:57:39
【问题描述】:

是否可以用java编写“纯”轻量级代码? Swing 是轻量级的,但即使它也有重量级的组件,如 JWindow、JFrame、JDialog 和 JApplet。所以即使是 Swing 应用程序也不是 100% 独立于底层操作系统

是否有可能在 java 中拥有完全独立于底层操作系统的轻量级应用程序来进行图形显示? java能不能写出这样的代码?

【问题讨论】:

    标签: java swing


    【解决方案1】:

    嗯...是的,它们“100% 独立于”操作系统。

    至少所有 JVM 都必须支持它们。

    我想我不明白你所说的 100% 独立是什么意思。在它的核心,Swing 只需要访问核心窗口管理器和一个 blitter,尽管它显然可以(并且确实)使用的远不止这些。

    简单地说,移植 JVM 的一部分包括移植 Swing 所需的核心图形功能。某些端口比其他端口更好地利用操作系统,但在高级 Swing 级别,您通常不会担心这一点。

    【讨论】:

      【解决方案2】:

      不,如果您想在屏幕上绘图,您需要让操作系统为您完成。

      如果您担心 Swing 的性能或臃肿,请查看 SWT。它重量更轻,更接近原生外观(因为它或多或少是对 OS GUI 内容的封装)。

      【讨论】:

      • 并非如此。 Eclipse 在我在 openSUSE 11.1 上运行 KDE 4.1 的 Linux 机器上很糟糕。 SWT 不时尚,恕我直言。我更喜欢 Qt 作为 Swing 的替代品。
      • 或者只使用您喜欢的上述任何一个,因为您不会真正遇到任何性能问题。
      【解决方案3】:

      最后,只有操作系统知道存在哪些图形硬件以及如何告诉它绘制 UI,而抽象层的数量无法改变这一点 - 也不应该:这正是在第一名。

      我想理论上您可以拥有某种帧缓冲设备并让 Swing 直接绘制到该设备上,但是 A)正如您所指出的,Swing 是基于 AWT,而 AWT 不能那样工作,并且 B)它仍然会是实现帧缓冲设备的操作系统。

      【讨论】:

        【解决方案4】:

        您需要某种与显示器的接口。显然,您可以在没有任何图形硬件的情况下在内存中创建位图。有许多网络显示协议,特别是 X Windows (X11) 和 VNC 使用的协议。您还可以让服务器通过小程序和 WebStart/JNLP 显示界面。我了解 Opera Mini 使用 midlet 来显示位图并将输入返回到在远程服务器上运行的 Web 浏览器(可能基于桌面 Opera)。 IBM 很久以前就有一个远程 AWT(在 Swing、IIRC 之前)。

        【讨论】:

          猜你喜欢
          • 2017-05-06
          • 1970-01-01
          • 1970-01-01
          • 2014-06-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-09
          • 1970-01-01
          相关资源
          最近更新 更多