Spring:一個Java框架15年的演化排抬,頭發(fā)都學沒了

一切都從這本書開始

這本書的作者就是大名鼎鼎的Spring創(chuàng)始人,Rod Johnson授段,其實在寫這本書之前蹲蒲,Rod已經(jīng)是一個知名的Java架構(gòu)師了,還是JSR154專家組成員畴蒲,負責定義Servlet2.4規(guī)范悠鞍。

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

在2002年的圣誕假期蔫骂,另外一個Java架構(gòu)師Juergen Hoeller閱讀了這本書么翰,如獲珍寶,一口氣讀完辽旋,還下載了書中的代碼浩嫌,然后給Rod寫了一封信,原文未知补胚,意思就是:

“ 哥們码耐,你這是個好東東啊,書中的那些代碼已經(jīng)是個小框架了溶其,難道你不想把他給產(chǎn)品化骚腥,搞成一個開源產(chǎn)品嗎? ”

Rod 回復說: “兄弟瓶逃,我寫這本書花了我八九個月時間束铭,我也得賺錢吃飯袄椤! 不過契沫,如果你要是能保證和我一起投入的話带猴,也許可以搞起來⌒竿颍”

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

(聽說過sourceforge.net的可以舉個手贷掖,嗯,放下吧渴语,估計和我一樣,是35歲以上的程序員了吧昆咽。 sourceforge.net這可是當時最大的開源網(wǎng)站驾凶,地位如同現(xiàn)在的Github一樣。)

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

Spring 0.9 -> 1.2

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

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

這個時候的Spring屉符,主要還是使用現(xiàn)在看來非常笨拙的XML Bean Definitions剧浸, 在1.2版本中,已經(jīng)開始了對注解的支持矗钟,例如@Transactional 唆香。 當然你必須使用JDK1. 5才可以。

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

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

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》

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

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

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

到了2005年,第3本書問世人断,這一本書完全以Spring為中心吭从。這一次,一下子出現(xiàn)了5個作者恶迈,反映了Spring 在茁壯成長涩金。

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

這5個人步做,一邊開發(fā)Spring framework, 一邊寫書,實在是抓狂熔吗,后來他們決定把精力放到軟件開發(fā)上辆床,以后不再寫書了。

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

Spring 2.0 ~ 2.5

2006年發(fā)布Spring 2.0 , 2007年發(fā)布Spring 2.5 讼载。

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

一個非常重要的功能:基于注解的依賴注入和組件掃描( )出現(xiàn)了漩符,這一下子就解放了碼農(nóng)們一喘,不用辛苦地在XML中做配置了,后來還引發(fā)了一番爭論:究竟是注解配置好還是XML配置好?

不僅如此凸克,在Spring MVC中也引入了像@Controller這樣的注解议蟆,這一下子讓Web開發(fā)極為方便,Spring MVC開始攻城拔寨萎战。

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

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

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

此是的Spring 產(chǎn)品系列看起來像下圖柳骄, Spring從單一的產(chǎn)品變成了一個生態(tài)系統(tǒng)。

Spring 3.0 -> 3. 2

2009年Spring 3.0 正式發(fā)布。

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

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

可以演進的模型和架構(gòu)是非常非常厲害的颁独。

另外也把生態(tài)系統(tǒng)中有些外圍產(chǎn)品的特性被移到核心框架當中,例如Java Config和Sping Expression Language

這些注解伪冰,Config都經(jīng)歷了10年的考驗誓酒,非常長壽,至今還是主流的使用模型贮聂。

收購靠柑!收購寨辩!收購!

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

到了2013年畔勤, VMWare蕾各,還有它的母公司EMC,和通用電氣一起又合資建立了一個叫做Pivotal Software的公司庆揪,VMWare公司那些應用層的軟件式曲,包括Spring,都被轉(zhuǎn)移到了Pivotal缸榛。

2015年吝羞,Dell又收購了EMC !

