华山论剑

一心一意做技术!

BlogJava 首页 新随笔 联系 聚合 管理
  31 Posts :: 0 Stories :: 447 Comments :: 0 Trackbacks

  (本故事除了部分点明道姓并具有故事详细发生的具体时间点地等部分情节以外,其它内容纯属虚构,若有雷同,纯属巧合。)

  知道Spring却不知道Rod Johnson的人,好比宇宙中知道社会中义新中国却不知道毛泽东的人一样可笑。

  Rod Johnson 是Spring Framework的创建者,也是Java和J2EE领域中的知名专家。Rod是 Interface21公司的CEO,该公司是一家致力于提供专业级J2EE和Spring Framework服务的顾问公司。
  谈到Rod Johnson,除了Spring框架本身以外,他所著作的《Expert One-on-One J2EE Development without EJB》一书,其影响力比Spring框架本身还更加震撼。这里插播一段广告:《Expert One-on-One J2EE Development without EJB》这本书的中文版去年就已经出了,有兴趣的朋友可以去买来一看。

  Rod Johnson对J2EE乃至整个Java的贡献我这里就不再多说了,下面直接引用一些从网上摘下来的原话,我想大家也能看出他的厉害。
  我们曾经在无数的书籍和文章中看到,EJB是J2EE的核心技术之一;而Rod Johnson竟然宣称,绝大多数的J2EE应用根本不需要EJB。-摘自“J2EE without EJB”书评
  Rod Johnson将会引领一种影响深远的潮流。但这潮流不是Spring和Hibernate,也不是IoC和AOP,甚至不是“轻量级架构”,而是一切实事求是的“循证架构”的工作方式。惟有掌握这种工作方式,你才能够真正自信满满地挺起胸膛说:“我选择的架构是适合应用需求的架构。”―摘自“Java视野”网友讨论
  Rod Johnson认为,应该是基于实践的证据、来自历史项目或亲自试验的经验,而不是任何形式的偶像崇拜或者门户之见。Rod Johnson给我传授了“循证”的工作方式——那原本就应该是程序员的工作方式。-摘自“J2EE without EJB”书评
  Spring 提供这些价值也离不开其它开源框架的支持(Spring 的理念:不去重新发明轮子),但是 Spring 是所有这些开源框架的集大成者,为集成各种开源的成果提供了一个非常理想的平台。所以 Rod Johnson 对于 J2EE 的贡献在我看来要比其他人高一些的。-摘自网友评论

  总之一句话,在技术的领域,他是伟人、他是我们心目中的英雄!(呵呵,“英雄”这尊称叫起来有点肉麻,若是不搞java的朋友看见我随便叫老外英雄,还一定会被骂我吃里爬外,崇洋媚外呢。于是,笔者以后就把Rod Johnson称为大叔,这样听起来大家都舒服。)

  当然,谈到Rod Johnson大叔,就一定得谈谈 “轮子理论”。

  “轮子理论”,也即“不要重复发明轮子”,这是西方国家的一句谚语,原话是:Don't Reinvent the Wheel。当然由于国内IT从业人员接受的都是西方先进技术(谁让中国没有先进技术给大家学呢?),因此看见大家经常引用这一句话。“不要重复发明轮子”,意思是企业中任何一项工作实际上都有人做过,我们所需要做的就是找到做过这件事情的人。拿到软件领域中就是指有的项目或功能,别人已经做过,我们需要用的时候,直接拿来用即可,而不要重新制造。

 “轮子理论”既然只是一句谚语,怎么又跟Rod Johnson大叔联系在一起了呢?因为Rod Johnson大叔告诉我们,Spring就是在“不重复发明轮子”的理念及指导原则上做起来。于是一夜之间,随着Spring在全世界的风风火火,特别是吹到我们祖国的时候,也许是爱屋及乌(或鸟)的原因吧,“轮子理论”也被众多的Spring粉丝当成做人做事做程序的信条及原则。
  这样有问题吗?当然有严重的问题。“轮子理论”这一理论本身没有错,错的是轮子理论的滥用,错的是大家被Rod Johnson大叔忽悠了一把而不知或不承认。熟悉Spring的朋友都知道,Spring除了IOC、AOP及与其它各种框架的整合集成接口以外,也一样有自己的WEB MVC、有自己的持久层数据库访问,当然,IOC、AOP就更加不是他的首创了。你能说这些东西难免不带有“发明轮子”的嫌疑吗?笔者由于资历乃至阅历皆浅薄,无法证明Spring“发明了轮子”,这里只是抛出一个疑命题,还请高人来求证。如果Spring的MVC等能证明他本身也是发明轮子的话,我们再去想想Rod Johnson大叔说这话的动机,难免会让人往其他不友好的方面想。

  这里没有其它的恶意,只是就是论事。Rod Johnson大叔在他的书中开篇不是就教育我们:要敢于去怀疑、猜想吗?。要是没有Rod Johnson大叔对传统J2EE模式特别是EJB的怀疑及猜想,又哪来的Spring呢?

  西方人口口声声说“不发明轮子”,但实际情况呢?大家自己睁开眼睛看看,然后闭上眼睛摸着脑门想想,如果真“不发明轮子”的话,有了JDO,怎么还会搞出iBatis来,有了iBatis怎么又搞了一个Hibernate呢?同样的道理,有了一个令大家都称道的struts、后来又冒出个Tapestry,之后的Webwork、JSF,然后到现在的Spring MVC。这“轮子”一个又一个冒出来,一个比一个漂亮、好用,有点让我们这些整天被压得喘不过气来的国内程序员乃至开发商应接不暇,傻眼了吧?

  为什么会这样呢?本来我也想不通,直到昨天发生一件事情,才让我有所领悟,事情大致是这样的:
  我昨天在大街上看到一个被扔在马路边上全新的宝马轮子,记得乡下的小学同学曾托我帮他找一个拉肥料用三轮车的轮子,于是我就急忙给小学同学打电话,问他要不要。结果我被他一顿臭骂,原话大意是这样,他说我读大学、搞高科技、变傻了,宝马轮子那是山里人玩得起的吗?在山村里要轮子坏了怎么办,还要花几百块坐汽车、火车抱到城里修啊,我这三轮车全卖了也只值几百块呢?他大字不识几个,而那宝马轮子使用说明书,质量鉴定书一大堆,而且他又不放心,还得花时间考察考察,农忙季节刚好来了,哪有时间考察?最后还狠狠地冒了一句:你想让我这个季度喝西北风啊。
  小学同学说话很直接,虽然土了一点,但确实很有道理。于是,我回来把老同学教训我的内容认真归纳整理了一下,得到如下几个简单结论:
  1、 宝马是高档车,因此轮子也得配名贵的轮子,其所有的设计都是为宝马这一名车量身打造的,所以在大小、宽度等多方面指标都不适合咱村里拉肥料的破三轮车。
  2、 宝马轮子因为名贵,质量好,但也会出问题的时候,出了问题一般人不能也不敢修,还必须得拿回大城市的专修店修理,维护成本太高了。
  3、 虽然三轮车已经有了轮子,但乡里的同学仍然要我帮他注意有没有好的轮子,意思是对现在的轮子不管从功率、效率乃至外表、款式等都不太满意,仍然需要改进。
  4、 我去年过春节回家时给他带的两个自行车轮子,他瞧不起,而且三轮车也用不上

  因此,我想上面提到的Webwork、Tapestry以及Spring MVC等,也是遇到类似的轮子不合适或者不完美的问题,才会不断寻求改进的方法,才能不断的更新换代,也才导致一个又一个的新的、漂亮的轮子被重复发明出来。结论就是,轮子不在于有没有,不在于是否属于“重复发明”,其关键在于“合不合适”。子曾经也曰过:存在即合理嘛!

  而我们中国人呢,连发明轮子的技术都不会,只能膜拜,干瞪眼,等着学他们一个又一个的轮子使用方法。轮子越来越大,说明书越来越多,翻译的工作量越来越多,引进一个轮子的周期越来越长,越来越无法控制,实在不行了就只能骂两句解解气,然后一袋烟的功夫又硬着头皮回来乖乖继续学。我就有点呐闷,全国那么多的天才、大牛,咋就不发明一个我们自己的轮子玩玩,让老外也尝试一下把中文轮子说明书翻译成英文那种痛苦滋味。(晕,又做白日梦了,不好意思!)

  那么,从科学的态度分析,究竟该不该“发明轮子呢?”。这得用一句经典的废话来总结:实事求是,具体问题具体分析!

  其实也不用那么复杂,我们只需要看看现在我们用的轮子,看看这些进口的轮子是否都很合适我们,不需要再改进,更不需要重新发明了呢?我看未必。中国有着5000年的文化底蕴,可谓博大精深。进口的东西,技术再好,切不可能完全融入得了中国的文化、思想。况且,现在扔给我们这些轮子,不但用起来仍然有着这样那样的问题,这些轮子之间还相互打起架来,搞得我们要做儿子不是,做孙子也不是,一不小心就犯上了选择恐惧怔。

  因此,作为一个80后的人,我希望跟我一样的同行,能多去研究别人发明的轮子,而不是依赖于某几个轮子,会用几个轮子就自以为是、沾沾自喜。不但要去探索、研究轮子的发明技术,原理,还要大胆地、不断地尝试发明更好,更合适自己的轮子。失败不用怕,怕的是我们连失败的机会都没有,有机会也因为世俗一些观念影响而不敢去争取及尝试。不要过分的依赖于现有的这些进口轮子,去大胆的发明轮子吧。等到十年、二十年以后,看到我们的后代依靠我们这些轮子来造火箭、造飞船、闯荡太空的时候,一定别有一番滋味。

  当然,“发明轮子”也要学学Spring,讲究艺术及方法。不能搞闭门造车,当全世界人民都在研究火箭轮子的时候你还停留在研究脚踏三轮车轮子的技术水平,那就难免闹笑话了。要多学习别人的轮子制造方法,把别人的好的思想、理念、精华借鉴过来,再加入我们民族文化特色的东西及元素,最后为我所用。更要认认真真,想方设法的从国内同行及前辈们的身上学习、取经,因为他们的一个小小的建议或提示会让我们少走很多的弯路。最重要的就是要懂得团队协作的重要性,学会与更多优秀的人一起共事,现在已经不再是个人英雄主义的年代,任何事情都需要讲究团队的合作,群策群力,才有可能取得成功。

  最后,引一句张靓颖同学在Tcl广告歌中所唱的吧:“拥有梦想,就有可能!”,鼓励自己的同时,也鼓励所有拥有梦想的朋友。

  审讯记:
  问:大峡,你口口声声鼓动大家发明轮子,那么你有发明轮子的技术及能耐吗?
  答:我现在仍不具备,仍在不断学习及探索ing,相信以后一定能。补充一下,现在我跟EasyJF的朋友们已经开始做着别人看来类似发明轮子的事情!

  问:大峡,作为Spring的超级粉丝,我很负责任的告诉你,你是在钻Spring的牛角尖,拿“轮子理论”来说事,这是无理取闹,更是对Rod Johnson大叔的不敬。
  答:从Rod Johnson大叔身上学习了很多东西,我敬重Rod Johnson大叔,也敬重科学技术,我所说的只是实事求是,您觉得不对的地方请予指正,万分感谢。

 (备注:由于笔者不想拐弯抹角浪费大家玩的时间,有些“表白”难免过于直接,还请不喜欢Spring或者过分喜欢Spring的同行多多见谅! 本文中的“我们”,仅指与笔者有着同样成长经历的80后人,对于文章提到的观点,多数皆属于笔者个人观点,不代表任何人。
  本文作者:EasyJF开源团队  大峡 版权归EasyJF开源团队所有,欢迎转载,转载请保留作者版权声明,谢谢!)


