产品的迁移工作接近尾声了,在这次迁移中,首次使用SWT,没什么SWT方面的经验,虽然我负责的是外围模块,使用SWT不是很多,但也算见识了SWT的一些优点和不足(指我认为的不足),这几点给我们的计划带来了不少影响,导致进度一拖再拖,发布日期一变再变,以后再用SWT,要长些心眼。以下就是我认为的SWT的几点不足:
1、SWT对象的构造,总要以父容器为参数传进构造函数,如在shell中加入一个button,对比AWT或Swing,会发现基本是倒过来一样。这个倒不能说是不足,还有些人说SWT的写法更符合面向对象的理念,但我总觉得有点别扭,特别是熟悉AWT的写法之后,再来用SWT,就算SWT的写法是对的,心里面还是觉得不应该这样做。这也有点习惯在捉弄吧。
SWT写法:
Button button = new Button(shell, SWT.NONE);
button.setText("OK");
AWT写法:
Button button = new Button("OK");
panel.add(button);
2、SWT多平台支持。由于产品需要支持MacOS、AIX、Soloris power pc/x86、HPUX、Linux(redhat/ubuntu/suse...),在这多平台支持上面的开发与调试,耗掉了不少的人日。SWT严重依赖于系统底层,不同的系统,需要不同的SWT.jar才能使产品正常地运行,即使同一平台,对Jar包的依赖也有点差异,这里就拿满地开花的Linux来说事了。本来产品用的Jar是拿eclipse 3.5的,在redhat/ubuntu/suse11上测试都没问题,结果在suse10上测试就出问题了,调试了两三天,最后换了eclipse3.4下面的SWT.jar,就能运行了,但3.4的SWT.jar与3.5的SWT.jar存在不少差异,也不能随便地把包降为3.4,而且是核心包,更换后又要花大力气测试,正可谓“这也不是,那也不是”。