用n多的框架寫同一個(gè)demo
最近有了比較長(zhǎng)的空閑時(shí)間。 所以看了很多很多不同的語言,框架。 java用了很多年了,總覺得眼界都被java影響了,所以想從新開始學(xué)一點(diǎn)新的東西。 而一旦開始選擇開始的路徑,***主義的小心思就出來作祟了。 泛泛的接觸了好多好多東西,基本上主流的語言,框架都把入門文檔看了個(gè)遍。 到***都沒有達(dá)到最初想學(xué)點(diǎn)東西的目的,反而看文檔的能力提高不少......
所以,我決定不再單純的看了。 我覺得執(zhí)行下面的計(jì)劃,動(dòng)手寫寫。這也是為什么文章開始就要寫明發(fā)表時(shí)間,因?yàn)槲磥頃?huì)發(fā)生什么誰也不知道,我得到的結(jié)果只是當(dāng)下我認(rèn)為的好結(jié)果而已。
僅此而已
- 測(cè)試方式:controller層上返回服務(wù)器當(dāng)前時(shí)間 new Date().getTime() //long類型
- 開發(fā)方式:使用各個(gè)框架的引導(dǎo)教程默認(rèn)設(shè)置去寫代碼,盡量寫最少的代碼完成demo
- 測(cè)試的框架:jfinal(java),grails(groovy),play(scala),springboot-undertow(java),express(js),beego(golang),compojure(clojure)....看情況增加
- 測(cè)試內(nèi)容:ab進(jìn)行壓測(cè)測(cè)試,開發(fā)效率(完成所花費(fèi)的時(shí)間),上手難度,擴(kuò)展性(面對(duì)需求頻繁更改的可維護(hù)性)
- 壓測(cè)命令:ab -n 100000 -c 1000 -k http://localhost:8080/
- 測(cè)試機(jī)器:amdFX 6300 3.5G+8G+windows10
因?yàn)槎际侵饔^感受,因此對(duì)其他人來說沒有任何參考價(jià)值 沒有任何參考價(jià)值 沒有任何參考價(jià)值 沒有任何參考價(jià)值
重要的事情說三遍,免得別人以為我在宣揚(yáng)啥。 下面開始貼圖
jfinal jfianl是我用的最多的框架,目前整個(gè)公司也在用,真的用起來很爽,最喜歡orm層設(shè)計(jì),可以不寫字段,對(duì)于需要頻繁變更數(shù)據(jù)庫結(jié)構(gòu)的前期開發(fā)非常順手。擴(kuò)展起來也很方便,畢竟是java系。上手的話和在測(cè)的這些比較對(duì)于0基礎(chǔ)的朋友來說屬于困難。
jfinal+tomcat9m 不打包,使用idea直接運(yùn)行起來,配置文件里面關(guān)閉dev
jfinal+tomcat8 war包 關(guān)閉dev
jfinal + jetty9 war包 關(guān)閉dev
spring spring是jee開發(fā)繞不過去的大山,springboot用的人越來越多,其實(shí)我之所以要看springboot只是對(duì)undertow這個(gè)框架感興趣。因此測(cè)試結(jié)果也是直接測(cè)試undertow內(nèi)核下的性能。 springboot上手難度的話個(gè)人感覺比jfianl簡(jiǎn)單一些,比著教程可以跑起來,不過對(duì)于不了解java的朋友來說 看到一大堆注解,會(huì)瘋掉。
springboot+undertow idea中直接run
scala scala號(hào)稱是會(huì)干掉java的jvm語言,多范式,spark,這門語言本身有很強(qiáng)烈的光環(huán),而且play作為非常牛逼的全??蚣?,給人的體驗(yàn)是極爽的。寫代碼->刷新看結(jié)果,不需要重新編譯。唯一感覺不好的是,scala這門語言好晦澀....各種符號(hào),各種+-*/,各種箭頭。語言本身上手難度決定了這個(gè)框架的上手難度。
play
groovy groovy是大家經(jīng)常用卻不知道它的語言,這么說的原因是,gradle就是groovy開發(fā)的。grails是groovy借鑒ruby on rails框架開發(fā)的web 框架,對(duì)新人極其友好,命令行里面,create-controller,create-doman,create-service。直到現(xiàn)在我還能回想起那種寫代碼順暢的感覺。而且grails3以后,底層實(shí)現(xiàn)直接使用spring4+hibernate5。對(duì)于ssh系的開發(fā)人員來說,上手速度杠杠的。因此測(cè)試也是兩種,console中直接執(zhí)行使用的jetty,使用main函數(shù)執(zhí)行使用springboot。而且由于本身是腳本語言,代碼修改非常方便。
grails3 console中直接運(yùn)行
grails3-springboot
nodejs 作為nodejs殺手框架express,讓前端人員在各種領(lǐng)域里面虐殺各種后臺(tái)開發(fā)人員。俗話說的好,凡事能用js實(shí)現(xiàn)的東西,早晚要用js實(shí)現(xiàn)。上手速度沒有比他更快了。而且寫的是js的代碼,簡(jiǎn)單又好學(xué)。nodejs真心不錯(cuò)的。
express4
clojure clojure 是jvm下面的一門lisp方言。俗話說,每過一段時(shí)間,總有一小撮人發(fā)現(xiàn)這個(gè)世界上還有另外一個(gè)世界叫l(wèi)isp,并且他們妄想lisp能夠統(tǒng)領(lǐng)全世界。其實(shí)lisp下面有不少web框架可以用,為什么選擇compojure這個(gè)框架,主要原因還是http-kit。compojure默認(rèn)配置使用jetty7執(zhí)行,效率沒法看了,但是換成http-kit內(nèi)核以后,速度飛起.測(cè)試完http-kit以后,我對(duì)這個(gè)框架產(chǎn)生非常大的興趣,有誰知道有http-kit有哪些應(yīng)用嗎? 這個(gè)速度真的是可怕啊。
上手難度:你知道lisp嗎?
compojure 默認(rèn)配置
compojure+http-kit
golang golang作為google親兒子語言,不用多說了。好多朋友都喜歡,我去年也用了好一陣子,確實(shí)很好,而且beego作為國(guó)人開發(fā)的框架,教程的豐富程度,從視頻到文字應(yīng)有盡有。但是,不知道是什么原因,在我的機(jī)器上beego測(cè)試出來的速度有點(diǎn)匪夷所思的慢,這個(gè)值大家看看就成了 這個(gè)值大家看看就成了 這個(gè)值大家看看就成了 這個(gè)值大家看看就成了 重要的事情說三遍,要不然我就成beego黑了.
beego 默認(rèn)配置
測(cè)試全部完成以后發(fā)現(xiàn),其實(shí)測(cè)試本身沒啥意義,因?yàn)槎际悄J(rèn)配置,和優(yōu)化以后效率就沒有什么可比性了。因此只能圖個(gè)樂呵。
茄子蘿卜各有所愛,何必在意細(xì)節(jié)