文章出處

jframe是什么?

 

jframe是一個基于MIT協議開源的java web應用程序框架,匯聚了我們團隊之于java web應用程序的核心架構思想以及大量最佳實踐,并且持續在實際項目中不斷完善優化。

 

簡單的講,jframe可以看成是MvcSolution(一個基于ASP.NET MVC的程序框架)的java實現,因為它們體現的都是完全同樣的架構思想和非常相似的最佳實踐。

 

如果你是一個java新手,想要學習如何成為java架構師,相信jframe和本系列文章將會給你很大的幫助;

 

如果你是學.NET的想要轉java,但是卻不知道怎么開始,本系列文章和jframe框架也會是你不錯的選擇,因為本系列文章會解釋很多為什么,還會分享我們踩過的坑,對于你理解java體系的邏輯大有助益;

 

如果你是java大神,你也可以看看jframe的實現,因為jframe里面融合了很多.NET世界的優點(比如java版的linq),可能是java程序員不曾體會過的,當然,我們更希望java大神們多多指點,指出我們的錯誤實踐,幫助jframe不斷完善。

 

jframe的架構思想:分層和模塊化

應該說任何一個架構師在做項目架構的時候,不管那個項目多么復雜,其架構思想都是分層跟模塊化。

 

jframe的主要分層(5層):

  • infrastructure(基礎設施);
  • data(數據庫定義);
  • service(數據庫訪問);
  • web(controller);
  • web前端(html/js/css)。

每一個主要分層中,其實是由無數個小層組合起來的。比如我們的data層就分了:數據庫、數據表對應的實體類、枚舉類、枚舉類converter、DbSet、data層基礎設施等等。

 

再細分,每一個類又可能分了很多個層(也可以算是編碼規范)。比如我們的枚舉類就分了:值定義、文檔、獲取值、值邏輯計算等。 

 

所以,基于jframe進行開發,我們建的每一個文件和寫的每一行代碼都有它應該待的地方,都不是想放在哪里就放在哪里的。比如一個枚舉類應該放在哪個文件夾,枚舉類的內容應該怎么寫。

 

當然,雖然jframe定義了大量的規范,但是我們卻極其推崇自由的寫代碼的方式。舉個簡單的例子:我們完全不排斥中文寫代碼,反而對于某些很難說清楚的事情我們強烈推薦用中文命名變量/方法,因為那比一個錯誤的英文命名+一個正確的中文注釋容易維護多了。在整個jframe框架中,你會看到大量的非常自由的代碼,完全不受傳統的編碼潛規則的束縛,比如,你會在一個枚舉類里面看到大量的業務邏輯的實現。

 

這樣的話,看上去jframe既是一個規范強迫者又是一個自由主義者。這其實源于我們唯一的編碼規則。

 

jframe唯一的編碼思想:把相關的業務邏輯寫到一堆

這個算什么思想呢?連個名字都沒有,不像TDD、DDD、AMD這么高大上,但這個思想是我們這么些年總結下來唯一適用得最好的編碼指導思想。其實呢,它還是有一個名字的,叫fat model開發方式,也就是說你建一個類,你就卯足了勁把這個類寫肥,把它相關的業務邏輯全部寫到一起,肥死它。(Fat Model原意是指在MVC模式中,把MVC中的M寫肥,本文的思想不局限于MVC的M,而是項目中的全部實體類)。其實跟DDD也是很相似的,只不過DDD建議的是把Domain層實體類寫肥。

 

比如:你建了一個dto對象從數據庫查詢數據,但是你卻把sql寫在另外一個地方(如service層),某一天,你需要增加一個字段的返回,這時你就需要find usages(clipse里面叫refercene)去一個一個找了;但是如果你把查詢sql就放在dto對象內部,那要增刪改某個字段就非常不容易出錯了。

 

這里,不小心提到了一個好架構應該具備的品質:讓程序員不容易寫出錯誤的代碼。

 

后面我會專門寫文章解釋為什么jframe不用spring data,主要原因就是其對于事務的管理非常容易讓程序員寫出錯誤的代碼。

 

jframe的架構思想:模塊化

jframe自帶的模塊有這4個:

  1. admin:超級管理員后臺;
  2. pc:pc瀏覽器版;
  3. app: app 瀏覽器版,可以理解為微信版或H5版;
  4. api:為WEB前端提供API訪問;

模塊都是隨便加減的,增加或移除一個模塊對系統沒有任何影響。你也可以根據項目需要自建更多模塊。

 

jframe的依賴

  1. jdk8
  2. spring mvc
  3. mysql
  4. hibernate
  5. commons
  6. fastjson
  7. tiles
  8. maven
  9. tomcat

為什么用JDK8 呢?因為jframe用到了大量的lamda表達式,這也是因為我們用習慣了C#,無法忍受沒有lamda的編程體驗。

 

mysql 客戶端我們是用的dbeavor,感覺比Navicat好用很多。

 

jframe使用的IDE: intellij idea

官網下載地址:http://www.jetbrains.com/idea/

 

intellij idea是本人認為最好的java集成開發工具了,該工具也是由jetbrains公司開發的,就是resharper的開發者。用過resharper的朋友應該都深有體會,他們公司的產品實在是太懂程序員了。

 

雖然沒有用過myeclipse,但是用過幾個月的eclipse和基于eclipse修改的幾個其他定制版,感覺eclipse系列相比intellij idea差了1萬倍。本人用了幾個月的eclipse還是覺得離visual studio相差甚遠,但是用了intellij idea幾個小時就覺得跟vs的寫代碼的體驗非常接近了。所以,如果你還沒有嘗試過intellij idea,請一定要嘗試一下,即使你已經用eclipse用的滾瓜爛熟倒背如流也值得一試。

 

關于作者

本來不想加關于作者這一節的,但是考慮到對讀者負責,于是還是加上一個簡短的說明。主要是想告訴讀者,作者并非java領域的大神,也不是來自BAT等知名公司,作者只是一個普普通通擁有8年編程經驗的架構師,對于架構有一些自己的見解。作者從開始java開發到現在也只有半年時間,只不過web程序的架構不管是.NET還是java都有很多相似之處,因此才將.NET平臺下的MvcSolution搬到java的世界,于是才有了jframe。

 

另外,作者對于編程思想有很多“不合規矩”的想法,希望讀者朋友們在讀到這些奇怪的想法時,可以以更open一點的心態來擁抱這些奇怪的想法,因為世界是在不斷改變的,現在對你來講很難接受的一個想法說不定過幾年你就完全認可了。作者也是一個善于獨立思考的人,從來不迷信任何權威,比如就連這么流行的spring mvc,作者也認為有很多設計不合理的地方。于是,作者自己創造了很多新的東西,也重復發明了不少的輪子。

 

所以,作者雖然不能保證jframe一定比你們現在的框架更優,但卻可以保證在你看jframe框架的時候,你會看到很多突破常理的設計,會看到很多新的東西。這些新的東西可能會給你新的靈感,這樣,可能就已足夠了。

 

jframe 源碼下載

好了,理解了jframe的基本架構思想和編程思想,也對外部依賴和IDE有了基本的概念,現在可以下載jframe看看了。

 

github 項目地址:https://github.com/leotsai/jframe

中文QQ技術交流群:651499479

 

下一篇預告,jframe文件組織結構、maven依賴管理、調試、發布,敬請期待。

 

THE END.

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()