是否可以在java中编写“纯”轻量级代码? Swing很轻巧,但即使它有重量级组件,如JWindow,JFrame,JDialog和JApplet。因此,即使Swing应用程序也不是100%独立于底层操作系统
是否可以在java中使用轻量级应用程序,这些应用程序完全独立于图形显示的底层操作系统?是否可以在java中编写这样的代码?
答案 0 :(得分:8)
至少要到所有JVM都必须支持它们。
我想我不明白你的意思100%独立。在它的核心,Swing只需要访问核心窗口管理器和一个blitter,虽然它显然可以(并且确实)使用更多。
简单地说,移植JVM的一部分包括移植Swing所需的核心图形功能。有些端口比其他端口更好地利用操作系统,但在高级别的Swing级别,你通常不关心它。
答案 1 :(得分:1)
不,如果你想在屏幕上画画,你需要让操作系统为你做。
如果您担心Swing的性能或膨胀,请查看SWT。它的重量更轻,与原生的外观更紧密地匹配(因为它或多或少是OS GUI内容的包装)。
答案 2 :(得分:0)
最后,只有操作系统知道它有什么图形硬件,以及如何告诉它绘制UI,而不是抽象层的数量可以改变它 - 也不应该:这正是在操作系统中使用操作系统的重点。第一名。
我认为理论上你可以使用某种帧缓冲设备并直接使用Swing绘制,但是A)如你所说,Swing基于AWT,而AWT不能像那样工作,而B)它仍然会是实现帧缓冲设备的操作系统。
答案 3 :(得分:0)
您需要与显示器进行某种接口。显然你可以在没有任何图形硬件的情况下在内存中创建位图。有许多网络显示协议,特别是X Windows(X11)和VNC使用的协议。您还可以让服务器通过applet和WebStart / JNLP显示接口。据我所知,Opera Mini使用midlet显示位图并将输入返回到在远程服务器上运行的Web浏览器(可能基于桌面Opera)。 IBM过去很久以前就已经拥有了远程AWT(在Swing,IIRC之前)。