Topic: 有了Swing为什么还要SWT?

  Print this page

1.有了Swing为什么还要SWT? Copy to clipboard
Posted by: shawnma
Posted on: 2005-02-02 14:05

我最近看到有许多人在学习SWT,我对SWT不是很了解,因为我一直在用Swing进行开发。我只是想问一句,既然已经有了Swing为什么还要SWT?

2.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: tzutolin
Posted on: 2005-02-02 14:31

一般而言, SWT 的反應速度會比 Swing 教人滿意, 因此有人就用 SWT 來開發應用程式.

3.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: caike
Posted on: 2005-02-02 14:48

Swing和SWT是采用不同的机制的,AWT是Swing的前身,实际上是调用本地操作系统的控件。由于在不同的操作系统下,提供的控件是不一样的,AWT采用最小公约数的办法,只提供所有操作系统都有的控件。但后来SUN改变了做法,在Swing里除了JFrame,JWinodows,JDialog(记不太清了,好像是这几个)是调用本地操作系统的控件,其它JPanel,JButton之类的都是绘出来的,所以Swing在所有平台看起来都是一样的外观。这样保持了外观一致性,但牺牲了性能。
IBM更喜欢AWT的实现机制,做出了SWT,SWT采用的是最大公倍数的做法。SWT大部分都是用的本地操作系统的控件,一些在windows里有的控件可能在linux下没有,对这种控件才采用自己绘制的方式。SWT采用类似JAVA虚拟机的方式,在不同的平台,有不同的开发包,我们写的java代码是一样的,但不同平台下看起来外观是不一样的,但性能提升很高,据说和C++做的界面速度差不多:)
也许你会问哪种更好,引一名话:this is equivalent to asking whether a harmmer is better than a screw driver,of course ,a hammer wieldded with sufficient force can probably drive a screw into a wall ,and the butt of a screw can be used in a pinch to knock in a nail. However, a good carpenter keeps both harmer and screw drivers in her tool box and will use the tool that is appropriate for the job at hand.
个人感觉以前java做界面完全没有优势,从外观到性能(我很喜欢Swing的look and feel,可以改变风格),SWT的出现改变了性能上的缺点,再加上JFace,及Eclipse的RCP,我还是倾向于用SWT。

4.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: shawnma
Posted on: 2005-02-02 17:43

谢谢,长见识了。

5.SWT只能用于做Application,而AWT、Swing可以做Applet与Application [Re: caike] Copy to clipboard
Posted by: YuLimin
Posted on: 2005-02-02 18:43

AWT只能用于做Application,而AWT、Swing可以做Applet与Application

