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

【编辑推荐】

  1. 概述Swing大多数控件
  2. GUI程序与Swing中的线程
  3. 浅析Swing.SWT和AWT的区别
  4. AWT和Swing的区别
  5. 浅谈Swing中提供了JOptionPane
责任编辑:佚名 来源: 电子工业出版社
相关推荐

2009-07-10 11:07:18

Swing和SWT

2009-07-15 15:15:42

比较Swing和SWT

2009-07-15 16:39:51

AWT和Swing

2009-07-15 10:23:51

Swing SWT集成

2009-07-16 13:37:33

Swing和AWT

2009-07-17 15:30:30

JFaceAWT和SWTSwing

2009-07-17 09:36:14

SWT和Swing的区

2009-07-14 16:02:04

SWT和Swing

2009-07-14 15:12:36

SwingSWT和AWT

2009-07-10 13:36:32

Swing容器

2020-07-07 07:00:00

RustGo语言编程语言

2009-07-17 09:44:28

Look And Fe布局管理器SWT和Swing

2009-07-17 10:25:41

AWT和SwingSWT

2009-07-17 09:55:02

事件监听器SWT和SwingAWT

2019-12-16 08:00:00

ReactAngularVue

2009-06-26 14:37:10

EJB和Spring

2009-07-17 09:07:20

2009-06-24 16:16:30

JSF和Tapestr

2021-01-14 09:00:00

开发FedoraUbuntu

2009-08-18 10:24:03

Java开发工具
点赞
收藏

51CTO技术栈公众号