這一連串商業(yè)操作確實讓人眼花繚亂, 不管如何内颗,Spring創(chuàng)始人Rod和Juergen等人應該獲得了非常豐厚的回報钧排。

2012年7月,Spring創(chuàng)始人Rod Johnson離開了VMWare均澳, 現(xiàn)在他是5個公司的董事會成員:

Neo Technology

Elasticsearch

Atomist

Meteor

Hazelcast

Spring 4.0 ~ 4.3

不管商業(yè)操作如何恨溜,Spring還是繼續(xù)發(fā)展, 2013年12月找前, Spring4.0 發(fā)布糟袁,這個版本開始支持JDK8 , 甚至比JDK8 的GA版本還要早3個月躺盛!

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

Spring Boot內(nèi)置了Tomcat或Jetty 躯枢, 一個jar文件就可以部署则吟,這簡直就是為微服務量身定做的。

當然锄蹂,僅僅有Spring Boot還遠遠不足以實現(xiàn)一個微服務的系統(tǒng)氓仲,還需要很多組件來實現(xiàn)這樣的功能:

服務的注冊和發(fā)現(xiàn)

負載均衡

服務的隔離和降級

......

于是,在2015年Spring Cloud出現(xiàn)了。

Spring 5.0 : 擁抱反應式編程

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

Web Container 會維護一個線程池啥箭, 當Web請求來了以后谍珊,從線程池取一個線程來處理,如果這個請求需要訪問數(shù)據(jù)庫急侥,網(wǎng)絡砌滞,那這個線程就得等著, 這就是所謂同步阻塞的模型坏怪。

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

2017年9月發(fā)布的Spring 5.0 開始擁抱新的模型:異步非阻塞鹏秋, 這就是Spring WebFlux尊蚁。

后記

提出輕量級的J2EE開發(fā),顛覆EJB

使用注解, Java Config

Spring MVC

全面支持RESTful

Spring Boot

Spring Cloud

Spring WebFlux

......

縱觀Spring 這10多年的發(fā)展侣夷,可以說Spring一直在與時俱進横朋,不斷面對新挑戰(zhàn),不斷推出新產(chǎn)品百拓,這也是它能夠屹立于Java后端而不倒的原因吧 !

“我自己是一名老程序員叶撒,辭職后在線上做講師,今年我整理了一份適合2019年學習的Java編程資料干貨耐版,從最基礎的面向?qū)ο蟮礁鞣N框架都有整理,送給每一位初學和進階中學習Java編程的小伙伴压汪。"

加QQ群:730379855(招募中)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粪牲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子止剖,更是在濱河造成了極大的恐慌腺阳,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件穿香,死亡現(xiàn)場離奇詭異亭引,居然都是意外死亡,警方通過查閱死者的電腦和手機皮获,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門焙蚓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事购公∶染” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵宏浩,是天一觀的道長知残。 經(jīng)常有香客問我,道長比庄,這世上最難降的妖魔是什么求妹? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮佳窑,結(jié)果婚禮上制恍,老公的妹妹穿的比我還像新娘。我一直安慰自己华嘹,他們只是感情好吧趣,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著耙厚,像睡著了一般强挫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上薛躬,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天俯渤,我揣著相機與錄音,去河邊找鬼型宝。 笑死八匠,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的趴酣。 我是一名探鬼主播梨树,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼岖寞!你這毒婦竟也來了抡四?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤仗谆,失蹤者是張志新(化名)和其女友劉穎指巡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隶垮,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡藻雪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了狸吞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勉耀。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡指煎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瑰排,到底是詐尸還是另有隱情贯要,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布椭住,位于F島的核電站崇渗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏京郑。R本人自食惡果不足惜宅广,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望些举。 院中可真熱鬧跟狱,春花似錦、人聲如沸户魏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叼丑。三九已至关翎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸠信,已是汗流浹背纵寝。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留星立,地道東北人爽茴。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像绰垂,于是被迫代替她去往敵國和親室奏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容