一個Java框架15年的演化,那些你不知道的spring成長史 [復制鏈接]

2019-11-1 10:44
Engineers 閱讀:142 評論:1 贊:0
Tag:  Java spring

一切都從這本書開始

一個Java框架15年的演化,那些你不知道的spring成長史


這本書的作者就是大名鼎鼎的Spring創始人,Rod Johnson,其實在寫這本書之前,Rod已經是一個知名的Java架構師了,還是JSR154專家組成員,負責定義Servlet2.4規范。

在這本書中Rod以其豐富的經驗和卓越的洞察力,指出了J2EE的長處和缺點,有理論有代碼,說服力極強。

在2002年的圣誕假期,另外一個Java架構師Juergen Hoeller閱讀了這本書,如獲珍寶,一口氣讀完,還下載了書中的代碼,然后給Rod寫了一封信,原文未知,意思就是:

“ 哥們,你這是個好東東啊,書中的那些代碼已經是個小框架了,難道你不想把他給產品化,搞成一個開源產品嗎? ”

Rod 回復說: “兄弟,我寫這本書花了我八九個月時間,我也得賺錢吃飯啊! 不過,如果你要是能保證和我一起投入的話,也許可以搞起來。”

于是兩個好基友真的搞起來了,他們倆把代碼整理以后,上傳到了sourceforge.net上面。

(聽說過sourceforge.net的可以舉個手,嗯,放下吧,估計和我一樣,是35歲以上的程序員了吧。 sourceforge.net這可是當時最大的開源網站,地位如同現在的Github一樣。)

上傳代碼的時候遇到了難題,起個啥名呢? 要知道代碼倉庫一旦確定就沒法改名了。其中還有一個讀者在論壇上建議使用Spring, 他們倆立刻愛上了這個名字,于是Spring就誕生了!

Spring 0.9 -> 1.2

Rod 和 Juergen把大量的時間花在了Spring上面,盡了最大努力搞定一個最小的可行性的版本, 與2003 年6月發布,這就是Spring Framework 0.9。

然后他們再接再厲,在2004年發布了真正的1.0版本。

這個時候的Spring,主要還是使用現在看來非常笨拙的XML Bean Definitions, 在1.2版本中,已經開始了對注解的支持,例如@Transactional 。 當然你必須使用JDK1. 5才可以。

注意這是在2004年,這個時候有很多人還在使用JDK 1.4.2 , 這種策略也反應了Spring總是會擁抱新的機會,擁抱新的變化。

當時Java世界最流行的Web框架是Struts , 與此配套的是這么幾個熱門軟件:

一個Java框架15年的演化,那些你不知道的spring成長史

Jetty和Tomcat都是Web Container,專門處理Servlet&JSP , Hibernate 負責O/R Mapping , Eclipse還是最熱門的IDE。

Spring呢? Spring有點像一個粘合劑,把Struts,Hibernate等黏合到一起,史稱SSH。

注意:這時候還沒有Spring MVC什么事兒。

第二本書和第三本書

Rod 和 Juergen 合著了另外一本書,叫做《J2EE Development without EJB》


一個Java框架15年的演化,那些你不知道的spring成長史


(Juergen : “怎么不把我的頭像放上去, 我也是作者啊”)

從書名就可以看到,這時候,EJB還是很有市場的,要不他們倆怎么會說without EJB呢!

我就是看了這本書以后才迷上了Spring框架。

到了2005年,第3本書問世,這一本書完全以Spring為中心。這一次,一下子出現了5個作者,反映了Spring 在茁壯成長。


一個Java框架15年的演化,那些你不知道的spring成長史


(Rod Johnson站在中間,我看了半天,左二也許就是Juergen 吧)

這5個人,一邊開發Spring framework, 一邊寫書,實在是抓狂,后來他們決定把精力放到軟件開發上,以后不再寫書了。

別人想寫的話他們可以提供支持。

Spring 2.0 ~ 2.5

2006年發布Spring 2.0 , 2007年發布Spring 2.5 。

這一階段,他們不僅僅是悶頭做開發,還走出去聽取大家的意見,看看大家需要什么功能。

一個非常重要的功能:基于注解的依賴注入和組件掃描( <context:component-scan> )出現了,這一下子就解放了碼農們,不用辛苦地在XML中做配置了,后來還引發了一番爭論:究竟是注解配置好還是XML配置好?

不僅如此,在Spring MVC中也引入了像@Controller這樣的注解,這一下子讓Web開發極為方便, Spring MVC開始攻城拔寨

2006年,一個叫做Ruby on Rails的框架突然崛起,號稱比Java 開發快10倍, 約定重于配置,Don't repeat yourself的思想隨著RoR深入人心。

Java 世界怎能沒有應對措施? 用Java語言去寫,肯定達不到動態語言的靈活性,于是就用Groovy這個運行在JVM上的語言寫了一個類似RoR的框架: Grails。

Rod 和 Juergen他們的公司原來叫做interface21, 總部在英國,后來獲得風投以后改名為SpringSource,搬到了美國, 2008年SpringSource順勢把Grails給收購了, 成功擴大了自己的疆土。

此是的Spring 產品系列看起來像下圖, Spring從單一的產品變成了一個生態系統。

一個Java框架15年的演化,那些你不知道的spring成長史

Spring 3.0 -> 3. 2

2009年Spring 3.0 正式發布。

這一階段的重大增強在Spring MVC中對RESTful的支持。 之前的Web層框架主要是Form-based ,也就是說用戶提交Form,系統進行處理,渲染生成HTML。 現在RESTful成了非常熱門的概念,Spring對它有了完整的支持。

比較厲害的一點是, 在核心組件層次,和web framework 層次,Spring早期(2003,2004年)所選擇的那些抽象概念被證明還是有效的,至少是可以演進的,甚至對于新的挑戰,新的應用都沒有問題 !

可以演進的模型和架構是非常非常厲害的。

另外也把生態系統中有些外圍產品的特性被移到核心框架當中,例如Java Config和Sping Expression Language

一個Java框架15年的演化,那些你不知道的spring成長史

這些注解,Config都經歷了10年的考驗,非常長壽,至今還是主流的使用模型。

收購!收購!收購!


一個Java框架15年的演化,那些你不知道的spring成長史


2009年,SpringSource 被VMWare以4.2億美元收購,不僅如此,VMWare繼續收購了開源的消息隊列RabbitMQ,開源的緩存Redis, Gemstone等一系列著名軟件,他們組成了一個叫做vFabric Application Suite的品牌。

到了2013年, VMWare,還有它的母公司EMC,和通用電氣一起又合資建立了一個叫做Pivotal Software的公司,VMWare公司那些應用層的軟件,包括Spring,都被轉移到了Pivotal。

2015年,Dell又收購了EMC !

這一連串商業操作確實讓人眼花繚亂, 不管如何,Spring創始人Rod和Juergen等人應該獲得了非常豐厚的回報。

2012年7月,Spring創始人Rod Johnson離開了VMWare, 現在他是5個公司的董事會成員:

Neo Technology

Elasticsearch

Atomist

Meteor

Hazelcast

Spring 4.0 ~ 4.3

不管商業操作如何,Spring還是繼續發展, 2013年12月, Spring4.0 發布,這個版本開始支持JDK8 , 甚至比JDK8 的GA版本還要早3個月!

2014年出現了一個激動人心的東西: Spring Boot,如果說之前的Grails還是模仿的話, Spring Boot完全是從Spring基礎上發展起來的,通過自動的配置和依賴管理,極大地解放了程序員。

Spring Boot內置了Tomcat或Jetty , 一個jar文件就可以部署,這簡直就是為微服務量身定做的。

當然,僅僅有Spring Boot還遠遠不足以實現一個微服務的系統,還需要很多組件來實現這樣的功能:

服務的注冊和發現

負載均衡

服務的隔離和降級

......

于是,在2015年Spring Cloud 出現了。

Spring 5.0 : 擁抱反應式編程

到目前為止,無論是普通的form-based的MVC,還是Restful風格的Web, 其核心都是Servlet !

Web Container 會維護一個線程池, 當Web請求來了以后,從線程池取一個線程來處理,如果這個請求需要訪問數據庫,網絡,那這個線程就得等著, 這就是所謂同步阻塞的模型。

當請求過多,線程池用光以后,連最基本的請求都無法處理了。為了解決這個問題,Java 世界開始呼喚新的IO模式。

2017年9月發布的Spring 5.0 開始擁抱新的模型:異步非阻塞, 這就是Spring WebFlux。

一個Java框架15年的演化,那些你不知道的spring成長史

一個Java框架15年的演化,那些你不知道的spring成長史

后記

提出輕量級的J2EE開發,顛覆EJB

使用注解, Java Config

Spring MVC

全面支持RESTful

Spring Boot

Spring Cloud

Spring WebFlux

......

縱觀Spring 這10多年的發展,可以說Spring一直在與時俱進,不斷面對新挑戰,不斷推出新產品,這也是它能夠屹立于Java后端而不倒的原因吧 !


我來說兩句
您需要登錄后才可以評論 登錄 | 立即注冊
facelist
所有評論(1)
無塵粉筆 2019-11-3 10:09
6了
回復
領先的中文移動開發者社區
18620764416
7*24全天服務
意見反饋:[email protected]

掃一掃關注我們

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粵ICP備15117877號 )

安卓版28杠游戏