===>不好意思,打错了一个字:(

SWT只能用于做Application,而AWT、Swing可以做Applet与Application

6.Re:AWT只能用于做Application,而AWT、Swing可以做Applet与Application [Re: YuLimin] Copy to clipboard
Posted by: Jove
Posted on: 2005-02-02 22:11

AWT不能做Applet么

笔误?

7.Re:AWT只能用于做Application,而AWT、Swing可以做Applet与Application [Re: YuLimin] Copy to clipboard
Posted by: PrimeJava
Posted on: 2005-02-02 22:43

YuLimin wrote:
AWT只能用于做Application,而AWT、Swing可以做Applet与Application

他想说的是:SWT只能用于做Application,而AWT、Swing可以做Applet与Application
Wink

8.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: errorter
Posted on: 2005-02-04 16:33

SWT似乎是从以前的smalltalk团队发起的吧?

记得以前Jove还是谁来着发过一个关于SWT历史及发展的帖子

9.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: wdh113
Posted on: 2005-02-04 23:23

SWT……内幕?
FooSleeper 翻译

原文:
http://groups.yahoo.com/group/straight_talking_java/
http://groups.yahoo.com/group/straight_talking_java/messages/24236

翻译整理:FooSleeper
最后修改:2004-03-03

译注:本文来自straight_talking_java@yahoogroups.com讨论组,已经是一年多前的文章。Alan Williamson是Java Developers Journal的编辑,下文来自他在IBM的一个消息来源。SWT和Swing的论争我见过不少,Netbeans和Eclipse的也同样多。译者翻译此文并不是要激起什么争执,也不是支持哪一方(虽然我的确是站在SWT一边的),更不是要攻击Amy。我最重要的理由是,这是一篇有趣的文章。里面有内幕、线人、公司政治、垄断巨头、美女、商界风云……足够拍一出电影。有趣,这就够了。不过此文反映了IBM对Swing的看法和SWT的由来,还是有一点营养的。

From: Alan Williamson <alan@n-ary.com>
Date: Wed Nov 6, 2002 10:31 am
Reply-To: <straight_talking_java@yahoogroups.com>
To: <straight_talking_java@yahoogroups.com>
Subject: SWT ... the scoop?(SWT……内幕?)

好了这就来……阅读……消化……再阅读……再消化……
Wink

--------------------------------
谢谢你的回复。我很乐意给你提供Swing和SWT背后的一些信息,既然你还把我当作你秘密的“IBM内幕线人”。

要想弄清楚为什么一切都被弄得如此混乱,要从几年前只存在AWT的时候说起。SUN当时已经建立了一套基本的可移植控件类,这些类映射到不同操作系统上的原生窗口组件(native widget),显然下一步应该继续增强这套模型,除了初始的CUA 92组件(文字、按钮等等),再继续加上表格、树、记事本、滑块等等……当时的AWT还满是漏洞,远不能称为可靠,还需要SUN的coder们去修补。SUN的developer们如Graham和Otto总是习惯于公开把他们的bug归咎为操作系统的差异,比如“Windows和OS/2的焦点次序不同”或者“在……之间Ctrl-X的行为不一样”,以及其他苍白的托辞,好让批评的火力从SUN太早释出代码这个问题的真相上移开。然后Amy Fowler来到了SUN。不是我大男子主义,Amy是个聪明的美女,大多数呆头呆脑只懂技术的开发人员都要被她捏在手里。

Amy来自一家Smalltalk公司,叫做Objectshare,在那里她负责搞UI类库。跟Java相比Smalltalk的历史有些悲惨,曾几何时有3家庞大的Smalltalk公司——IBM、Parc-Place和Digitalk。在90年代初期3家公司的市场份额大致相等,生活是美好的。Parc-Place采用仿窗口部件(emulated widgets)的设计(即Swing的设计),IBM和Digitalk则采用原生窗口部件(native widgets)。后来IBM压倒了另外两家,因此他们打算合并成一家,假设叫做Parc-Place Digitalk。随后当他们试图将他们的产品融合到一个叫做Jigsaw的计划中时爆发了一场大战,计划由于政治原因失败了(开发人员实际上已经能让它运转起来),就因为原生和仿造两派的死战。Amy赢得了精神上的胜利,不过在IBM我们赢得了他们所有的生意,因为这两家公司在一整年里除了吵架什么都没做。当尘埃落定之后PPD(Parc-Place Digitalk当时已改名为Objectshare,跟Windscale改名为Sellafield的原因相同——让人们淡忘之前发生的灾难)的股票价格从60美元掉到了低于1美元1股。他们因为伪报收入被NASDAQ摘牌,从此消失。此时SUN正走上与PPD类似的技术方向,于是PDD的技术人员都把他们的简历投到了SUN。Amy被雇佣了,她承诺通过轻量级方案解决所有窗口组件的问题,因此说服SUN管理层让她当了GUI开发部门的头头。她是拿着“这里原来的人都搞砸了,我是来解决的”的钥匙进来的。随后Amy雇佣了所有她过去在Parc-Place的旧朋友,让他们来开发Swing。

显然Swing应该做的是仅仅成为一个绘制框架,给那些希望创建地图软件或者绘图软件的人们使用,无论如何,应该围绕AWT类库来建造它,按钮之类的东西仍然交给AWT来管。SUN的人比如Philip和Mark已经让AWT能够处理表格、树和记事本(notebook,?),所以Swing的方向应该说很明显了。但那些毁了PDD的人不干,他们非要把一切都弄成轻量级的。由于SUN管理层的无知,再加上Amy无情的政治手段,造成了我们今天所见的混乱局面。Amy还使SUN相信Swing是作为Mozilla项目的一部分与Netscape联合开发的,事实上这只是她的宣传伎俩。

在IBM,我们从第一天起就憎恶Swing。庞大、满是错误,而且难看至极。原先我们的工具如VisualAge for Java都是用Smalltalk(用的是原生窗口组件)写的,所以当我们将这些工具向Java代码库迁移时,我们需要一套窗口组件。IBM这边的开发人员都是原来搞Smalltalk的那一批人,我们对管理层要求用Swing来构建WebSphere Studio工具都非常不情愿。Swing是个可怕的充满缺陷的怪兽。在WebSphere Studio最初的预览中,当与Microsoft Visual Studio作对比演示的时候,我们所有的客户都讨厌它,就因为它的外观,而不管它的功能有多强。大多数消费者都不会买一辆让人觉得难看的车,哪怕这车有一台出色的引擎。因此我们开始了一个项目,是把我们的Smalltalk原生窗口组件移植到Java上去。这个项目是加拿大的Object Technology International小组做的。这个项目获得了成功,被运用在在我们发布的VisualAge Micro Edition产品中,VisualAge Micro Edition后来成为J2ME开发方面一个非常成功的IDE。但是OTI的人发现,Swing在读取Windows事件方面有极严重的缺陷,我们甚至无法进行SWT(S开始是Simple的缩写,不过后来变成了Standard的缩写)和Swing间的互操作。他们在读事件队列的时候用了一种可能留下内存漏洞的方式,所以我们不得不采用我们自己的查询Windows事件队列的循环,以纠正这个错误。我们试了一次又一次让SUN修复这个错误,但Amy就是听不进去,所以我们才决定SWT和AWT/Swing不能共存。我们甚至在SWT中定义了自己的Point和Rectangle类——整个工具包对AWT或Swing都没有任何依赖。我们把这个工具包放到了Eclipse中,这是一个工具平台,它的总体设计目标就是要战胜Micrsoft和Visual Studio。Eclipse是开源的,所以任何人都可以在上面构建自己的东西,我们已经有像TogetherSoft和Rational这样的公司移植到了上面。我们的竞争者是Microsoft,所以我们所有努力和注意力都是从正面针对Microsoft。

不管怎么说SUN对此非常不满。他们的Netbeans跟Eclipse做的是相同的事,因此他们向IBM高层抱怨。他们认为SWT是要将你绑到Windows上,这纯粹是胡说,因为SWT能通过GTK在Mac/Linux上运行,以及一大堆嵌入式平台。他们拒绝让Eclipse获得Java认证,因为里面有原生代码,所以Eclipse产品必须很小心地使用单词“Java”这个SUN的商标。Eclipse甚至不能把自己称为一个Java IDE,SUN已经威胁过要采取法律行动来制止IBM在任何时候把Eclipse称作一个Java IDE。结果之一就是IBM在Eclipse上创建的GUI设计工具,允许你构建Swing/AWT GUI,却不让你往里面拖放SWT窗口控件。

将SWT从Eclipse中分离出来是完全可能的,只需要把DLL抠出来放到路径中,并使用窗口组件工具包来给你的银行或者保险或者其他什么应用程序开发GUI。再次说明,我们无法更进一步,因为SUN把我们的双手绑上了。虽然作为Eclipse开放源码协议的一部分,CPL允许我们提供这样的解决方案,但SUN已经很清楚地表明他们不希望我们这样做。

对于用户社区来说,无论IBM和SUN的最终动机是什么,我发现有一点总是很有趣:喜爱Swing的人总会说“一旦你花上几年时间去掌握它,你就能正确地使用它”,这基本上是他们在试图证明和维护他们辛苦得来的用途有限的专门技术;而SWT的拥护者们说的是“哇,这真快,这跟原生的一样,还可以用XP皮肤……它还又轻又小”。有一句话是我喜欢的,我们的一个用户说,Swing就像Java决定不通过操作系统来实现原生的IO,而是通过磁头马达API自己来读磁盘的扇区。Swing基本上就是这样的,它拿着个底层的“paint(Graphics)”方法,自己来绘制所有的窗口组件。
--------------------------------

后记:现在的情况已经有所不同,SWT到底还是单独发布了,VE也承诺在1.0版的时候支持SWT的GUI设计。

10.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: elliott
Posted on: 2005-02-06 11:56

这个问题就像

有了电信宽带还为什么要有铁通、网通宽带一样。。

多几家竞争不是很好么? 至少对我们有好处。。多一样选择。。

11.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: YuLimin
Posted on: 2005-02-10 21:22

Java由Applet(AWT)起家,现在SWT似乎。。。所以感觉不具什么可比性吗?

再说:
SWT只能用于做Application,而AWT、Swing可以做Applet与Application

所以,各取所需吧。。。

12.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: ildg
Posted on: 2005-02-15 17:15

swt速度快,
和swing有数量级的差别,
swing让p4变成了286,
而swt让p4更像p4。
swt做出的程序更具有本地化的特征,
也就是说,
如果你用swt写一个windows程序,
仅仅从外表上别人很难看出你是用java写的。
至于swt有什么劣势,
前面也有人说了,
swt只能用于application。
还有就是目前swt中的组件很少,
而且功能也太简单。

13.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: 九佰
Posted on: 2005-02-16 13:08

现在写的程序一般要求对applet和application都要支持。
就是说在IE里面执行就是applet,直接执行就是application,除此之外
在界面和功能上没有什么区别。

由于applet方式需要下载,使用的jar包,尽可能的小。
所以使用的技术和方法,优先考虑封装在java中的。

14.Re:有了Swing为什么还要SWT? [Re: YuLimin] Copy to clipboard
Posted by: yipsilon
Posted on: 2005-02-16 16:53

YuLimin wrote:
Java由Applet(AWT)起家,现在SWT似乎。。。所以感觉不具什么可比性吗?

再说:
SWT只能用于做Application,而AWT、Swing可以做Applet与Application

所以,各取所需吧。。。


Java Web Start 程序, SWT也可以做的. JWS技术在企业级应用很多的.

15.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: yipsilon
Posted on: 2005-02-16 16:56

好文, 引用了: http://blog.csdn.net/yipsilon/archive/2005/02/16/289850.aspx

16.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: longwang
Posted on: 2005-02-21 13:38

swing让p4像286也太夸装了点吧?
不知道说这些话的同志用swt和swing做过多少程序。有没有仔细剖析过自己界面慢的原因。同样如果我用swing开发一个eclipse的界面,我就不认为会比目前的慢多少。

swt作界面至少有一方面不行,就是做图像处理方面。
从性能角度,在1.4.x下,个人认为swing自身的性能已经足够了。仅仅在资源受限的设备上,swt有优势。
当然还有一点,apple开发的jre和sun开发的jre,swing有太多的不兼容,与之相关同样的程序在mac osx下运行问题经常多多。swt此类问题应该少很多(具体没有试过)。

17.Re:有了Swing为什么还要SWT? [Re: longwang] Copy to clipboard
Posted by: cnfree
Posted on: 2005-02-21 15:08

longwang wrote:
swt作界面至少有一方面不行,就是做图像处理方面。

这一点我觉得不同意,至少我觉得swt的 GC已经很强大了,甚至比 Swing更强大。但是毋庸置疑,SWT和Swing都能做出非凡的东西来,比如永中Office,采用Swing编写的,我觉得真得很棒,同样我自己就用SWT做了一个和Mediaplayer完全一样的界面的Demo。大家有谁知道永中Office的实现原理,感兴趣的说

18.Re:有了Swing为什么还要SWT? [Re: cnfree] Copy to clipboard
Posted by: longwang
Posted on: 2005-02-21 15:24

swt的 GC画画图,还可以,但是图像处理就不行了。
与swing联系紧密的,sun提供了java2d,jai,能够方便的对图像进行卷积,旋转,扭曲,更换颜色空间,自定义样本分量,样本带等。jai自身还集成图像分块。

而swt,对图像处理,就不能直接针对Image的数据缓冲区操作,因为每次操作就必须重新create新的Image才能用于显示,就这个地方,所带来的性能问题,就已经决定不能进行图像处理了,至少是为了这个性能,自己要用不少技巧。

所以,我能够用swing做一个photoshop出来(当然要支持那么多滤镜,还是要研究一下的),但是没有信心用swt也能做出来。

19.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: cnfree
Posted on: 2005-02-21 16:51

呵呵,专业性太强了。这就不清楚了

20.Re:有了Swing为什么还要SWT? [Re: longwang] Copy to clipboard
Posted by: Jove
Posted on: 2005-02-21 17:31

longwang wrote:
..
所以,我能够用swing做一个photoshop出来..

hoho, admire!

21.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: kite
Posted on: 2005-02-21 18:03

不会吧!SWT和OpenGL的binding完全可以做这些的呀。

22.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: cnfree
Posted on: 2005-02-21 19:20

越扯越远了,这么专业的话都去做游戏吧,Java般的Quake II 大家玩过了没有?

23.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: songbenlijia
Posted on: 2005-02-22 02:59

经典的东西总往往是那些让人久久难以忘怀的东西。
swt和awt/swing都好!!!!!!!!!!

24.Re:有了Swing为什么还要SWT? [Re: longwang] Copy to clipboard
Posted by: caike
Posted on: 2005-02-22 09:04

longwang wrote:
swt的 GC画画图,还可以,但是图像处理就不行了。
与swing联系紧密的,sun提供了java2d,jai,能够方便的对图像进行卷积,旋转,扭曲,更换颜色空间,自定义样本分量,样本带等。jai自身还集成图像分块。

而swt,对图像处理,就不能直接针对Image的数据缓冲区操作,因为每次操作就必须重新create新的Image才能用于显示,就这个地方,所带来的性能问题,就已经决定不能进行图像处理了,至少是为了这个性能,自己要用不少技巧。

所以,我能够用swing做一个photoshop出来(当然要支持那么多滤镜,还是要研究一下的),但是没有信心用swt也能做出来。

提醒:SWT有Draw2D

25.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: YuLimin
Posted on: 2005-02-22 09:49

这个技术方面的讨论还真不错的哦:)