关于玩玩Spring系列,玩的过程及结果将会不定期在以下三个网站全球同步公布:
1.EasyJF开源团队官方网站,网址:http://www.easyjf.com
2.笔者的Blog,网址:http://www.blogjava.net/daxia/
3.Java研究组织(JR) ,网址:http://www.javaresearch.org
欢迎更多跟我一样爱玩的哥哥姐姐弟弟妹妹一起来玩。

posted on 2006-05-07 14:15 大峡 阅读(3766) 评论(25)  编辑  收藏

Feedback

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-07 14:26 大峡
Spring中是否有“轮子”,请大家谈谈自己的看法!  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-07 15:16 匿名
相当无聊,你以后做项目的时候先写一个JDK的类库好了,然后慢慢做...看你很喜欢发明轮子,干脆从钉子,螺丝,开始做好了.  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-07 17:05 iceboundrock
改进和克隆还是有区别的。我觉得重新发明轮子是一个成本的问题,比如以前我国的两弹一星,别人是不会轻易share给我们的,不重新发明我们就没法立足。但是像Spring这样open source的东东,除非它无法满足需要,否则重新发明它除了锻炼自己的技术,实在没啥价值。当然如果你有足够的资源做一个全新的东西完全符合你的需要,就没有问题。

我的观点是首先要继承、学习,接着才是创新、改进。  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-07 18:00 Jonney
事情没有大家想的那么复杂,当问题变得复杂的时候,就得到问题的根源去寻找答案了。
有没有已经重复地发明轮子这是一个问题,有没有能力去发明一个轮子这是一个问题,对现有轮子去改造这个也是个问题……无所谓,无论是什么问题,只要它能解决开发中的难题就是正确的!!这也就是Rod Johnson所说的一切实事求是的“循证架构”的工作方式!!  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-07 18:01 Sam
站在别人的背后看到的是别人的背面,和别人面对面时看到的是人家的正面。当你从侧面看时当然只是看到人家的侧面啦,左侧面或右侧面。不同的角度看同样的事物会出来不同的结果,这是很正常的啦。Rod Johnson大叔所以的不重复发明轮子,我想应该是指好的轮子(当然是他认为好的轮子)。当一个轮子在Rod Jhonson大叔认为并不是他理想中的轮子的时候他也会去制轮子。我想这就是为什么会有Spring mvc,做是Rod Johnson大叔更注重的是把各种不同的轮子整合起来,来发挥出轮子的更大作用。
其实只要是能讲出道理,不管从那个角度说,都会有接受者,那怕会招来很多的鸡蛋。很感谢作者带给我们的思考。有自己的分析能力的人更值得我们欣赏。  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-07 18:04 ralphjiang
spring 对于web开发来说他确实给我们带来了方便。
但是具体问题具体处理。至于他的通用性的设计我很佩服。
IOC只是一个模式。
而spring只不过是用xml来实现了一下而已。
没有必要为spring而争论。
AOP在spring里面只是简单的动态代理。而不是橡aspectj那样强大。
我的观点是轮子这个观点好像不太适合在这里讨论。  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-07 18:58 Gardenia Lee
对framework来说。。是否要发明轮子?这要看实际情况而定。。对某一类项目来说,spring可能过于复杂。。很多东西都没有必要。。那我们就有必要去发明轮子。。。我相信简单实用永远是一个衡量framework的标准。。杀鸡焉用牛刀?水果刀杀牛也不太现实呀。我们会有很多想法很多新的技术涌现,我们可以学以致用,但不是生搬硬套。
至于spring中是否有轮子。。这是肯定有的。。spring中很多技术是有创造性的,是我们后人可以借鉴的。。。
  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-07 19:11 大峡
