Send As SMS

2005-06-21

Ideas on Swing & UI

我对Swing没有过深入的研究和学习,也很少编写Swing的应用程序。对于SWT来说,也是如此。但我从感觉上,总觉得SWT很别扭,姑且不说SWT 的那一套 style bit mask,明显的是早期 C 程序的痕迹,从核心实现的角度来看,SWT就缺乏Swing的那种气度,什么东西都依赖于所谓的native世界,在不同的平台上,移植的工作量,以及由 此带来的复杂度并不会见到就比全部重新使用Java来渲染一套组件要简单。

或许,在刚开始的时候,SWT可以快速速成,毕竟只需要对native进行封装就可以了,而Swing则不然,要把Windows等这么多年发展而来的 UI从零开始,除了工作量大,而且一开始效果也比较差,尤其是对于UI这样一个用户非常敏感的区域,所以,在Java的世界中,总是由那么多的对 Swing用户界面不满的呼声:Swing速度慢、用户界面别扭,等等不一而足。

然而,就像 Windows 也是从 Windows 3.1发展起来的一样,Swing 的用户界面总是可以向 native 无限靠拢,甚至超越的,尤其是在即将来临的3D世界,一个Pure Java的UI将快速的将native的UI抛在后面。

其实,Swing中抱怨最大的,应该是它的Look&Feel部分,客观来说,Swing自带的Meta L&F的效果确实比较糟糕,只能算是一个 L&F 的参考实现。做一个漂亮的L&F,其实不是什么技术难度的问题,而是美学设计的问题,估计Swing小组的专家们,技术专家比美学专家要多。(在 几乎所有的UI世界里,程序员都很难做出漂亮的UI来的,这也正是为什么WEB界面是那么的成功,因为WEB界面大部分是一般不需要软件技术的WEB工程 师的杰作,程序员仅仅是隐藏在UI的后面的)。

在Java5中,新增加了一种 L&F ,名之为:Synth。 这种L&F就是一种可以配置的,这种配置可以在一个工具的支持下,让具有美感的人来进行。其实,这种方法是技术与美学的最佳结合,让有美感的人来 写L&F,要求太高,让会写技术的人来做L&F,可行性也太低。而设计一个可以配置的L&F,所有的美术上的东西,以配置的形 式,交给美学工程师来进行,这里面,主要也就是类似于HTML世界中的css的工作:色彩、字体、背景、边框,等等。已经有一个 XUI 的框架,可以让UI工程师,使用SVG来进行一些渲染的配置。这应该是一个很有刺激性的发展方向,因为,借助于SVG的强大渲染能力,组件可以提供更复 杂、灵活的L&F,而且,这是以一种美学专家所擅长的方式来进行的。

或许,Java5还应改从CSS中借鉴一些有价值的地方,包括:
  • 更为一致的样式配置。基本上,所有的组件都可以使用一致的方式来进行样式的配置。而且这种配置可以与UI高度的独立。设想,软件工程师提交一个UI,你可以通过对其进行重新的Layout、设置style来对其进行美化,那么,要做一个漂亮的UI应用应该也不是一件难事。
  • CSS的cascade功能,使得你可以灵活的定义任何对象的显示样式,这一点,与 Motif 编程中的外部资源配置文件有非常相似的地方,只是更为规范化、开放一些。
同时,Swing作为一个低层的UI框架,从应用的角度来看,我们还是需要一个类似于 XUL + XHTML + SVG 之类的基于XML的,支持Javascript等脚本语言的应用模式(我以前写过这些主题的Blog),从而将UI的工作可以更为充分的交给UI工程师来 完成,这就要求有类似于Firefox这样的技术支持,包括 WYSIWYG 的编辑器、Javascript调试器、DOM察看器等。让一个UI的程序总是可inspect的,可control的。

我也准备在后续的工作中,多花点时间来学习学习Swing、UI方面的知识,了解Swing的结构,了解UI的技术,包括Java2D等技术。

0 Comments:

张贴评论

<< Home