java swing有那么ugly吗?

来源:互联网 发布:查看node安装目录 编辑:程序博客网 时间:2024/04/29 06:53

前几天在网上碰到一个帖子,说到有关java swing,无数人回帖说swing is ugly。

下图是很久以前做的一个有关自动机的大作业的截图,本人做的就是有关图形界面这方面。个人认为java swing 没有像某些人想象的那么ugly吧。大家可以在https://automata-platform.dev.java.net/找到这个project,还有源代码。

的确,swing的出现些早,可能它的设计实现方面有那么一些bad smell,但是它的总体设计还有一定的可圈可点的方面的,而且事实也证明了swing可以做得非常的professional,而且还是在轻松实现的情况下。

有很多人认为和系统的感官(look and feel)一样就是good design,还有人说swing的性能不好,认为java的性能本来就不好,swing还要坚持轻量级实现,简直就是不可理喻。我想这就是当时IBM进行SWT项目的出发点吧,而且到了今天Swing vs SWT的讨论还是在满天飞,更有论调说java will never rich the desktops。

本人实在不敢苟同,拥有skinable的swing天生就可以做到native look and feel,这点不想多说。至于轻量级实现,其实她有自己的理由和优势。那些使用重量组件实现的UI,比如SWT,它本身的发展潜力很有限,依赖于GTK这样的跨平台库能够做到的仅仅是进行系统调用,也就是说他构建在一个中间层之上,它的重量级使他没法很好的操纵硬件资源(可能说得不够严谨)更何况GTK已经停止移植到windows平台,也许我们见到的SWT以后都不会有所改变了。相反,只有像swing这样的轻量级实现才有能力做到性能和灵活性的最佳平衡,因为swing的绘制引擎是透明的,可以方便的更换,比如使用windows的GDI,甚至DirectX,OpenGL(好像1.5的就测试性地支持OpenGL渲染),这样使得swing的渲染机制本身从结构上就得到了巨大的优势。相信下一个版本的java swing(mustang)会有更加优秀的表现(这篇blog http://weblogs.java.net/blog/campbell/阐述了swing的OPENGL渲染机制)。

原创粉丝点击