Java秘史:躲藏在SWT/Swing背后的故事[Java编程]
本文“Java秘史:躲藏在SWT/Swing背后的故事[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
译注:本文来自straight_talking_java@yahoogroups.com谈论组,已经是一 年多前的文章.Alan Williamson是Java Developers Journal的编辑,下文来自 他在IBM的一个消息根源.SWT和Swing的论争我见过不少,Netbeans和Eclipse的 也一样多.译者翻译此文并非要激起什么争论,也不是支持哪一方(固然我的 确是站在SWT一边的),更不是要攻击Amy.我最重要的来由是,这是一篇风趣的 文章.里面有底细、线人、公司政治、垄断巨子、美女、商界风云……充足拍一 出片子.风趣,这就够了.不过此文反映了IBM对Swing的见解和SWT的由来,还 是有一点营养的.
要想弄清楚为什么一切都被弄得如此混乱,要从几年前只存在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)”办法,自己来绘制全部的窗口组件.
以上是“Java秘史:躲藏在SWT/Swing背后的故事[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |