主题:【文摘】SWT……内幕? -- upson
不过有一点,IBM搞swt并非完全出于市场因素,当时的swing确实有一些很难解决的问题,比如它的事件机制.swing和swt的区别本质上就是原生控件与自己绘制控件的区别,这种争论由来已久,从smalltalk开始就有了.只是思路的不同而已.
原生控件就是将主机窗口系统实现的控件诸如按钮,列表框之类的API薄薄封装一下,统一一下,供宿主语言调用,其跨平台的能力,不过就是API级别,说到底,那些控件本来就是由主机窗口系统来实现绘制的,譬如在windows上,就是微软的代码在绘制,而不是swt的,在linux/gtk+ 上则是gtk+在绘制..这样当然就是原生的look and feel了,但是问题是要统一不同风格不同窗口系统的API绝非易事,灵活性也极受限制. 而Swing这样的思路很符合sun的审美哲学,那就是什么都自己来:) 理论上说GUI程序设计,只要你能控制每个像素点的绘制(setpixel()/getpixel()),那么谁都可以实现一个控件系统,swing就是这样的思路,因此当Java2D提供了比较高级的像素绘制能力后,swing就在此基础上得以用“纯Java”实现。。。好处是非常灵活,用swing理论上可以做出任何匪夷所思的外观效果,如果精于计算机图形学,做出比vista/os x 更炫目的东东,我绝对会觉得理所当然。。对你的自由完全没有任何限制。只是这样一来,什么都是自己绘制,自然就不太可能直接获得原生的look and feel了,只能模拟。毕竟,windows 原生应用程序之所以能给你同样的“windows”味道,很大程度上是因为它们用到的大多数公共控件实际都是底层的同一套windows的代码在控制。。。swing这种思路就
完全不一样,它自己绘制。这只是思路的不同,跟是不是Java毫无关系,你把C语言写的gtk+应用移植到windows上去,也会面临同样的问题。
至于孰优孰劣,这个问题仁者见仁智者见智,我就不多废话了
只是swing会给大家造成一些错觉,觉得它太丑陋什么的,这个其实不是事实,它只是一套很简单通用的规范而已,没什么限制,用它来写东西,美,丑,性能都在个人能力。。。
另外,我不太喜欢阴谋论 :)
- 相关回复 上下关系8
🙂【文摘】SWT……内幕? 3 upson 字809 2007-05-24 03:47:10
🙂无聊的老文章 8 风北客 字1738 2007-05-28 02:44:03
🙂恩,大多观点赞同
🙂其实就是市场问题 1 风北客 字642 2007-06-02 09:26:51
🙂发吧。争论不要紧,有理有据的讨论尤其欢迎。 铁手 字62 2007-05-29 11:09:49
🙂请问老兄对Python,ruby这样的动态语言怎么看 1 不是老陈 字62 2007-05-29 00:32:29
🙂搞核物理的也需要学这些时髦的东西吗? 金口玉言 字20 2007-05-29 02:49:10
🙂用动态语言,特别是Python,来“包裹”C/C++代码 请尽量 字44 2007-05-29 10:22:05