建议此贴加为精华贴,可否?妥否?

26.Re:有了Swing为什么还要SWT? [Re: caike] Copy to clipboard
Posted by: longwang
Posted on: 2005-02-22 13:06

Draw2D我没有用过,不过据我了解Draw2D主要是提供一套轻量级组件机制,和图像没有关系,不是和Java2D对等的api。

27.Re:有了Swing为什么还要SWT? [Re: kite] Copy to clipboard
Posted by: longwang
Posted on: 2005-02-22 13:17

kite wrote:
不会吧!SWT和OpenGL的binding完全可以做这些的呀。


OpenGL部分,目前还没有release出来吧?似乎还在内部,当然现在可以下载使用了。
不过我认为,OPGL的设计初衷并不是给图像处理用的,主要是还是3D方面,当然2D的一些东西他也能够做。而目前基于awt\swing的Java2D以及Jai的Image机制,在这些方面已经很完善了,提供了大量的途径和api方便使用。

28.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: tzutolin
Posted on: 2005-02-23 07:27

Of course you can. Just use SWT and Java2D together.

29.Re:有了Swing为什么还要SWT? [Re: tzutolin] Copy to clipboard
Posted by: longwang
Posted on: 2005-02-28 13:26

tzutolin wrote:
Of course you can. Just use SWT and Java2D together.


