溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring中Rod Johnson與“輪子理論”(1)

發(fā)布時間:2020-08-11 11:07:35 來源:ITPUB博客 閱讀:202 作者:lonlux2 欄目:編程語言
Spring中Rod Johnson與“輪子理論”(1)[@more@]本文對Spring Framework的創(chuàng)建者Rod Johnson先生的一些言論和著名的“輪子理論”進行了剖析,大家可以查看,是否認同作者的觀點。

Rod Johnson是Spring Framework的創(chuàng)建者,也是Java和J2EE領域中的知名專家。Rod是Interface21公司的CEO,該公司是一家致力于提供專業(yè)級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的貢獻我這里就不再多說了,下面直接引用一些從網上摘下來的原話,我想大家也能看出他的厲害。

我們曾經在無數(shù)的書籍和文章中看到,EJB是J2EE的核心技術之一;而Rod Johnson竟然宣稱,絕大多數(shù)的J2EE應用根本不需要EJB。-摘自“J2EE without EJB”書評

Rod Johnson將會引領一種影響深遠的潮流。但這潮流不是Spring和Hibernate,也不是IoC和AOP,甚至不是“輕量級架構”,而是一切實事求是的“循證架構”的工作方式。惟有掌握這種工作方式,你才能夠真正自信滿滿地挺起胸膛說:“我選擇的架構是適合應用需求的架構。”―摘自“Java視野”網友討論

Rod Johnson認為,應該是基于實踐的證據(jù)、來自歷史項目或親自試驗的經驗,而不是任何形式的偶像崇拜或者門戶之見。Rod Johnson給我傳授了“循證”的工作方式——那原本就應該是程序員的工作方式。-摘自“J2EE without EJB”書評

Spring 提供這些價值也離不開其它開源框架的支持(Spring 的理念:不去重新發(fā)明輪子),但是Spring 是所有這些開源框架的集大成者,為集成各種開源的成果提供了一個非常理想的平臺。所以Rod Johnson對于J2EE的貢獻在我看來要比其他人高一些的。-摘自網友評論

總之一句話,在技術的領域,他是偉人、他是我們心目中的英雄!(呵呵,“英雄”這尊稱叫起來有點肉麻,筆者以后就把Rod Johnson稱為大叔,這樣聽起來大家都舒服。)

當然,談到Rod Johnson大叔,就一定得談談“輪子理論”

“輪子理論”,也即“不要重復發(fā)明輪子”,這是西方國家的一句諺語,原話是:Don't Reinvent the Wheel。當然由于國內IT從業(yè)人員接受的都是西方先進技術(誰讓中國沒有先進技術給大家學呢?),因此看見大家經常引用這一句話。“不要重復發(fā)明輪子”,意思是企業(yè)中任何一項工作實際上都有人做過,我們所需要做的就是找到做過這件事情的人。拿到軟件領域中就是指有的項目或功能,別人已經做過,我們需要用的時候,直接拿來用即可,而不要重新制造。

“輪子理論”既然只是一句諺語,怎么又跟Rod Johnson大叔聯(lián)系在一起了呢?因為Rod Johnson大叔告訴我們,Spring就是在“不重復發(fā)明輪子”的理念及指導原則上做起來。于是一夜之間,隨著Spring在全世界的風風火火,特別是吹到我們祖國的時候,也許是愛屋及烏(或鳥)的原因吧,“輪子理論”也被眾多的Spring粉絲當成做人做事做程序的信條及原則。

這樣有問題嗎?當然有嚴重的問題?!拜喿永碚摗边@一理論本身沒有錯,錯的是輪子理論的濫用,錯的是大家被Rod Johnson大叔忽悠了一把而不知或不承認。熟悉Spring的朋友都知道,Spring除了IOC、AOP及與其它各種框架的整合集成接口以外,也一樣有自己的WEB MVC、有自己的持久層數(shù)據(jù)庫訪問,當然,IOC、AOP就更加不是他的首創(chuàng)了。你能說這些東西難免不帶有“發(fā)明輪子”的嫌疑嗎?筆者由于資歷乃至閱歷皆淺薄,無法證明Spring“發(fā)明了輪子”,這里只是拋出一個疑命題,還請高人來求證。如果Spring的MVC等能證明他本身也是發(fā)明輪子的話,我們再去想想Rod Johnson大叔說這話的動機,難免會讓人往其他不友好的方面想。

這里沒有其它的惡意,只是就是論事。Rod Johnson大叔在他的書中開篇不是就教育我們:要敢于去懷疑、猜想嗎?。要是沒有Rod Johnson大叔對傳統(tǒng)J2EE模式特別是EJB的懷疑及猜想,又哪來的Spring呢?

西方人口口聲聲說“不發(fā)明輪子”,但實際情況呢?大家自己睜開眼睛看看,然后閉上眼睛摸著腦門想想,如果真“不發(fā)明輪子”的話,有了JDO,怎么還會搞出iBatis來,有了?iBatis怎么又搞了一個Hibernate呢?同樣的道理,有了一個令大家都稱道的struts、后來又冒出個Tapestry,之后的Webwork、JSF,然后到現(xiàn)在的Spring MVC。這“輪子”一個又一個冒出來,一個比一個漂亮、好用,有點讓我們這些整天被壓得喘不過氣來的國內程序員乃至開發(fā)商應接不暇,傻眼了吧?

為什么會這樣呢?本來我也想不通,直到昨天發(fā)生一件事情,才讓我有所領悟,事情大致是這樣的:

我昨天在大街上看到一個被扔在馬路邊上全新的寶馬輪子,記得鄉(xiāng)下的小學同學曾托我?guī)退乙粋€拉肥料用三輪車的輪子,于是我就急忙給小學同學打電話,問他要不要。結果我被他一頓臭罵,原話大意是這樣,他說我讀大學、搞高科技、變傻了,寶馬輪子那是山里人玩得起的嗎?在山村里要輪子壞了怎么辦,還要花幾百塊坐汽車、火車抱到城里修啊,我這三輪車全賣了也只值幾百塊呢?他大字不識幾個,而那寶馬輪子使用說明書,質量鑒定書一大堆,而且他又不放心,還得花時間考察考察,農忙季節(jié)剛好來了,哪有時間考察?最后還狠狠地冒了一句:你想讓我這個季度喝西北風啊。

小學同學說話很直接,雖然土了一點,但確實很有道理。于是,我回來把老同學教訓我的內容認真歸納整理了一下,得到如下幾個簡單結論:

1、寶馬是高檔車,因此輪子也得配名貴的輪子,其所有的設計都是為寶馬這一名車量身打造的,所以在大小、寬度等多方面指標都不適合咱村里拉肥料的破三輪車。

2、寶馬輪子因為名貴,質量好,但也會出問題的時候,出了問題一般人不能也不敢修,還必須得拿回大城市的專修店修理,維護成本太高了。

3、雖然三輪車已經有了輪子,但鄉(xiāng)里的同學仍然要我?guī)退⒁庥袥]有好的輪子,意思是對現(xiàn)在的輪子不管從功率、效率乃至外表、款式等都不太滿意,仍然需要改進。

4、我去年過春節(jié)回家時給他帶的兩個自行車輪子,他瞧不起,而且三輪車也用不上。

因此,我想上面提到的Webwork、Tapestry以及Spring MVC等,也是遇到類似的輪子不合適或者不完美的問題,才會不斷尋求改進的方法,才能不斷的更新?lián)Q代,也才導致一個又一個的新的、漂亮的輪子被重復發(fā)明出來。結論就是,輪子不在于有沒有,不在于是否屬于“重復發(fā)明”,其關鍵在于“合不合適”。子曾經也曰過:存在即合理嘛!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI