一切都從這本書開始
這本書的作者就是大名鼎鼎的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(招募中)