当swt可以直接使用RenderableImage和RenderedImage的时候,我想这个是个好主意。否则,当要显示的时候,还要进行Image间的转换,是很烦的一件事。

30.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: hgq23
Posted on: 2005-03-18 22:32

晕.很长时间没关注图形这一块了.整天写些网站的垃圾.
都不知道出这些东西了.

不过我看嘛.
知识嘛.有时间就看看喽.

31.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: marsbible
Posted on: 2005-03-30 15:30

我写了一个小的demo,swt+java2d,还是挺好用的,当然得有一个转换的过程。

32.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: wing5jface
Posted on: 2005-04-19 23:43

>>swt作界面至少有一方面不行,就是做图像处理方面。
請用下SWT OPengl再確認這個問題呵

相關文檔發:
http://www.eclipse.org/articles/Article-SWT-OpenGL/opengl.htm
Opengl基礎教程也有SWT opengl源碼
http://nehe.gamedev.net/l

33.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: wing5jface
Posted on: 2005-04-19 23:44

再看另一角度:

34.Re:有了Swing为什么还要SWT? [Re: longwang] Copy to clipboard
Posted by: ildg
Posted on: 2005-04-22 08:53

longwang wrote:
swing让p4像286也太夸装了点吧?
不知道说这些话的同志用swt和swing做过多少程序。有没有仔细剖析过自己界面慢的原因。同样如果我用swing开发一个eclipse的界面,我就不认为会比目前的慢多少。

