`
lxdhdgss
  • 浏览: 45247 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Swing与SWT的比较(转)

    博客分类:
  • JAVA
阅读更多
转自http://yebinghuai.bokee.com/viewdiary.16763090.html,作者久远大名

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

----------------------------------
觉得这篇文章写的比较经典,所以贴过来大家看看,感谢原作者。
其他连接:
千祥
杭州捷道软件

分享到:
评论
4 楼 xykpermit 2008-11-10  
我以前也是做J2EE的,现在正在使用SWT中,因为公司要用RCP了
3 楼 xieke 2008-10-17  
我用swing开发出的程序因为太慢而被弃用不得不用swt 重写重写!!!
2 楼 lxdhdgss 2008-06-21  
我一直是在J2EE方面的,最近也开始看SWING,但是由于对ECLIPSE还是比较满意的,所以不知道该选择哪个,所以对这些方面开始关注起来。根据自己的了解和网上大家的见解,开来SWING还真的是火车。呵呵!
1 楼 murainwood 2008-06-21  
就Swing与SWT的开发体验来说,SWT给开发者的体验往往是对于SWT的满意程度同使用SWT的时间成反比,同对SWT和Swing的了解程度成反比。刚开始往往是非常满意,甚至有惊艳的感觉。但随着使用时间的增长,随着对于SWT了解的深入,这种满意度就会越来越下降。总之喜爱程度和了解程度成反比。Swing给开发者的体验是。开始也许你要经常发牢骚,这些牢骚就像在抱怨一个饱经风霜、看似相貌平平、但实际却非常有内涵的人一样。随着你对它的了解的加深,你就会越来越被它吸引,最终你会惊叹于它的博大精深。你会发现你越学懂得越少,而你的知识和能力却像内力一样越来越深厚。总之喜爱程度和了解程度成正比。

-------------切身感受!!!!!!!

相关推荐

    swt源码和jar包dj-native-swing-swt.jar

    SWT的设计目标是提供一个比Java Swing更接近原生平台的GUI,因此它能够更好地实现与操作系统底层的交互,提供更好的性能和更一致的外观。 在标题提到的"swt源码和jar包dj-native-swing-swt.jar"中,"dj-native-...

    swing2swt包

    swing2swt java应用开发包,貌似现在很少了

    浅析Java中Swing与SWT和AWT的区别及实现_王亚南

    Java是一种广泛使用的编程语言,在图形用户界面(GUI)设计领域提供了多种开发包,其中比较著名的有Swing、SWT和AWT。这三种技术各有特点和适用场景,在开发Java图形界面应用时,开发者需要根据实际需求选择最合适的...

    在SWING、SWT中嵌入浏览器

    总之,“在SWING、SWT中嵌入浏览器”涉及到对Java GUI库的深入理解,以及如何利用这些库与Web技术进行集成。无论是SWING还是SWT,都有其独特的方法和挑战,开发者需要根据项目需求和目标平台选择合适的方法。

    关于swing和swt的小练习

    9. **SWT与Eclipse IDE**:由于SWT是Eclipse的基础,因此如果你对SWT有深入了解,将有助于在Eclipse环境中进行开发和自定义插件。 综合这个压缩包中的练习,开发者可以通过运行和分析代码,了解Swing和SWT在实际...

    java Swing、SWT分页

    SWT与Swing不同,它是直接操作操作系统窗口系统的API,因此在视觉上更加接近原生应用。在SWT中,你可以使用`Table`组件来实现分页,配合`TableColumn`和`TableItem`来展示数据。SWT的`Table`支持复杂的排序和过滤...

    Swing Designer SWT

    SWT Designer则使得开发者可以方便地在Eclipse中设计SWT界面,与Swing Designer类似,它也支持拖放式设计,以及组件属性的编辑和预览。SWT的优势在于它的性能通常优于Swing,因为它直接使用底层操作系统提供的控件,...

    eclipse swing/SWT插件

    SWT则是Eclipse组织开发的一个库,目标是提供一个高性能且与平台紧密集成的用户界面工具包。SWT使用本地操作系统提供的API,因此在性能和外观上更接近原生应用程序。但SWT的缺点在于其跨平台支持不如Swing全面,需要...

    Java Swing to SWT.pdf

    - **理解组件对应关系**:首先需要了解 Swing 组件与 SWT 组件之间的对应关系,例如 Swing 的 JButton 对应 SWT 的 Button。 - **事件处理**:Swing 中使用 ActionListener 等监听器,而在 SWT 中则使用 Listener 或...

    Eclipse Swing Swt builder 插件安装包及安装说明

    Eclipse Swing SWT Builder插件就是专门针对这两个库设计的,它极大地简化了Swing和SWT组件的设计和布局工作。 Swing是Java的标准GUI库,基于Java AWT(抽象窗口工具包)并扩展了它,提供了更多的组件和更现代的...

    swing和swt

    每个AWT组件都有一个与之关联的同位体,根据不同的操作系统,同位体会呈现出对应平台的样式。同位体允许开发者利用平台原生的功能,但同时也带来了性能和灵活性的问题,因为它们依赖于底层操作系统,导致组件无法...

    图形界面开发--AWT,Swing,SWT

    3. **混合使用**:SWT可以与AWT和Swing组件一起使用,允许开发者选择最适合他们需求的组件。 4. **资源管理**:SWT对内存管理更加精细,能有效防止内存泄漏。 5. **Eclipse IDE支持**:由于SWT是Eclipse的基础,因此...

    swt swing awt的区别

    swt swing awt的区别

    swing to swt

    SWT允许开发者构建与Swing界面一样丰富且性能接近原生界面的跨平台用户界面。 尽管尝试过SWT的程序员对其表现出了极大的热情,但该工具包也存在一定的局限性——SWT并不兼容所有Swing的功能。因此,对于希望从Swing...

    MyEclipse图形界面开发Swing_SWT

    ### MyEclipse图形界面开发Swing_SWT #### 图形界面简介 - **概述** 图形用户界面(Graphical User Interface,简称GUI)是计算机科学中的一个重要组成部分,允许用户通过图形符号和视觉指示进行操作,而不是仅...

    SWT Swing与AWT区别

    SWT与JFace结合使用时,可以提供类似于Swing的组件和布局管理功能,但其组件和API与Swing并不兼容。SWT的事件模型与AWT和Swing有所不同,需要开发者使用 SWT 事件监听器,如SelectionListener、MouseListener等。 *...

    Java图形界面开发-awt、swing、swt

    Java提供了多种库来支持图形界面开发,包括AWT(Abstract Window Toolkit)、Swing和SWT(Standard Widget Toolkit)。这些库各自有不同的特点和应用场景。 - **AWT**:这是Java最早提供的图形界面工具包,主要通过...

    第十八章 图形界面开发--AWT,Swing,SWT.pdf

    ### 第十八章 图形界面开发——AWT,Swing,SWT #### 18.1 图形界面简介 ##### 18.1.1 概述 在本章中,我们将探讨Java图形用户界面(GUI)开发的核心概念和技术。虽然在Java开发中,Web应用程序占据了主导地位,但...

Global site tag (gtag.js) - Google Analytics