天堂的另一角

天堂魷魚的原创技术博客。所謂兼容並包,無奇不有。

 

发现SWT和平台确实绑定过紧

素来就比较喜欢SWT,因为和Swing比起来,和本地程序观感一致的SWT要更亲切些,而且性能上也更有优势,加上Eclipse的声势,SWT就更显得魅力无穷了。

不过,从Netbeans5.0发布以来,随着Netbeans的越加成熟以及Swing的性能提升,有关“Netbeans vs Eclipse”、“Swing vs SWT”之类的讨论,就变得更加激烈了。据说有不少开发团队都已经从Eclipse转向Netbeans了。
我好奇地试用了一下Netbeans,觉得比起当年的3.x来说,进步确实相当大。就速度来说,虽然不觉得快,但至少和Eclipse不相上下。虽然没有Eclipse那么大的声势,但Netbeans的插件阵营也在逐步丰富,俨然有后起直追之风。
无论如何,有竞争才会有进步,两个IDE在争斗,广大开发人员就有福啦!一家独大显然不会是太好的局面。

抛开IDE不谈,我倒是对SWT产生了些许厌烦:它的跨平台特性非常糟糕。我对SWT的性能并不太关注,也许Linux上的SWT确实并没有做什么优化,但至少它目前的性能和观感还是能令我满意的(和Swing相比的话)。
然而,SWT和平台的绑定实在太过紧密了!这造成了软件跨平台发布的问题。SWT软件在发布时,除了需要包括各种class文件和必要的资源文件之外,还必须包括SWT库:一个swt.jar,外加数量不等的链接库/共享库。这个庞大的swt.jar是平台相关的,也就是说每个平台都有自己的swt.jar文件。swt.jar甚至还是版本相关的,即使是同一个平台,还存在不同版本的swt.jar,它们各自都要求链接和各自版本号一致的链接库/共享库。
这种令人厌烦的事情让人想起当年发布VB软件时的情景。不过,许多电脑都根本没有预装SWT的运行时文件。除了大大增加了软件的发布大小之外,这种发布方式也使得Java“一次编译,到处运行”变成了传说,而真正成为了“一次编译,到处调试”。

我最近在尝试“移植”一个用SWT写的跳棋游戏,从Windows到Linux,再到Mac。我非常不愿意用“移植”这个词,因为这让我对Java的良好印象大打折扣。我原本的目标是对其进行改进,使其能在这三个系统上都可以直接运行,就像一般的Swing程序那样。
首先,我在Linux上无法运行该程序,意料之中。原程序(二进制版本)大小仅750K,Windows版本的SWT运行时文件共1.6M。在拷入了Linux版本的SWT运行时文件(共2.2M)之后,程序仍然无法运行,意料之中,当然是类路径的问题。
当我最终解决完这个问题之后并成功完成Linux版本的“移植”之后,我终于明白了,对于SWT程序来说,“一次编译,到处运行”几乎是不可能的。首先就要把各种平台的运行时文件都带上,可以想象这个软件会变得有多庞大了。然后是设置类路径,由于需要跨平台,这居然成了个大问题:你得根据当前的平台来选择对应的swt.jar。
所以,同样是Java程序,但“通用版”的SWT程序是不会有的了。你只能为一个Java软件分别发布Windows版本、Linux版本、Mac版本,而为了保证这些版本都能正常工作,你还必须在各个平台进行测试,就像过去发布C++的项目一样。

也许有很多人不会介意这个问题吧,例如Eclipse。但是对于更多的人来说,需要发布及维护多个平台的版本,无疑是种十分无聊的工作:这可是Java程序。
我想,就算跟平台绑定是种折衷,至少也该提供个便于发布各种平台版本的SWT软件的工具吧?如果我可以在Windows版本的Eclipse中选取“生成Linux平台的可执行Jar文件”,即使需要带上那2.2M的庞大运行时文件,我想我也可以暂且心安理得的接受了。

posted on 2006-09-07 01:06 Addone 阅读(1381) 评论(1)  编辑 收藏 引用 所属分类: 软件开发

评论

# re: 发现SWT和平台确实绑定过紧 2006-09-16 13:11 Tony Zhou

早就不看好SWT, Sun提供Swing就是为了解决平台相关问题. 历史会不断的重复, AWT已经走过的弯路, SWT又一次走上去. Swing慢点也是我当然的选择, 现在看非常正确. Netbean的确不错, James Gosling出手, 款款是精品.  回复  更多评论   

只有注册用户登录后才能发表评论。

导航

统计

公告


Addone,又名:天堂鱿鱼。
这里是我的技术博客。其他文章
作为“杂感”分类存档。
我的新思想主要发往新站:
幻想园
幻想园

欢迎光临

Linux注册用户

feedsky
抓虾
google reader
bloglines

联系方式




My status

常用链接

留言簿(11)

随笔分类(99)

随笔档案(69)

相册

友情链接

推荐站点

搜索

积分与排名

最新评论

阅读排行榜