@匿名

相当无聊,你以后做项目的时候先写一个JDK的类库好了,然后慢慢做...看你很喜欢发明轮子,干脆从钉子,螺丝,开始做好了.

有时间,建议这位朋友先别急着写程序,去读读《中庸》吧.不要因为住在北极太冷,你就搬到南极去住,其实南极也一样很冷!  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-08 10:15 Alex
呵呵,路过.

各取所需吧,其实无非就是这么几种心态:

实用就好;练习提高技能;为长远的目标积累做真正的自己的东西;扯淡  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-08 12:18 red-wolf
其实我觉得轮子是肯定有的,但是也并不完全是轮子,如果没有轮子以后的这些都应该称作什么呢?当仅仅是一个借鉴的时候,有轮子并不是一件坏事情。那我们现在所做的我就觉得也是一样的。。。这个东西是发展的必然性,而不是需不需要的问题。我们不能刚开始计凭空想象都需要一点一滴积累出来的。。。  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-08 13:21 galen
思想是对的,.赞同!  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-08 14:31 寒晴天·
MUD,精辟,嘿嘿。  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-08 15:49 永不言败
支持一下  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-08 22:31 hecules
我对楼主你的话其实只同意一半,一方面我并不认为发明轮子就是比较高级的东西,我认为中国人的问题不是出在发不发明轮子上,而是没有发明一套能生产轮子汽车的流水线,其实我们的IT工业是在走一条死路,企业在血拼,比价格低,技术人员在比较那个工具流行,那个框架新,完全忘记了技术创新不是比较谁的工具玩得熟,真正的技术创新是应用的创新,使思想的创新,是价值的创新。发明一个更好用的轮子是创新,但是为了别人有了轮子我也要造轮子就不是了。
另一面,为什么现在有这么多的框架,其实我们技术人员要从唯技术论中跳出来,就会明白为什么了。打个比方,如果这个世界上只有一个框架,那么可以想到,维护的成本会大大降低,对资本家是好事,成本低了转的就多了,但是对我们打工的来说就是灾难的开始,因为没有那么多人员需要了,而且我们对技术的掌握也变得低级了,上进的可能和动力都消失了。要想大家都有更多的饭吃,就是要有很多的复杂的框架,提高学习成本,维护成本。  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-05-08 23:06 大峡
@hecules

  呵呵,老兄说的第二个方面有点意思哈。我的理解是:生产力提高了,机械化水平高了,肯定是要有一大批人从现有的工作岗位下岗。但这一部分人可以转到其它工作岗位,做更有技术难度的事情,甚至转行,去做更有意义的事情。而不是像现在,大家跟风一样花很多时间从一个框架学到一个框架,而没把更多的时候时间花到业务研究及其他的系统底层原理研究,这是生命的浪费,也是个人力资源以及国家、社会资源的浪费。其实明白人都知道,这些框架大同小异,也就是一个工具而已,只要精通了一样,好比小李飞刀,虽然只是一把最普通的木刀,也一样能刀刀致命。

  正如我文中提到过,发明轮子的原因,我觉得还是“轮子不合适或者不完美的问题”。该不该去发明轮子,得“实事求是,具体问题具体分析!”。如果我是一个老板,是一个企业。我要考虑政府的政策,我的资金回收情况,利润率等等。我不会考虑得那么长远,能杀敌(赚钱)就是好事,发明轮子的风险很大(经常是屁股擦不干净),需要估量成本,确保利润,况且国内的软件业现状就是,人员流动太大,更不利于发明轮子。但若是作为社会性质、以非盈利为目标的开源事业,我主张大家发明轮子,要敢于尝试发明轮子。

  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-06-07 18:30 Randy
