Java秘史:隐藏在SWT/Swing背后的故事 - 编程入门网
与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)” |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |