前言
說到Spring,也許現在的開發者們最先想到的是 Josh Long
超快的語速與現場程式碼能力,讓很多Java開發者折服。
然後Spring的歷史上,最傳奇的還是要數其創始人:Rod Johnson!
先不說別的,看到他的學歷,你就震驚的了,悉尼大學的音樂學博士!不要驚訝,不是計算機!
也許就是因為這樣一顆理性思維與藝術細胞結合的禿頂大佬,才能造就Spring這樣的產物吧。
Rod Johnson
Rod Johnson,就是上圖這位頭頂略微地中海的男子,但是禿腦袋瓜並沒有讓Rod Johnson變得難看,好幾個同學一致認為這傢伙長得很酷。
按照他身邊的密友所描述的,Rod Johnson平日裡看上去就像是一個典型的英國紳士,雖然他好像出生在澳大利亞,但是現在住在倫敦。說起話來也是一板一眼,有條有理。字正腔圓而略有點尖的口音讓人聽起來特別清楚。
大多數人都認為Rod Johnson似乎天生缺少一樣東西:幽默感。但實際上看看下面這端開場白:
回到2001年,當我寫下第一行程式碼時,那些程式碼並沒有放到GitHub,沒放在上面是因為GitHub當時不存在,所以我想Spring應該比Git老三四歲...
讓人不禁宛然一笑,Rod Johnson也跟其他程式設計師一樣是個挺可愛的人吧。
輪子理論
提到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必讀寶典。
這本書甫一面世,就在Java世界掀起了軒然大波,不斷改變著Java開發者程式設計和開發的思考方式,影響至今。Rod Johnson根據自己多年豐富的實踐經驗,對EJB的各種笨重臃腫的結構進行了逐一的分析和否定,並分別以簡潔實用的方式替換之。
Spring1.0版本釋出之後,Spring框架在Java社群裡變得異常流行,當然這也要部分的歸功於它不錯的文件功能和詳盡的參考文獻,特別是對於一個開源專案而言尤其如此。
Spring框架的一個重要設計目標就是更容易地與已有的J2EE(現在稱之為JavaEE或JEE)標準和商用工具整合。
也正因此,Rod Johnson奠定了自己的江湖地位,成為一個改變Java世界的大師級人物。
版本變遷
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平臺分庭抗禮之勢。
離開
江湖,有聚必有散。
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學習之路!另每週贈書不停哦~