鍍金池/ 教程/ Java/ 緣起
分布式鎖的簡單實現(xiàn)
關于框架體系與戰(zhàn)術的思考
開源與中小型軟件公司的未來趨勢
生態(tài)圈的建立
用200行的DBF解析器來展示良好架構設計
緣起
業(yè)務流程引擎設計
軟件開發(fā)雜談
高屋建瓴,理念先行
借船下海還是造船下海
Web界面快速開發(fā)實踐
教計算機程序解數(shù)學題
量身定制規(guī)則引擎,適應多變業(yè)務場景
緩存相關代碼的演變
理想的開源框架與設計原則
框架2.0的設計梳理
與屈原對話及開源精神

緣起

自己動手寫框架?第一次接觸這本書的讀者可能會有一些驚訝。是的,這就是寫本書的緣由。

緣由

從畢業(yè)以來,我一直從事軟件開發(fā)及軟件管理,做過大量的項目與產(chǎn)品,但是還是喜歡平臺軟件及軟件管理方面的工作。多年的業(yè)務開發(fā)及平臺構建的過程中,踩了許許多多的坑,也積累了許許多多的經(jīng)驗。 和很多的朋友一樣,在沒有開發(fā)框架之前,可能我們只有一些落在紙面上的編碼規(guī)范,或者說是開發(fā)約定。但不管怎么說,這些規(guī)范和約定對于我們軟件開發(fā)過程還是有相當?shù)闹笇c規(guī)范作用的。再后來,隨著時間的推移,我們的軟件代碼寫得越來越多,它們中的一部分具有相當?shù)耐ㄓ眯裕赡芫蜁兂梢粋€公共庫;它們其中的一部分,在整體的運行機制來說是統(tǒng)一的,可以抽取成公共的部分,但是有一部分又會業(yè)務性非常強,需要在實際做業(yè)務的時候進行擴展。

于是,這部分就會演變成框架!不過,這個過程往往是困難重重。 我們也深知這個道理,依靠一個全新框架做所有的事情,可謂篳路藍縷。第一是從時間精力上不可能的;第二是沒有足夠的能力與水平做所有的事情;第三,普適性與專業(yè)性方面也不能做到良好的平衡;第四,技術的發(fā)展變化是那么快,不能快速適應變化,就只能被淘汰。因此,從框架設計初始,首先應該是從體系化方面考慮,構建一個生態(tài)圈,由所有志同道合的程序員來來共同加入生態(tài)圈,最終做到越用越強,越用越好用的效果!同時,框架的學習成本必須非常低,這樣才可以讓使用者更容易上手,避免由于學習難度大而導致的學習曲線太陡、太長。

我們也知道,構建一個框架,明顯不僅僅是掌握某種語言的編程技術所能完成的:這需要充分考慮架構、開發(fā)、測試、打包、發(fā)布、部署、維護等各個環(huán)節(jié)的各個參與者的需求及期望;這需要對現(xiàn)有各種框架的優(yōu)點、缺點有充分的了解,需要對自己框架的理念、原則、目標、策略有清晰的定位與認識;這需要有敏銳的嗅覺,可以感受得到某些壞味道,而這種嗅覺就需要經(jīng)年的積累。所以,好的框架應該是“品”出來的!

正是基于這樣的愿景,我們已經(jīng)走過了近5個年頭,實際上在真正開始之前已經(jīng)做了諸多的準備工作,更多的是在整個軟件架構中蘊含了構建者多年軟件從業(yè)所積累的豐富經(jīng)驗,以及通過踩下的無數(shù)的坑所積累起來的經(jīng)驗。開始的是一個人的堅守,現(xiàn)在已經(jīng)形成了一個緊密團結且互補性強的團隊,團隊成員每個人都有自己的特色,但是都有一個共同的特點,那就是:對軟件事業(yè)的熱愛。

因此,這本書就是幫助你,一步一步實現(xiàn)一個基于J2EE技術的應用開發(fā)框架!

認識框架

通過這本書,我們將搭建一個基于J2EE技術的應用開發(fā)框架,可以用來開發(fā)各種Java Application和Web Application。就像一個襁褓中的新生嬰兒,我們也給框架取了一個名字——Tiny。權且當作一個小名吧。

1.Tiny名稱的來歷

取名Tiny是取其微不足道,微小之意。我們認為,一個J2EE開發(fā)框架是非常復雜的,只有把框架分解成非常細小、可控的部分,并且對每個細小、可控的部分都有一個最優(yōu)解或相對最優(yōu)解,那么整個方案也就可以非常不錯的落地。

Tiny Framework是作者在多年框架構建經(jīng)驗積累上的嘔心瀝血之作,是作者在軟件實踐中吃了無數(shù)的苦,受了無數(shù)的累之后,立足于解決軟件的開發(fā)、測試、發(fā)布、實施全生命周期存在的多種“疑難雜癥”所開發(fā)的軟件開發(fā)平臺。往小了說,可以用于編寫一個HelloWorld,再大些可用于快速搭建一個網(wǎng)站,往大了說,可以用于構建一個7*24小時永不停止服務的互聯(lián)網(wǎng)應用。構建者對軟件框架的一個重要理解就是Think big, start small, scale fast。所以,Tiny框架沒有什么是不可以進行擴展的,也沒有什么是不可以被替換的。所以,只要你是J2EE領域的參與者,Tiny框架都值得你一看、一試、一用。

2.Tiny框架的構建策略

Think big, start small, scale fast。想法要宏偉,但是要從小的開始,同時可以快速的進行擴展。Tiny框架的構建者認為:如果想法不夠宏偉,那么就會局限于細節(jié);如果一開始就鋪非常大的攤子,將會失去控制;如果不能快速擴展,就無法滿足應用需要。

3.Tiny框架的應用定位

基于WEB的展現(xiàn)平臺主要包括展現(xiàn)層及控制層,可以讓開發(fā)人員方便快速的實現(xiàn)Web層的開發(fā),同時要避免現(xiàn)有方案的缺點,同時要有自己非常突出的優(yōu)點?;赟OA的服務開發(fā)平臺可以方便的開發(fā)平臺無關的服務,同時有水平擴展,應用集群方面要有良好的支持,可以滿足7*24的運維要求。

4.Tiny框架的目標定位

Tiny框架的構建者認為再好的框架也有過時的時候,再優(yōu)秀的架構師也有視野盲區(qū),再牛的寫手也無法實現(xiàn)所有的部分。所以Tiny框架的構建者認為:只有建立一個良好的生態(tài)圈,讓廣大開發(fā)者使用者都在生態(tài)圈在找到自己的位置,才是有生命的模式。

5.兼容性測試

理論上說支持各種支持JDK1.6以上的32位,64位操作系統(tǒng),但是限于時間及環(huán)境準備,實際測試過程當中沒有全部測試過。

6.引用的開源框架和開源協(xié)議

框架引用的開源框架有:VelocityVelocity官方網(wǎng)站,Lucene,MavenMaven;擴展引用的開源框架有:JQueryJQuery,HibernateHibernate,iBatisiBatis。

Tiny框架有兩個部分的內(nèi)容,一部分采用開源方式發(fā)布,開源發(fā)布的部分采用GPLv3開源協(xié)議,詳細參見英文文本,也可以參看GNU通用公共許可協(xié)議獲取中文的一些解釋;另一部分沒有開源,采用商業(yè)授權方式進行發(fā)布。Tiny框框架之所以選擇了GPL協(xié)議,主要出發(fā)點是說:如果你喜歡Tiny框架,那么可以通過Fork的方式貢獻自己的代碼,也可以加入Tiny組織一起來構建Tiny框架;也在自己的項目或產(chǎn)品中可以免費使用Tiny框架。但是不允許把Tiny框架整體或其中的一部分作為自己的閉源框架進行發(fā)布。這也就意味著,如果你要擴展Tiny框架或者修改Tiny框架為自己的框架,則你自己框架也是需要開源并提供源代碼的。

7.編碼規(guī)范

Tiny的編碼規(guī)范,如下:采用Eclipse的Ctrl+Shift+F,格式化出來的格式,即基本的縮進格式所有類名都采首字母大寫的駝峰規(guī)則所有方法名,變量名都采用首字母小寫的駝峰規(guī)則所有常量名都定義為用“_”連接的全大寫單詞方法的圈復雜度3個以下為標準值,5-7個為可接受值,8個以上要加備注說明其必要性除了極少數(shù)情況外(數(shù)據(jù)下標,集合或數(shù)組長度等),所有的常量都應該定義為常量除非縮寫是業(yè)界標準說法,否則所有變量名及常量名,都用全單詞拼寫類名全部用名字為主體,前面可以加形容性或限定詞方法名全部用形容性或動詞為主體方法行數(shù),一般在20行以內(nèi),20-40行屬于可接受范圍,40+以上要有備注說明其必要性類名及接口方法必須有備注說明,實現(xiàn)類中的方法可以不加。非接口實現(xiàn)類的公有方法必須有備注說明不允許出現(xiàn)Main方法,除非確實需要從命令行運行異常必須扔出或日志,如果抓住不作處理,需要有明確注釋說明日志記錄必須閉環(huán)(有開始,有結束)利用sonar進行檢測,RCI(規(guī)則遵從指數(shù))達到90%以上。