转自
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之间的故事就像是火车与马车之间的故事:火车刚发明的时候,许多人嘲笑火车的速度太慢、太丑陋。火车在第一次试跑的时候,人们坐着华丽的马车和火车比赛,结果很容易就超过了火车。于是人们都在嘲笑这个丑陋、笨重而缓慢的家伙,却看不到火车的本质和潜力。几百年后,火车的速度已经超过一百多公里,运输力已经达到成千上万吨,火车已经成为现在交通的主干力量,而马车仍然在徘徊在当初。为什么呢?就因为火车的本质架构是好的;就因为火车有着很大改进空间;就因为火车设计之初的目标是远大的,不是运几百斤东西就满足了的,而是为更高速度、更大运力铺好了基础架构。
----------------------------------
觉得这篇文章写的比较经典,所以贴过来大家看看,感谢原作者。
其他连接:
千祥
杭州捷道软件
分享到:
相关推荐
SWT的设计目标是提供一个比Java Swing更接近原生平台的GUI,因此它能够更好地实现与操作系统底层的交互,提供更好的性能和更一致的外观。 在标题提到的"swt源码和jar包dj-native-swing-swt.jar"中,"dj-native-...
swing2swt java应用开发包,貌似现在很少了
Java是一种广泛使用的编程语言,在图形用户界面(GUI)设计领域提供了多种开发包,其中比较著名的有Swing、SWT和AWT。这三种技术各有特点和适用场景,在开发Java图形界面应用时,开发者需要根据实际需求选择最合适的...
总之,“在SWING、SWT中嵌入浏览器”涉及到对Java GUI库的深入理解,以及如何利用这些库与Web技术进行集成。无论是SWING还是SWT,都有其独特的方法和挑战,开发者需要根据项目需求和目标平台选择合适的方法。
9. **SWT与Eclipse IDE**:由于SWT是Eclipse的基础,因此如果你对SWT有深入了解,将有助于在Eclipse环境中进行开发和自定义插件。 综合这个压缩包中的练习,开发者可以通过运行和分析代码,了解Swing和SWT在实际...
SWT与Swing不同,它是直接操作操作系统窗口系统的API,因此在视觉上更加接近原生应用。在SWT中,你可以使用`Table`组件来实现分页,配合`TableColumn`和`TableItem`来展示数据。SWT的`Table`支持复杂的排序和过滤...
SWT Designer则使得开发者可以方便地在Eclipse中设计SWT界面,与Swing Designer类似,它也支持拖放式设计,以及组件属性的编辑和预览。SWT的优势在于它的性能通常优于Swing,因为它直接使用底层操作系统提供的控件,...
SWT则是Eclipse组织开发的一个库,目标是提供一个高性能且与平台紧密集成的用户界面工具包。SWT使用本地操作系统提供的API,因此在性能和外观上更接近原生应用程序。但SWT的缺点在于其跨平台支持不如Swing全面,需要...
- **理解组件对应关系**:首先需要了解 Swing 组件与 SWT 组件之间的对应关系,例如 Swing 的 JButton 对应 SWT 的 Button。 - **事件处理**:Swing 中使用 ActionListener 等监听器,而在 SWT 中则使用 Listener 或...
### 开发项目用SWING与RCP与SWT.JFACE的分析 #### 一、SWT简介 SWT(Standard Widget Toolkit)作为一种图形用户界面工具包,为Java开发者提供了创建高性能且外观统一的桌面应用程序的能力。相较于传统的AWT和...
Eclipse Swing SWT Builder插件就是专门针对这两个库设计的,它极大地简化了Swing和SWT组件的设计和布局工作。 Swing是Java的标准GUI库,基于Java AWT(抽象窗口工具包)并扩展了它,提供了更多的组件和更现代的...
每个AWT组件都有一个与之关联的同位体,根据不同的操作系统,同位体会呈现出对应平台的样式。同位体允许开发者利用平台原生的功能,但同时也带来了性能和灵活性的问题,因为它们依赖于底层操作系统,导致组件无法...
3. **混合使用**:SWT可以与AWT和Swing组件一起使用,允许开发者选择最适合他们需求的组件。 4. **资源管理**:SWT对内存管理更加精细,能有效防止内存泄漏。 5. **Eclipse IDE支持**:由于SWT是Eclipse的基础,因此...
swt swing awt的区别
SWT允许开发者构建与Swing界面一样丰富且性能接近原生界面的跨平台用户界面。 尽管尝试过SWT的程序员对其表现出了极大的热情,但该工具包也存在一定的局限性——SWT并不兼容所有Swing的功能。因此,对于希望从Swing...
### MyEclipse图形界面开发Swing_SWT #### 图形界面简介 - **概述** 图形用户界面(Graphical User Interface,简称GUI)是计算机科学中的一个重要组成部分,允许用户通过图形符号和视觉指示进行操作,而不是仅...
SWT与JFace结合使用时,可以提供类似于Swing的组件和布局管理功能,但其组件和API与Swing并不兼容。SWT的事件模型与AWT和Swing有所不同,需要开发者使用 SWT 事件监听器,如SelectionListener、MouseListener等。 *...
Java提供了多种库来支持图形界面开发,包括AWT(Abstract Window Toolkit)、Swing和SWT(Standard Widget Toolkit)。这些库各自有不同的特点和应用场景。 - **AWT**:这是Java最早提供的图形界面工具包,主要通过...
### 第十八章 图形界面开发——AWT,Swing,SWT #### 18.1 图形界面简介 ##### 18.1.1 概述 在本章中,我们将探讨Java图形用户界面(GUI)开发的核心概念和技术。虽然在Java开发中,Web应用程序占据了主导地位,但...