swt作界面至少有一方面不行,就是做图像处理方面。
从性能角度,在1.4.x下,个人认为swing自身的性能已经足够了。仅仅在资源受限的设备上,swt有优势。
当然还有一点,apple开发的jre和sun开发的jre,swing有太多的不兼容,与之相关同样的程序在mac osx下运行问题经常多多。swt此类问题应该少很多(具体没有试过)。


有什么夸张的?你又用swing和swt做过多少程序?连swt有对应的draw2d都不知道。

35.Re:有了Swing为什么还要SWT? [Re: longwang] Copy to clipboard
Posted by: ildg
Posted on: 2005-04-22 08:56

longwang wrote:
Draw2D我没有用过,不过据我了解Draw2D主要是提供一套轻量级组件机制,和图像没有关系,不是和Java2D对等的api。


没有用过你也敢这样说?老大你真行,本来还以为你是高人呢。

36.Re:有了Swing为什么还要SWT? [Re: ildg] Copy to clipboard
Posted by: longwang
Posted on: 2005-04-22 10:33

ildg wrote:
有什么夸张的?你又用swing和swt做过多少程序?连swt有对应的draw2d都不知道。


这么老的帖子还有人捞出来,晕!
呵呵,不过既然出来了,我还就回一下了。
首先,我声明一下,我很少发帖,发这个帖子,也只是觉得论坛上有些观点太偏激了,有些话并不太负责任,不希望有太多的人误导,相信在这个论坛上的很多人,在swing和swt上并没有太多的经验。我也只是把我个人的一些经验,和看法提出来,供大家参考,信不信,信多少,就是大家的事情了。如果有精力,最好自己试验,研究一下。
不过我可以很负责任的告诉大家,我的这些话都不是乱编的。
至于,我做了多少程序,很多。反正P4刚出来的时候,我就已经在做了,而且绝对没有跑起来像286。
因为我做图像方面多一点,当初研究过一下swt在这方面的可行性,最后否决了,为什么,我前面的帖子说过一些。至于draw2d的事情,我是知道的,但确实没有用过,也没有精力去用,只是在的网站上找了一些资料看了看,还有eclipse的英文帮助和api,只能有些了解,提的观点,也是我个人的,因为没有用过,所以,我说的时候,并没有用很肯定的语气,有兴趣的可以研究一下。甚至于有很多有经验的,也可以站出来说说话,大家就是互相交流,才能提高。至于我为什么说draw2d不是和java2d相对应的,我举个简单的例子,java2d有卷积部分的操作,draw2d好像没有,draw2d是提供了一套轻量级组件,java2d好像也没有。draw2d和java2d设计的初衷也是不一样的。draw2d用于做gef这样的东西,应该很好,java2d确实是针对图形图像的api,跟界面没一点关系。photoshop的滤镜功能,java2d底层直接支持,draw2d我还没研究出来怎么支持。
于是用swt,我只是做过一些普通的测试工具,还有作程序原形,在公司内部使用。倒是公司有做反垃圾邮件商业软件的,用的是swt。

对于用Java作应用程序的,一般情况下,从国外到国内,swing多用于专用软件,而swt可以考虑做一些通用的。因为swt有个好处,自身很轻便,程序加载速度很多,而且不需要swing\awt这些东东,可以根据需要将附带的jre减肥,而通用软件,一般的要求都要启动速度快,内存占用少,体积小,在国外一些评价软件的网站对软件打分上,这些都可以看到。

37.Re:有了Swing为什么还要SWT? [Re: marsbible] Copy to clipboard
Posted by: longwang
Posted on: 2005-04-22 10:42

marsbible wrote:
我写了一个小的demo,swt+java2d,还是挺好用的,当然得有一个转换的过程。


这个我也弄过一下,不过想做专业软件,可能会慢一点,因为我们客户用我们的软件,最大做到16000 * 8000,这么大的图处理好了,再转换为swt可显示的图象,恐怕挺慢的,还很浪费内存。

采用分块的方式应该是个好主意,但是自己要写分块机制这快了。直接选用更合适的api,更省时省工。

还有一个不方便的地方,如果用户在显示的图型上又要画条线,写个文字之类的,然后再做个柔化,那么你要在swt的Image上作操作的同时,要同步Java2D的Image。

38.Re:有了Swing为什么还要SWT? [Re: wing5jface] Copy to clipboard
Posted by: longwang
Posted on: 2005-04-22 10:49

wing5jface wrote:
>>swt作界面至少有一方面不行,就是做图像处理方面。
請用下SWT OPengl再確認這個問題呵

相關文檔發:
http://www.eclipse.org/articles/Article-SWT-OpenGL/opengl.htm
Opengl基礎教程也有SWT opengl源碼
http://nehe.gamedev.net/l


这个是3d的应用了,和图像处理从出发点上是不一样的。就好像photoshop不用dx和opengl,一个道理。
当然,如果你愿意在opengl基础上再写一些底层代码也可以。

反正条条大路通罗马了,你咋做都行,但是路有近的,有远的,有好走的,有难走的............
我只是想找一条最好走的。

39.Re:有了Swing为什么还要SWT? [Re: longwang] Copy to clipboard
Posted by: leowu2000
Posted on: 2005-04-22 11:04

longwang wrote:
可以根据需要将附带的jre减肥.

这个你们具体是怎么做的?能分享一下么?减少的内容大致有多少?

40.Re:有了Swing为什么还要SWT? [Re: longwang] Copy to clipboard
Posted by: ildg
Posted on: 2005-04-22 11:15

longwang wrote:
这么老的帖子还有人捞出来,晕!
呵呵,不过既然出来了,我还就回一下了。
首先,我声明一下,我很少发帖,发这个帖子,也只是觉得论坛上有些观点太偏激了,有些话并不太负责任,不希望有太多的人误导,相信在这个论坛上的很多人,在swing和swt上并没有太多的经验。我也只是把我个人的一些经验,和看法提出来,供大家参考,信不信,信多少,就是大家的事情了。如果有精力,最好自己试验,研究一下。
不过我可以很负责任的告诉大家,我的这些话都不是乱编的。
至于,我做了多少程序,很多。反正P4刚出来的时候,我就已经在做了,而且绝对没有跑起来像286。
因为我做图像方面多一点,当初研究过一下swt在这方面的可行性,最后否决了,为什么,我前面的帖子说过一些。至于draw2d的事情,我是知道的,但确实没有用过,也没有精力去用,只是在的网站上找了一些资料看了看,还有eclipse的英文帮助和api,只能有些了解,提的观点,也是我个人的,因为没有用过,所以,我说的时候,并没有用很肯定的语气,有兴趣的可以研究一下。甚至于有很多有经验的,也可以站出来说说话,大家就是互相交流,才能提高。至于我为什么说draw2d不是和java2d相对应的,我举个简单的例子,java2d有卷积部分的操作,draw2d好像没有,draw2d是提供了一套轻量级组件,java2d好像也没有。draw2d和java2d设计的初衷也是不一样的。draw2d用于做gef这样的东西,应该很好,java2d确实是针对图形图像的api,跟界面没一点关系。photoshop的滤镜功能,java2d底层直接支持,draw2d我还没研究出来怎么支持。
于是用swt,我只是做过一些普通的测试工具,还有作程序原形,在公司内部使用。倒是公司有做反垃圾邮件商业软件的,用的是swt。

对于用Java作应用程序的,一般情况下,从国外到国内,swing多用于专用软件,而swt可以考虑做一些通用的。因为swt有个好处,自身很轻便,程序加载速度很多,而且不需要swing\awt这些东东,可以根据需要将附带的jre减肥,而通用软件,一般的要求都要启动速度快,内存占用少,体积小,在国外一些评价软件的网站对软件打分上,这些都可以看到。


首先说句对不起,也谢谢你回了这么多。
其实我也很少来这个论坛,
上次来的时候随看到有这个帖子就随便re了一篇,
说swing让p4变成286是有些夸张,
或者说有些偏激,
但本意只是想开个轻松的玩笑而已,
sorry。

41.Re:有了Swing为什么还要SWT? [Re: ildg] Copy to clipboard
Posted by: longwang
Posted on: 2005-04-22 12:26

ildg wrote:
首先说句对不起,也谢谢你回了这么多。
其实我也很少来这个论坛,
上次来的时候随看到有这个帖子就随便re了一篇,
说swing让p4变成286是有些夸张,
或者说有些偏激,
但本意只是想开个轻松的玩笑而已,
sorry。


没关系。其实我回你帖子的时候,也带情绪了。
互相探讨,一起提高了。
我以后慢慢不做编码了, 这些方面,还需要长江后浪推前浪。

42.Re:有了Swing为什么还要SWT? [Re: leowu2000] Copy to clipboard
Posted by: longwang
Posted on: 2005-04-22 12:48

