Tephra-JavaEE基于 JavaEE 的快速開(kāi)發(fā)框架
Tephra旨在構(gòu)建一個(gè)穩(wěn)定、高效、易于集群、快速擴(kuò)展的JavaEE開(kāi)發(fā)框架。目前,Tephra已經(jīng)具備了以下特性:
提供類(lèi)級(jí)別的熱更新,但僅建議在需要快速修正嚴(yán)重BUG、并且無(wú)法立即進(jìn)行全更新時(shí)使用。
提供全冗余方式的緩存,自動(dòng)在每個(gè)節(jié)點(diǎn)間同步緩存數(shù)據(jù),而每個(gè)節(jié)點(diǎn)都僅從本地內(nèi)存中獲取緩存數(shù)據(jù),從而提供高效的執(zhí)行效率,并且當(dāng)部分節(jié)點(diǎn)宕機(jī)時(shí)仍舊能正常提供服務(wù)。當(dāng)然,也允許使用Redis提供統(tǒng)一的中心節(jié)點(diǎn)緩存。此特性可用于多節(jié)點(diǎn)負(fù)載時(shí)提供不停服更新。
提供數(shù)據(jù)庫(kù)讀寫(xiě)分離、及讀負(fù)載均衡,并且允許配置多個(gè)不同的數(shù)據(jù)庫(kù),甚至允許在運(yùn)行期間增加新的數(shù)據(jù)庫(kù)配置,并自動(dòng)映射ORM。允許執(zhí)行標(biāo)準(zhǔn)的SQL或存儲(chǔ)過(guò)程,同時(shí)提供了一個(gè)簡(jiǎn)單、輕量的ORM工具,并集成Hibernate、MyBatis為復(fù)雜ORM需求提供支持。
提供MongoDB工具實(shí)現(xiàn)對(duì)NoSQL的支持,支持負(fù)載均衡。
提供輕量級(jí)、快速響應(yīng)的控制器,允許設(shè)置最大并發(fā)峰值,以確保在突如其來(lái)的并發(fā)攻擊后能繼續(xù)正常提供服務(wù);也允許設(shè)置單IP最大并發(fā)量,確保小量IP并發(fā)攻擊時(shí)仍能正常提供服務(wù)。允許發(fā)布為HTTP(S)、WebSocket、Socket服務(wù)。
提供JavaScript腳本引擎支持,允許JavaScript與JavaBean自由交互,并且可以發(fā)布JavaScript為服務(wù);以及使用Javacript作為復(fù)雜規(guī)則驗(yàn)證器。
提供Hadoop存取支持。
模塊化開(kāi)發(fā),使用注解簡(jiǎn)化配置,增強(qiáng)代碼可讀性與維護(hù)性。
Tephra取火山灰之意,因?yàn)楫?dāng)初好像剛好有個(gè)火山噴發(fā)了,而且覺(jué)得火山灰是一個(gè)毀滅者,但同時(shí)又是一個(gè)創(chuàng)造者。他毀滅了舊的體系,然后開(kāi)始用他自己的養(yǎng)分創(chuàng)造新的體系。目前看來(lái),他確實(shí)已經(jīng)毀滅了我之前的架構(gòu)(封印在SVN上很久了),接下來(lái)就看看他如何創(chuàng)建一個(gè)新的體系了。
先說(shuō)說(shuō)核心思想,我一直向開(kāi)發(fā)人員推薦面向接口的編程思想,因?yàn)槲矣X(jué)得這是一個(gè)很Nice的指導(dǎo)方向,可以讓你的代碼更加簡(jiǎn)潔,讀之欣然。
混合Scala編程是一個(gè)大膽的嘗試,可以彌補(bǔ)Java的一些弱點(diǎn);當(dāng)然,主要還是基于Java開(kāi)發(fā),至少一開(kāi)始如此。
Spring仍舊是核心的組件,當(dāng)然仍舊沒(méi)有使用太多的Spring,因?yàn)槲矣X(jué)得Spring后面的很多功能已經(jīng)背離了早先的設(shè)計(jì)思想,變成一個(gè)想包羅萬(wàn)象的大家伙。Tephra中對(duì)于Spring的使用仍舊僅局限于IoC和AOP,因?yàn)槲矣X(jué)得這哥倆才是Spring最吸引人的地方。
Hibernate是后來(lái)又補(bǔ)上的,最早的版本沒(méi)有是因?yàn)榈谝粋€(gè)版本是為游戲服務(wù)器架構(gòu)的,唯快不破的準(zhǔn)則放棄了Hibernate,而后面增加回來(lái)是基于后臺(tái)管理功能的需要。這一過(guò)程糾正了我一個(gè)開(kāi)發(fā)框架中只能存在一個(gè)ORM的想法。沒(méi)人規(guī)定不可以,是吧?!
Struts一開(kāi)始就被放棄了,主要是因?yàn)榘踩┒刺嗔恕H缓蟾鶕?jù)自己多年使用Struts的經(jīng)驗(yàn)和習(xí)慣,開(kāi)發(fā)了專(zhuān)屬于Tephra的控制層,功能簡(jiǎn)單,但是高效。因?yàn)闆](méi)有像OGNL那么強(qiáng)大的參數(shù)映射功能,所以類(lèi)似的安全漏洞應(yīng)該不存在;不過(guò)為了調(diào)試方便后門(mén)還是需要的,有上鎖了,應(yīng)該是安全的。
JSON成為了Tephra最主要的數(shù)據(jù)傳輸格式,輕量、跨平臺(tái)、跨終端,別無(wú)他選,至少目前如此。
最后說(shuō)說(shuō)Maven,確實(shí)比Ant進(jìn)步不少,也許這也是一個(gè)毀滅舊體系,創(chuàng)建新體系的過(guò)程吧。


