Swing与SWT的比较

Swing与SWT的比较

    基于以前的文章,本文Swing和SWT的方方面面做一个简短的比较。它们的优劣点在前面的文章中都曾详细讲述过,这儿只是简单罗列出来,不再做详细论证。你可以参看前面的文章,对照这些比较。对于一些观点性的比较,比如后面的体验和感受则纯粹是我个人的想法。

    简短的说Swing相对于SWT的优势有:速度快、有皮肤机制支持、优秀的框架、灵活可扩展、官方标准、47%的市场占有率、丰富的第三方类库、不计其数的学习材料、强大免费的图形界面设计工具(NetBeans Matisse)。相对于SWT的缺点有:多耗10M左右内存、启动速度稍慢、桌面集成相对弱。两者都有着漂亮的本地化外观。这些内容我们在前面的文章中都连篇累牍的介绍过。

    从两者当初设计的目标来看,SWT是治标,目的是为了提高速度、改善外观;Swing是治本,它从框架、结构着手。Swing因此有着比SWT更广阔的发展空间。由于有着优秀的架构,而且Java完全控制着实现权,所以Swing总是可以不断被改进的。当Swing成熟了而弥补了速度和外观后,Swing的发展就因其良好的架构,就因为代码控制权等因素,而呈现出一片广阔的天空。而SWT从一诞生起,其先天性架构和实现缺陷就已经决定它很难前进。由于依赖本地操作系统,SWT可以发展的空间很小。开始也许可以借助操作系统的本地实现来快速达到很好的效果,但到此就结束了,自己再优化反展的空间就很小了。它将的实现大部分都交给了异质的系统,它无法控制的系统,却需要花费相当代价进行交互的系统。

    SWT上手速度要快一些。因为SWT的API类似于传统的GUI工具,这使得许多从传统GUI工具中转过来的程序员很容易上手。传统GUI工具系统尤其是Windows平台的,是基于消息映射机制的,其基本模型是面向过程和面向消息的。Swing的设计思想是基于面向对象的典范,其MVC模式是程序设计模式的经典。总的来说,Swing之于SWT就像面向对象语言之于面向过程语言。但就学习曲线来说,Swing并不比SWT陡峭。Swing本身已经非常成熟,官方提供的文档,各种网上资料、书籍、讨论区浩如烟海,其实学习曲线也未必比SWT陡峭。

    就Swing与SWT的开发体验来说,SWT给开发者的体验往往是对于SWT的满意程度同使用SWT的时间成反比,同对SWT和Swing的了解程度成反比。刚开始往往是非常满意,甚至有惊艳的感觉。但随着使用时间的增长,随着对于SWT了解的深入,这种满意度就会越来越下降。总之喜爱程度和了解程度成反比。Swing给开发者的体验是。开始也许你要经常发牢骚,这些牢骚就像在抱怨一个饱经风霜、看似相貌平平、但实际却非常有内涵的人一样。随着你对它的了解的加深,你就会越来越被它吸引,最终你会惊叹于它的博大精深。你会发现你越学懂得越少,而你的知识和能力却像内力一样越来越深厚。总之喜爱程度和了解程度成正比。

    对我来说,Swing和SWT之间的故事就像是火车与马车之间的故事:火车刚发明的时候,许多人嘲笑火车的速度太慢、太丑陋。火车在第一次试跑的时候,人们坐着华丽的马车和火车比赛,结果很容易就超过了火车。于是人们都在嘲笑这个丑陋、笨重而缓慢的家伙,却看不到火车的本质和潜力。几百年后,火车的速度已经超过一百多公里,运输力已经达到成千上万吨,火车已经成为现在交通的主干力量,而马车仍然在徘徊在当初。为什么呢?就因为火车的本质架构是好的;就因为火车有着很大改进空间;就因为火车设计之初的目标是远大的,不是运几百斤东西就满足了的,而是为更高速度、更大运力铺好了基础架构。

 

[匿名] jeffreyhsu

2007-03-08 19:38:30
说得太好了,SWT的满意度和使用时间成反比,这我太同意了
我们公司就用SWT做开发,刚开始界面做的很漂亮,但越到后来发现毛病越多,很多性能问题(正常起来很快,但一旦不正常就是crash),不同操作系统表现差异非常大,有时候不可控
但是swing的设计性绝对是最好的,架构非常的优雅,设计模式的运用充满大师智慧,绝对是一件艺术品,仔细研究对于功利的提升非常明显
因为有着良好的架构,扩展和维护swing都较之SWT要容易非常多
也许一开始用Swing要多花一些时间来设计,但绝对是值得的
反倒是Eclipse的RCP和swt,怪异的方法名和实现方式让人非常不舒服,并且有些特殊(但以swing来看不特殊)功能无法实现

Swing的经典应用可以参考jivesoftware的IM Spark,代码写的相当漂亮

 
 

2007-03-08 21:24:22
此文每一句话我都赞成,没有一句反对。SWT 总体上来像Swing ,可实际上有时像MFC,现在我想起MFC 就想吐

 
 

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值