leowu2000 wrote:
这个你们具体是怎么做的?能分享一下么?减少的内容大致有多少?


其实就是根据你程序里面实际用到的东西,把jre中不使用的删掉就行了,要具体情况具体分析。对于一般情况,以下作参考:
1 lib下jar文件,除了i18n.jar和rt.jar,剩下都删。目录除了security,剩下都删。
2 对rt.jar,除了sun,sunw,java三个包,都删。对java里面也要大肆砍伐。一般情况除了datatransfer、resources两个包,Componen.class相关的类以外,剩下都删。这个具体研究尝试了。
3 对i18n.jar也可以根据情况删除里面部分内容,但是弄得不好,会出问题。
4 bin目录下,hotspot/jvm.dll、java.dll、java.exe、javaw.exe、zip.dll、NP开头的、hp开头的等都是必需的(还有,一时列举不出来,就不乱说了),可以尝试删除,跟具体需求有关系。

这样删下来,最大的rt.jar只剩2兆多,i18n.jar有2兆多(甚至更少),动态库部分2兆多,算下来,总共6兆多,删得好,最多可以减到5兆多,更小恐怕就不行了。
swt部分有1.5兆样子,你自己的j程序按照5万行代码计,也就1兆到头了。这样总共在10兆内搞定。如果把帮助文档加上,会大些,不过打成安装包,根据你压缩情况,就小很多了。一般的程序(通用软件),安装包10兆,就差不多了。

总之这东西,你要差些资料,知道jre中文件都是干什么的。在做些尝试,挺容易的。

43.Re:有了Swing为什么还要SWT? [Re: longwang] Copy to clipboard
Posted by: leowu2000
Posted on: 2005-04-22 13:45

多谢这些指导性意见,以前一直想这么用,可惜没有鼓捣下去。
我先看看,有不懂的地方再请教。:)

另外,我觉得java程序发布还有一个方向,那就是像.net platform那种方式,程序运行时候自动检测,发现没有平台支持的话,自动下载安装,不需要任何用户的干预,给用户所做的只是选择是否安装就可以。可惜sun一直都没有提供很好的程序发布方式,这也许就是为何java的桌面应用程序很少的原因了。

44.Re:有了Swing为什么还要SWT? [Re: leowu2000] Copy to clipboard
Posted by: longwang
Posted on: 2005-04-22 14:10

leowu2000 wrote:
多谢这些指导性意见,以前一直想这么用,可惜没有鼓捣下去。
我先看看,有不懂的地方再请教。:)

另外,我觉得java程序发布还有一个方向,那就是像.net platform那种方式,程序运行时候自动检测,发现没有平台支持的话,自动下载安装,不需要任何用户的干预,给用户所做的只是选择是否安装就可以。可惜sun一直都没有提供很好的程序发布方式,这也许就是为何java的桌面应用程序很少的原因了。


自动下载安装我到有个主意,从sun网站下载一个jre的在线程序(好像就一百多K),自己做个简单的C程序检查是否安装了jre,如果没有的话,就启动这个安装程序,监控此安装程序进程结束时,再检查jre是否安装,如果安装了,就启动Java程序。

45.Re:有了Swing为什么还要SWT? [Re: longwang] Copy to clipboard
Posted by: ildg
Posted on: 2005-04-22 14:36

longwang wrote:
没关系。其实我回你帖子的时候,也带情绪了。
互相探讨,一起提高了。
我以后慢慢不做编码了, 这些方面,还需要长江后浪推前浪。


其实我已经没有做编码了,
做一些构架性的工作。
我所在的公司并不是使用java做开发,
我学习java是为了学习设计模式。
java资源非常丰富,
而且可以读jdk的源代码,
java是学习设计模式的一种极好的语言,
因为java已经出了这么多年,
在设计上已经非常成熟,
同样由于java出现得很早,
以前的设计中有一些问题和不足,
对比这这些优点和不足,
能够更快地理解设计时应该注意的问题。

46.Re:有了Swing为什么还要SWT? [Re: ildg] Copy to clipboard
Posted by: longwang
Posted on: 2005-04-22 15:20

ildg wrote:
其实我已经没有做编码了,
做一些构架性的工作。
我所在的公司并不是使用java做开发,
我学习java是为了学习设计模式。
java资源非常丰富,
而且可以读jdk的源代码,
java是学习设计模式的一种极好的语言,
因为java已经出了这么多年,
在设计上已经非常成熟,
同样由于java出现得很早,
以前的设计中有一些问题和不足,
对比这这些优点和不足,
能够更快地理解设计时应该注意的问题。


原来是前辈高人呀。
能不能留下msn、QQ之类的,以后经常向你请教呀。
呵呵。

47.Re:有了Swing为什么还要SWT? [Re: longwang] Copy to clipboard
Posted by: ildg
Posted on: 2005-04-22 17:42

longwang wrote:
原来是前辈高人呀。
能不能留下msn、QQ之类的,以后经常向你请教呀。
呵呵。


其实我很水,
去年毕业以后留在以前做兼职的公司里跟着老板干,
算是赶鸭子上架,
但是感觉还比较成功,
经过几个月的需求分析以后(我们这个项目不算大)搞出一大堆文档和uml图,
然后别人就可以按照这个编程序了。
常用的设计模式其实还不到十种,
知道了接口和抽象类的好处,
然后再注意一些基本原则,
很多东西都可以顺手捻来了。
学java真的可以了解到很多设计的思想,
其实我学java也就是把基本类搞熟,
比如说反射、集合、正则表达式、流等等,
然后再稍微看看socket和多线程相关的东西,
可以稍微看看jdk的源代码,
看代码的时候最好使用uml工具打开,
集合uml图看起来会方便很多。
《java与模式》这本书对学习设计模式很有用。

48.Re:有了Swing为什么还要SWT? [Re: ildg] Copy to clipboard
Posted by: longwang
Posted on: 2005-04-22 18:20

ildg wrote:
去年毕业以后留在以前做兼职的公司里跟着老板干,

这样呀,建议编码还是要做一点,否则后果我就不说了。。。呵呵

ildg wrote:
经过几个月的需求分析以后(我们这个项目不算大)搞出一大堆文档和uml图,

老板能给你几个月的时间进行需求分析,看样子,还是蛮信任你的。他本身也应该懂一些技术吧?否则恐怕很难理解这种工作方式。

49.Re:有了Swing为什么还要SWT? [Re: longwang] Copy to clipboard
Posted by: ildg
Posted on: 2005-04-22 19:52

longwang wrote:
这样呀,建议编码还是要做一点,否则后果我就不说了。。。呵呵

老板能给你几个月的时间进行需求分析,看样子,还是蛮信任你的。他本身也应该懂一些技术吧?否则恐怕很难理解这种工作方式。


3x,其实我人比较笨,但是比较勤奋,
在学习设计模式之前写过代码已经超过了20万行。
设计模式其实就像微积分那样无处不在,
没什么高深的,
但是初中生去学微积分就学不来,
小学生更是不行,
这点我深有体会,呵呵。
我当初也觉得挺不容易,
先找了一本中文的书,
然后从网上下载电子的英文书,
然后在网上搜文章看,
然后对于同一种设计模式,对比几种语言如delphi、c#、java实现的异同,
印象就很深了。
做设计最好的感觉就是那种居高临下的感觉,
能够从整体作手,那是以前只写代码的时候从来没有体会到的。
当然需要学习的东西还有太多太多。。

50.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: wonderfulalone
Posted on: 2005-04-29 09:02

看了之后受益匪浅!!!

51.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: javahk
Posted on: 2005-07-02 13:09

SWT的設計原理和WXwidgets一樣

使用原生組件,沒有的才模仿

Swing這種設計方式是錯誤的

52.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: loinugt
Posted on: 2005-08-04 16:50

三楼 caike
说的 最小公约数和最大公倍数是什么含义呢?

53.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: Rick_y
Posted on: 2005-08-31 09:40

SWT是好东西,有没办法在jbuilder中用SWT?毕竟好不容易用熟jbuilder...或者等jbuilder2006

54.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: beyond1984
Posted on: 2005-08-31 16:16


55.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: Rick_y
Posted on: 2005-09-05 09:55

swing响应速度象老牛般慢条斯理的优雅,不过我一直用它做application...SWT应该是好东西,只是没时间学.

56.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: zuoyl2000
Posted on: 2005-10-23 22:27


长见识了
现在正在学习中
相信在大家的帮助下一定会突飞猛进的

57.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: 烂泥
Posted on: 2005-10-25 04:26

如果说Swing的速度很慢,那个是个错误。如果是专门做UI的而没有深入Core,那是只懂得皮毛。Swing的熟悉确实需要漫长的时间,有时你甚至要阅读他的源码。我曾经见过用nrotel 使用Swing写的UI,速度是超快的基本上感觉就像C++,当我阅读他的源码的时候,才知道什么是“天外天”。我说这些话并不是批评SWT,只是觉得如果大家只是被Swing的速度而改道SWT,那确实有点不值得。JDK一直被Sun所控制,应该说更多有好的一面,当然坏处也是存在的。

58.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: stevech
Posted on: 2005-10-29 20:01

一句话:IBM过分强调了Swing比AWT慢,所以才做出了SWT。

59.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: 秋风落叶521
Posted on: 2005-11-07 13:42

不懂

60.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: liuqianqian
Posted on: 2008-02-22 12:59

awt是基础,学会了awt,swing就会无师自通。我们在开始就学的awt,不过现在用的都是swing。
基础就是基础,打地基用的,有了基础才好学嘛!

61.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: qhitsky
Posted on: 2008-06-26 11:27

呵呵!很不错呀!学习了!

62.Re:有了Swing为什么还要SWT? [Re: shawnma] Copy to clipboard
Posted by: C型人
Posted on: 2008-11-01 15:02

哎,晕了,,,,还真有点迷茫。不过我努力去搞懂的。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923