SPRING要学,"轮子"要造,可这路却是千辛万苦呀。  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-07-13 12:49 houor
请搂主先明白 “轮子” 到底是什么?

世界上有了通用,后来还有了奔驰、宝马。。。。。。。。
好象他们的产品都叫“汽车”的  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2006-07-14 21:19 skllb
喜欢
可惜楼主被春迷们搅和的跑题了... ...  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2007-04-04 12:07 tt
fgtgtrg  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2007-12-28 23:24 企业精英社区
佩服你的勇气和胆识  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2007-12-29 16:38 rickyk
支持楼主,看不惯那些声讨重复发明轮子的。自己没有实力或没有时间就批评人家重复发明轮子。有能力有时间发明轮子怎么不可以,我觉得就应该大力支持表扬。谁又知道写spring,struts那些人是一下子就把spring,struts写成功的。还不是在前人的基础上总结经验,不断的改进来的。我相信即使是重复的把别人的东西写一遍对与提高一个人和为创造出新轮子都有莫大的帮助。你们不要老拿别人是重复别人一模一样的工作,我相信所有别某些人称为重复发明轮子的人肯定不是简单的复制人家的东西,一定是经过了自己的思考,与创新的。即使在别人眼里看起来不咋样,但是我相信重复发明轮子的人的进步一定比在别人基础上修修补补体会得深刻。为什么中国没有很有创新的轮子出现,我想很大部分原因就是有那种害怕重复发明轮子的思想,说什么浪费时间,不切实际。但是你们要知道事物发展是量变到质变的,如果很多人在做重复发明轮子的尝试动作,我相信中国出现创新先进的轮子的时间将会更早的出现。所以希望那些自己不想发明轮子的人不要再批判批评别人发明轮子,而是给予鼓励与支持。


当然中国做技术的不只是需要不断的重复发明轮子的思想,还需要的是塌实的精神,实事求是的精神,不要有点点东西就吹得天花乱坠了。有了这重复发明轮子氛围与实施求是的精神,我相信中国会有美好的未来。

最后,再次批评那些指责别人重复发明轮子的人。  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论”[未登录] 2008-01-01 20:44 Cc
我觉得,细节决定成败。比如说:每个版本都有很完整的文档及API,一个新手5分钟内能跑起一个Demo,一个高手能顺利的下到源码并成功编译,通过测试。

现在框架这么多,要让别人选择你们的,还是要多多努力。  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论” 2008-01-03 19:36 rht
问:大峡,作为Spring的超级粉丝,我很负责任的告诉你,你是在钻Spring的牛角尖,拿“轮子理论”来说事,这是无理取闹,更是对Rod Johnson大叔的不敬。
答:吾爱吾师,更爱真理。  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论”[未登录] 2008-01-21 12:40 tester
1.重新发明一个轮子 / 不重新发明一个轮子 是一个问题
2.需要 / 不需要 重新发明一个轮子 是一个问题
3.有能力 / 没有能力 重新发明轮子 是一个问题
4.有多少程序员能重新发明轮子 是一个问题  回复  更多评论
  

# re: 玩玩Spring之Rod Johnson 与“轮子理论”[未登录] 2009-01-23 16:47 Jason
严重不喜欢作者的文笔风格,很做作(非技术方面),技术方面不予置评,因为水平不够  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: