声明:JavaEye新闻文章的版权属于JavaEye网站所有,严禁任何网站转载本文,否则必将追究法律责任!
我对计算机界的八卦一向都不太敏感,也对很多所谓的“名人”不感兴趣。你说那章子仪,Britney好歹还能拿脸蛋,衣服,和衣服里面的东西来娱乐大众,一帮不知道哪来的猥琐男就写了点谁都能写的程序,又不是证明了歌德拔河,也不是火箭科学,有什么好追星的?
所以对Guice拿了Jolt也是后知后觉。不过在知道Guice是打败了Spring拿到的奖的,还是颇觉得欣慰了一下。
要说Guice也不是多完美,很多功能的缺失还是对使用造成了些障碍的。所谓的“EDSL”,或者马丁嚼了嚼前人吃剩的东西再吐出来给大众继续啃的“fluent interface”,给测试,扩展和阅读稳当都造成了很大的麻烦。(我的jparsec, rparsec系列也可以自称是fluent interface,比如你可以说foo.many.map {...}之类的,但是它的每一步本身都具有完整的语义,而且都统一地是一个Parser对象,而不是额外引入乱七八糟古里古怪的中间类型。)
不过,你看跟什么比吧。这Spring,号称open-source,但是奉劝你还是闭着眼睛用,千万别好奇心起,往里面看什么代码。那设计,那代码,叫一个乱,真是让人不忍心看下去。
作者也是一根筋,遇着要客户扩展功能的,必然是弄个什么MyChitterlingAware接口,然后instanceof到处用,然后跑到文挡里一丝不苟孜孜不倦地加上一章“如果实现了MyChitterlingAware接口,那么你就会自动得到我的原始的带着消化系统鲜活气息的大肠一段”;然后整个系统中谁也不知道到底有多少XYZAware的special case。
遇着不同的目标场景,必然是弄一个子类,什么"ChitterlingApplicationContext extends ClassPathApplicationContext", "SpicyChitterlingApplicationContext extends ChitterlingApplicationContext",而且如果某个MyChitterlingAware对象需要从appcontext得到东西,必然是要实现一个BeanFactoryAware,然后再判断"instanceof ChitterlingApplicationContext"。最后弄了一个非常sophisticated的类继承图,显得好专业呀;
遇着逻辑分支,比如singleton与否,必然是一个"if (isSingleton()) {...}";
就算眼馋人家用java写配制可以重构,也还是脑子不带转弯地拿xml那套写JavaConfig,代码看上去还是xmlish,一点也不pojo;
所有OO初学者能干的蠢事,似乎都一五一十一板一眼地干了一遍。
那个,你要说了,那为什么人家那么成功?“一站式”啊,不管啥玩艺儿,一股脑都给你塞进来,这个主意还是很有市场的;“vendor lock-in”啊。这么多应用,这么多框架,都依赖于ChitterlingAware,你说你能想不干就不干了?“竞争对手实在不争气”啊,那个什么ejb,吓跑了多少“我其实就想写点程序呀”的程序员?
现在好了,终于有一个decent的DI framework并且能够不被劣币给驱逐了。无疑这个成功相当程度上得力于Google这个名字,谢谢,crazybob,谢谢,Google。
所以对Guice拿了Jolt也是后知后觉。不过在知道Guice是打败了Spring拿到的奖的,还是颇觉得欣慰了一下。
要说Guice也不是多完美,很多功能的缺失还是对使用造成了些障碍的。所谓的“EDSL”,或者马丁嚼了嚼前人吃剩的东西再吐出来给大众继续啃的“fluent interface”,给测试,扩展和阅读稳当都造成了很大的麻烦。(我的jparsec, rparsec系列也可以自称是fluent interface,比如你可以说foo.many.map {...}之类的,但是它的每一步本身都具有完整的语义,而且都统一地是一个Parser对象,而不是额外引入乱七八糟古里古怪的中间类型。)
不过,你看跟什么比吧。这Spring,号称open-source,但是奉劝你还是闭着眼睛用,千万别好奇心起,往里面看什么代码。那设计,那代码,叫一个乱,真是让人不忍心看下去。
作者也是一根筋,遇着要客户扩展功能的,必然是弄个什么MyChitterlingAware接口,然后instanceof到处用,然后跑到文挡里一丝不苟孜孜不倦地加上一章“如果实现了MyChitterlingAware接口,那么你就会自动得到我的原始的带着消化系统鲜活气息的大肠一段”;然后整个系统中谁也不知道到底有多少XYZAware的special case。
遇着不同的目标场景,必然是弄一个子类,什么"ChitterlingApplicationContext extends ClassPathApplicationContext", "SpicyChitterlingApplicationContext extends ChitterlingApplicationContext",而且如果某个MyChitterlingAware对象需要从appcontext得到东西,必然是要实现一个BeanFactoryAware,然后再判断"instanceof ChitterlingApplicationContext"。最后弄了一个非常sophisticated的类继承图,显得好专业呀;
遇着逻辑分支,比如singleton与否,必然是一个"if (isSingleton()) {...}";
就算眼馋人家用java写配制可以重构,也还是脑子不带转弯地拿xml那套写JavaConfig,代码看上去还是xmlish,一点也不pojo;
所有OO初学者能干的蠢事,似乎都一五一十一板一眼地干了一遍。
那个,你要说了,那为什么人家那么成功?“一站式”啊,不管啥玩艺儿,一股脑都给你塞进来,这个主意还是很有市场的;“vendor lock-in”啊。这么多应用,这么多框架,都依赖于ChitterlingAware,你说你能想不干就不干了?“竞争对手实在不争气”啊,那个什么ejb,吓跑了多少“我其实就想写点程序呀”的程序员?
现在好了,终于有一个decent的DI framework并且能够不被劣币给驱逐了。无疑这个成功相当程度上得力于Google这个名字,谢谢,crazybob,谢谢,Google。


评论 共 34 条 发表评论
leric 2008-04-03 13:30
kkndone 2008-04-02 04:42
google和ibm是一路货色。
guide冠着个google的名号,却成为我拒绝使用的第一个理由。
第二个理由就是它的这些粉丝的态度,十足玉米的架势,说话尖酸刻薄,说自己的东西好就一定要把别人的东西说的一文不值。
当然我说话也不见得不尖酸,但这是力与反作用力的关系
former 2008-04-01 14:37
性能?对于我们这种大型B2B网站,应用服务器永远都是不忙的,有时间优化下Oracle是关键。
hax 2008-04-01 01:25
abcx 2008-03-18 17:54
------------------------------------------------------------------
就是,居然还有一帮猥琐男崇拜这些名人。
manmoon 2008-03-13 12:48
fangzhouxing 2008-03-12 17:31
lgx522 2008-03-12 15:20
说句实在的,大多数项目其实用不着framework。为了要有“技术含量”,为了所谓“大项目”,我们说服自己,说服别人上了framework,结果......
somebody 2008-03-12 12:16
拿奖了有什么用?linux应该也拿了奖吧,但是大家不还是用windows。
实用为王。
我就不用windows.
觉得linux很好用。
duooluu 2008-03-12 01:48
rain999 2008-03-11 18:02
实用为王。
Frederick 2008-03-11 16:33
其实很多时候我们选择一个框架,不是为了它有多优雅,有多oo,而是它更适合我们的项目,让我们的开发更容易和快捷。那就够了。
guice刚出来的时候,我也很想用它来取代spring,但是发现要自己作太多的工作,而这些工作,spring都已经为我做好了。那为什么不用他呢?
guice我也会学,但是至少到目前为止,对于我们这些“我其实就想写点程序呀”的程序员而言,spring确实比guice要好。因为它实用。毕竟大牛不多见啊。
lsk 2008-03-11 12:51
聪明的人是在合适的情况下.用合适的框架.写出合适的项目,卖个合适的价格.
管他spring还是Guice
murainwood 2008-03-11 09:24
tedeyang 2008-03-11 09:01
Aspen 2008-03-10 23:31
simohayha 2008-03-10 23:26
williamy 2008-03-10 22:17
既然他還真拿下了個獎
我只好說太虛假了
ajoo 2008-03-10 22:16
sp42 2008-03-10 22:07
怎么这个“光荣传统”到现在好像没什么人说了?