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

前言

說到Spring,也許現在的開發者們最先想到的是 Josh Long

file

超快的語速與現場代碼能力,讓很多Java開發者折服。

然後Spring的歷史上,最傳奇的還是要數其創始人:Rod Johnson!

先不說別的,看到他的學歷,你就震驚的了,悉尼大學的音樂學博士!不要驚訝,不是計算機!

也許就是因爲這樣一顆理性思維與藝術細胞結合的禿頂大佬,才能造就Spring這樣的產物吧。

file

Rod Johnson

Rod Johnson,就是上圖這位頭頂略微地中海的男子,但是禿腦袋瓜並沒有讓Rod Johnson變得難看,好幾個同學一致認爲這傢伙長得很酷。

按照他身邊的密友所描述的,Rod Johnson平日裏看上去就像是一個典型的英國紳士,雖然他好像出生在澳大利亞,但是現在住在倫敦。說起話來也是一板一眼,有條有理。字正腔圓而略有點尖的口音讓人聽起來特別清楚。

大多數人都認爲Rod Johnson似乎天生缺少一樣東西:幽默感。但實際上看看下面這端開場白:

回到2001年,當我寫下第一行代碼時,那些代碼並沒有放到GitHub,沒放在上面是因爲GitHub當時不存在,所以我想Spring應該比Git老三四歲...

讓人不禁宛然一笑,Rod Johnson也跟其他程序員一樣是個挺可愛的人吧。

file

輪子理論

提到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

這本書甫一面世,就在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

離開

江湖,有聚必有散。

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學習之路!另每週贈書不停哦~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章