1. 程式人生 > >當音樂學博士搞起程式設計,用一本書改變了Java世界!

當音樂學博士搞起程式設計,用一本書改變了Java世界!

### 前言 說到Spring,也許現在的開發者們最先想到的是 Josh Long ![file](https://img2020.cnblogs.com/other/626506/202101/626506-20210112103218108-1789217488.jpg) 超快的語速與現場程式碼能力,讓很多Java開發者折服。 然後Spring的歷史上,最傳奇的還是要數其創始人:**Rod Johnson!** 先不說別的,看到他的學歷,你就震驚的了,悉尼大學的音樂學博士!不要驚訝,不是計算機! 也許就是因為這樣一顆理性思維與藝術細胞結合的禿頂大佬,才能造就Spring這樣的產物吧。 ![file](https://img2020.cnblogs.com/other/626506/202101/626506-20210112103218553-816704070.png) ### Rod Johnson Rod Johnson,就是上圖這位頭頂略微地中海的男子,但是禿腦袋瓜並沒有讓Rod Johnson變得難看,好幾個同學一致認為這傢伙長得很酷。 按照他身邊的密友所描述的,**Rod Johnson平日裡看上去就像是一個典型的英國紳士,雖然他好像出生在澳大利亞,但是現在住在倫敦。說起話來也是一板一眼,有條有理。字正腔圓而略有點尖的口音讓人聽起來特別清楚。** 大多數人都認為Rod Johnson似乎天生缺少一樣東西:幽默感。但實際上看看下面這端開場白: > 回到2001年,當我寫下第一行程式碼時,那些程式碼並沒有放到GitHub,沒放在上面是因為GitHub當時不存在,所以我想Spring應該比Git老三四歲... 讓人不禁宛然一笑,Rod Johnson也跟其他程式設計師一樣是個挺可愛的人吧。 ![file](https://img2020.cnblogs.com/other/626506/202101/626506-20210112103219370-394986540.png) ### 輪子理論 提到Rod Johnson,大家還總會想起**輪子理論**。 所謂**輪子理論**,就是指:**不要重複發明輪子**,這是西方國家的一句諺語,原話是:**Don't Reinvent the Wheel**。意思是企業中任何一項工作實際上都有人做過,我們所需要做的就是找到做過這件事情的人。拿到軟體領域中就是指有的專案或功能,別人已經做過,我們需要用的時候,直接拿來用即可,而不要重新制造。 Rod Johnson想告訴我們,Spring就是在**不重複發明輪子**的理念及指導原則上做起來。 於是一夜之間,隨著Spring在全世界的風風火火,特別是吹到我們祖國的時候,也許是愛屋及烏的原因吧,**輪子理論**也被眾多的Spring粉絲當成做人做事做程式的信條及原則。 ### Spring與Expert One on one J2EEDevelopment without EJB Spring,可以說就像是Rod Johnson的代名詞一樣,大家對Rod Johnson印象最深的成就自然是SpringFramework和Expert One on one J2EEDevelopment without EJB。 Java從誕生之日到如今經歷了風風雨雨數十年,從低谷到高峰,JAVA之所以是世界上最受歡迎的開發語言之一,Spring框架起到了非常重要的作用。 當時間還停在21世紀初,Java EE的整個系統框架處在臃腫、低效、脫離現實的種種現狀之中,將其進行**輕量化**成為業內的一致的呼聲,此時Rod Johnson就像一顆璀璨的明珠一樣橫空出世,積極尋求探索革新之道。 Rod Johnson最開始在2000年為倫敦金融界提供獨立諮詢業務時曾經寫了一個簡單的框架,以此為基礎他編寫了interface21框架,這是一個力圖衝破Java EE傳統開發的困境,從實際需求出發,著眼於輕便、靈巧,易於開發、測試和部署的輕量級開發框架。可以說這就是Spring的前身,Rod Johnson當時的觀點就是 :**如何讓應用程式能以超出當時大眾所慣於接受的易用性和穩定性與J2EE平臺上的不同元件合作。** Spring框架即以interface21框架為基礎,經過重新設計,並不斷豐富其內涵。最終於2004年3月24日,釋出了1.0正式版。 配合Spring的誕生,Rod Johnson在同年編著了**Expert one on one J2EE design and development**一書,堪稱經典,直至今日,還有不少莘莘學子將其視為Spring必讀寶典。 ![file](https://img2020.cnblogs.com/other/626506/202101/626506-20210112103221119-2099620412.png) 這本書甫一面世,就在Java世界掀起了軒然大波,不斷改變著Java開發者程式設計和開發的思考方式,影響至今。Rod Johnson根據自己多年豐富的實踐經驗,對EJB的各種笨重臃腫的結構進行了逐一的分析和否定,並分別以簡潔實用的方式替換之。 Spring1.0版本釋出之後,Spring框架在Java社群裡變得異常流行,當然這也要部分的歸功於它不錯的文件功能和詳盡的參考文獻,特別是對於一個開源專案而言尤其如此。 Spring框架的一個重要設計目標就是更容易地與已有的J2EE(現在稱之為JavaEE或JEE)標準和商用工具整合。 也正因此,**Rod Johnson奠定了自己的江湖地位,成為一個改變Java世界的大師級人物。** > 本文首發:https://blog.didispace.com/hero-spring-rod-johnson/ ### 版本變遷 Spring 幾乎已經成為現在每一位 Java 開發人員都耳熟能詳的開發框架,不論你是一名初出茅廬的程式設計師還是經驗豐富的老司機,都會對其有一定的瞭解或使用經驗。在現代企業級應用架構中,Spring 技術棧幾乎成為了 Java 語言的代名詞。我們不妨從最初的 Spring 開始,看看它為什麼能夠橫掃千軍,一統江湖! Spring版本變遷: - 自2004年Spring1.0釋出之後,Spring 框架迅速發展,不斷進化。1.0的出現徹底改變了開發企業級Java應用程式的方式。 Spring的依賴注入與宣告式事務意味著元件之間再也不存在緊耦合,再也不用重量級的EJB了。 - 2006 年 10 月,釋出Spring 2.0 ,具有可擴充套件的 XML 配置功能,用於簡化 XML 配置,支援 Java 5,額外的 IoC 容器擴充套件點,支援動態語言。更小、更簡單易懂的配置檔案讓Spring本身更便於使用 - 2007 年 11 月 ,Interface21 專案更名SpringSource,同時釋出了 Spring 2.5,支援 Java 6 / Java EE 5,支援註釋配置,classpath 中的元件自動檢測和相容 OSGi 的 bundle。讓我們有了更優雅的面向註解的依賴注入模型(即@Component和@Autowired註解),以及面向註解的Spring MVC程式設計模型。不用再去顯式地宣告應用程式元件了,也不再需要去繼承某個基礎的控制器類了。 - 2009 年 12 月,Spring 3.0 釋出,具有許多重要特性,如重組模組系統,支援 Spring 表示式語言,基於 Java 的 bean 配置(JavaConfig),支援嵌入式資料庫(如 HSQL,H2 和 Derby),模型驗證/ REST 支援和對 Java EE 的支援。XML被取代,終於可以寫出一個沒有任何XML配置的Spring應用程式。 - 2013 年 12 月,Pivotal(2013 年 4月,VMware 和 EMC 通過 GE 投資建立了一家名為 Pivotal 的合資企業。所有的 Spring 應用專案都轉移到了 Pivotal) 宣佈釋出 Spring 框架 4.0。包含了對Java 8 的全面支援,更高的第三方庫依賴性(groovy 1.8+,ehcache 2.1+,hibernate 3.6+等),Java EE 7 支援,groovy DSL for bean 定義,對 websockets 的支援以及對泛型型別的支援作為注入 bean 的限定符。 - 2017年9月,Spring 5.0 GA版本釋出,開始支援JDK 8和Java EE 7,同時相容JDK9。全面支援Servlet 3.1,還引入了一個全新的模組Spring WebFlux用於替代老話的 spring-webmvc;對Kotlin也有了更好的支援。 - 而目前,最新的是5.3.2 GA版本。 具體版本可見:https://spring.io/projects/spring-framework#learn Spring在不同的領域不斷髮展:移動開發,社交API整合、安全管理、NoSQL資料庫、雲端計算和大資料等等都是它正在涉足和創新的領域,使其前景更加廣闊,甚至已經形成與傳統的JavaEE平臺分庭抗禮之勢。 ![file](https://img2020.cnblogs.com/other/626506/202101/626506-20210112103223415-1206268823.png) ### 離開 江湖,有聚必有散。 2007 年,SpringSource 從基準資本獲得了 A 輪融資(1000萬美元)。在此期間SpringSource也收購了多家公司,如Hyperic,G2One 等。 但是等到了2009年8月,SpringSource反倒是以 4.2 億美元被 VMWare 收購。 而在3年後的2012年7月,Rod Johnson就離開了他一手建立的Spring團隊。 或許我們可以這樣想,如果當初SpringSource 沒有被VMWare 收購,是不是Rod Johnson 就不會離開團隊,是不是現在的Spring會更好?答案我們自然不得而知。 Rod Johnson當年在SpringSource官方部落格上公佈這一訊息時聲稱SpringSource將成為VMware下屬的一個部門,而他將仍是SpringSource的領導者。他當時對未來的展望是: > 此次決定是很自然而符合邏輯的:這將帶來更多的新技術,並且對Spring框架以及Spring社群都有好處。 > > 我很興奮。希望你也是。這將極其有趣。 > > Spring框架將繼續提供優質的企業級Java支援。我們從關注開發者如何建立和使用應用,到關注他們如何部署和執行企業級應用;為此我們建立了dm Server和tc Server。我們收購Hyperic也是為了改善開發者管理企業級應用的方法。 > > 與VMware的合作中,我們計劃建立一個簡單,整合,建立-執行-管理合一的資料中心、私有云和公共雲的解決方案。這個方案將融合應用架構的知識,連帶中介軟體以及管理控制元件,確保一個虛擬環境在部署過程中以及執行時的最大效率及彈性。這是一個PaaS,建立在你已知的技術之上,從而最大的減少花費與複雜度。這是一個圍繞開源、可移植的中介軟體技術的解決方案,既可以在傳統資料中心的Java EE應用伺服器上執行,又可以在如Amazon EC2之類的彈性雲上執行,也可以在VMware平臺上執行。 > > 與VMware的vSphere以及其他雲技術一起,我們將在框架和基礎設施上帶來一個全新的體驗。SpringSource的應用框架、伺服器及管理軟體將成為VMware平臺的眼睛和耳朵。 > > SpringSource的下一步工作將是這些新的挑戰:基於我們的Build/Run/Manage(建立執行管理)系統,提供從桌面端到雲端的最佳解決方案。讓百萬Java開發者都能享受到雲端計算帶來的好處。 可能他當時心裡想的是作為Java領域的重要廠商,在加入VMware後,其Java開發經驗將與VMware的虛擬化平臺相結合,增強其在企業服務市場中的競爭力。另外,SpringSource在全球大型企業中的廣泛客戶資源也能夠讓VMware受益。不管怎麼說,似乎從現在的結果來看,Spring也做得不錯,沒有辜負Rod Johnson當初的一番期望。 ### 傳奇現今 現在的Rod Johnson成為了一個天使投資人,同時也是多個公司的董事(例如Neo Technology,elastic,Meteor和Hazelcast等著名的開源公司),早已走上人生巔峰。同時他依然還是經常會在技術大會上做演講,遊走在世界各地,為後來者傳授各種技術經驗及想法。 在去年10月份的SpringOne Platform大會上,Rod Johnson還特地做了一個關於Spring18歲的演講,也許他的樣子變了,但是講起Spring,他還是像講起自己的孩子一般滔滔不絕,Rod Johnson分享了Spring的起源、歷史,總結了一些Spring框架發展過程的經驗教訓: - Spring的歷史起源 - Lesson 1: Fairy tales can offer useful lessons 寓言故事能提供有用的教訓 - Lesson 2: Need Clear, Shared Values 需要清晰,共有的價值 - Lesson 3: Know where you're going 明確方向 - Lesson 4: Quality beats quantity in a team 打造團隊寧缺毋濫 - Lesson 5: Market and sell your technical solution 營銷你的技術方案 - Lesson 6: Other people have great ideas. Borrow them but acknowledge their work 認可借鑑別人的好點子 - Lesson 7: The developers you want need autonomy 開發者需要自治 - Lesson 8: Question the "enterprise" mindset 質疑“企業級”觀念 - Lesson 9: Some Spring Advice 一些Spring的建議 - Next For Me: Atomist - A Framework for Development and Delivery 我的下一站:Atomist——一個關於開發與交付的框架 - Lesson 10: Raising software is like raising a child 開發軟體像養育一個孩子 有興趣的讀者可以自行檢視,視訊地址如下:https://www.bilibili.com/video/av200511420 你知不知道Rod Johnson? 你有沒有看過Expert One on one J2EEDevelopment without EJB? 歡迎留言分享你的感受! > 歡迎關注我的公眾號:程式猿DD,獲得獨家整理的免費學習資源助力你的Java學習之路!另每週贈書不