J2EE開發常用開源框架技術

automationer發表於2015-05-04

主要就我所瞭解的J2EE開發的框架或開源專案做個介紹,可以根據需求選用適當的開源元件進行開發.主要還是以Spring為核心,也總結了一些以前web開發常用的開源工具和開源類庫

1持久層:
1)Hibernate
這個不用介紹了,用的很頻繁,用的比較多的是對映,包括繼承對映和父子表對映
對於DAO在這裡介紹個在它基礎上開發的包bba96,目前最新版本是bba96 2.0它對Hibernate進行了封裝, 查詢功能包括執行hsql或者sql查詢/更新的方法,如果你要多層次邏輯的條件查詢可以自己組裝QueryObject.可以參考它做HibernateDAO.也可以直接利用它
2) iBATIS
另一個ORM工具,Apache的,沒有Hibernate那麼整合,自由度比較大


2:SpringMVC
       原理說明和快速入門:
       配置檔案為:
Spring的配置檔案預設為WEB-INF/xxxx-servelet.xm其中xxx為web.xml中org.springframework.web.servlet.DispatcherServlet的servlet-name。
       Action分發:
Spring將按照配置檔案定義的URL,Mapping到具體Controller類,再根據URL裡的action= xxx或其他引數,利用反射呼叫Controller裡對應的Action方法。
輸入資料繫結:
Spring提供Binder 通過名字的一一對應反射繫結Pojo,也可以直接從request.getParameter()取資料。
輸入資料驗證
Sping 提供了Validator介面當然還可以使用開源的Commons-Validaor支援最好
Interceptor(攔截器)
Spring的攔截器提供介面需要自己編寫,在這點不如WebWork做的好.全面 
       (這裡提一下WebWork和Struts的區別最主要的區別在於WebWork在建立一個Action時是新New一個物件而Struts是SingleMoule所有的都繼承它的一個Action,所以根據專案需要合適的選擇.)


3:View層
1) 標籤庫:JSP2.0/JSTL
由於Webwork或Spring的標籤確實很有限,一般view層用JSTL標籤,而且據說JSTL設計很好速度是所有標籤中最快的使用起來也很簡單

2) 富客戶端:DOJO Widgets, YUI(YahooUI),FCKEditor, Coolest日曆控制元件
Dojo主要提供Tree, Tab等富客戶端控制元件,可以用其進行輔助客戶端開發
YahooUI和DOJO一樣它有自己的一套javascript除錯控制檯,主要支援ajax開發也有很多Tree,Table,Menu等富客戶端控制元件
FCKEditor 最流行的文字編輯器
Coolest日曆控制元件 目前很多日曆控制元件可用,整合在專案中也比較簡單,這個只是其中的一個,介面不錯的說..

3) JavaScript:Prototype.js
Prototype.js作為javascript的成功的開源框架,封裝了很多好用的功能,通過它很容易編寫AJAX應用,現在AJAX技術逐漸成熟,框架資源比較豐富,比如YUI,DWR等等,也是因為JavaScript沒有合適的除錯工具,所以沒有必要從零開始編寫AJAX應用,個人認為多用一些成熟的Ajax框架實現無重新整理更新頁面是不錯的選擇.

4)表格控制元件:Display Tag ,Extreme Table
這兩個的功能差不多,都是View層表格的生成,介面也比較相向,可以匯出Excel,Pdf,對Spring支援很容易.
相比較而言比較推薦ExtremeTable,它的設計很好功能上比DisplayTag多一些,支援Ajax,封裝了一些攔截器,而且最方面的是在主頁wiki中有詳細的中文使用文件.

5):OSCache
OSCache是OpenSymphony組織提供的一個J2EE架構中Web應用層的快取技術實現元件,Cache是一種用於提高系統響應速度、改善系統執行效能的技術。尤其是在Web應用中,通過快取頁面的輸出結果,可以很顯著的改善系統的穩定性和執行效能。
它主要用在處理短時間或一定時間內一些資料或頁面不會發生變化,或將一些不變的統計報表,緩衝在記憶體,可以充分的減輕伺服器的壓力,防治負載平衡,快速重啟伺服器(通過硬碟快取).

6)SiteMesh
sitemesh應用Decorator模式主要用於提高頁面的可維護性和複用性,其原理是用Filter擷取request和response,把頁面元件head,content,banner結合為一個完整的檢視。通常我們都是用include標籤在每個jsp頁面中來不斷的包含各種header, stylesheet, scripts and footer,現在,在sitemesh的幫助下,我們刪掉他們輕鬆達到複合檢視模式.
Sitemesh也是 OpenSymphony的一個專案現在最近的版本是2.2,目前OpenSymphony自從04年就沒有更新的版本了..感覺它還是比較有創新的一種頁面組裝方式, OpenSymphony開源組織的程式碼一般寫的比較漂亮,可以改其原始碼對自己的專案進行適配.
測試發現Sitemesh還存在一些問題,比如中文問題,它的預設編碼是iso-8859-1在使用時候需要做一些改動.

7)CSS,XHTML
這個不用說了,遵循W3C標準的web頁面開發.

8)分頁標籤: pager-taglib元件
Pager-taglib 是一套分頁標籤庫,可以靈活地實現多種不同風格的分頁導航頁面,並且可以很好的與伺服器分頁邏輯分離.使用起來也比較簡單.

9)Form: Jodd Form taglib
Jodd Form taglib使用比較簡單,只要把form的頭尾以<jodd:form bean="mybean">包住
就會自動繫結mybean, 自動繫結mybean的所有同名屬性到普通html標記input, selectbox, checkbox,radiobox.....在這些input框裡不用再寫任何程式碼…
       
10)Ajax:DWR
       J2EE應用最常用的ajax框架
       
11)報表 圖表
Eclipse BIRT功能比較強大,也很龐大..好幾十M,一般沒有特別需求或別的圖表設計軟體可以解決的不用它
JasperReports+ iReport是一個基於Java的開源報表工具,它可以在Java環境下像其它IDE報表工具一樣來製作報表。JasperReports支援PDF、HTML、XLS、CSV和XML檔案輸出格式。JasperReports是當前Java開發者最常用的報表工具。
JFreeChart主要是用來製作各種各樣的圖表,這些圖表包括:餅圖、柱狀圖(普通柱狀圖以及堆疊柱狀圖)、線圖、區域圖、分佈圖、混合圖、甘特圖以及一些儀表盤等等。
      琴棋報表,國產的..重點推薦,適合中國的情況,開放原始碼,使用完全免費。純JAVA開發,適用多種系統平臺。特別適合B/S結構的系統。官方網站有其優點介紹,看來用它還是不錯的選擇,最重要的是支援國產呵呵

4:許可權控制: Acegi
Acegi是Spring Framework 下最成熟的安全系統,它提供了強大靈活的企業級安全服務,如完善的認證和授權機制,Http資源訪問控制,Method 呼叫訪問控制等等,支援CAS
(耶魯大學的單點登陸技術,這個單點登陸方案比較出名.我也進行過配置使用,可以根據專案需要,如果使用者分佈在不同的地方不同的系統通用一套登陸口令可以用它進行解決,一般序號產生器登陸機就是這樣解決的)
       Acegi只是於Spring結合最好的安全框架,功能比較強大,當然還有一些其他的安全框架,這裡列舉一些比較流行的是我從網上找到的,使用方法看其官方文件把…
JAAS, Seraph, jSai - Servlet Security, Gabriel, JOSSO, Kasai, jPAM, OpenSAML都是些安全控制的框架..真夠多的呵呵

5:全文檢索
       1) Lucene
       Lucene是一套全文索引介面,可以通過它將資料進行倒排檔案處理加入索引檔案,它的索引速度和查詢速度是相當快的,查詢百萬級資料毫秒級出結果,現在最火的Apache開源專案,版本更新速度很快現在已經到了2.0,每個版本更新的都比較大,目前用的最多的版本應該是1.4.3,但它有個不太方面的地方單個索引檔案有2G檔案限制,現在2.0版本沒有這個限制,我研究的比較多,它的擴充套件性比較好,可以很方面的擴充其分詞介面和查詢介面.
       基於它的開發的系統很多,比如最常用的Eclipse的搜尋功能,還有一些開源的軟體比如Compass,Nutch,Lius,還有我最近做的InSearch(企業級FTP檔案網頁搜尋)

</jodd:form>

 


6:公共Util類
       主要是Jakarta-Commons類庫,其中最常用得是以下幾個類庫
1) Jakarta-Commons-Language
       最常用得類是StringUtils類,提供了使用的字串處理的常用方法效率比較高
2) Jakarta-Commons-Beantuils
       主要用Beantuils能夠獲得反射函式封裝及對巢狀屬性,map,array型屬性的讀取。
3) Jakarta-Commons-Collections
       裡面有很多Utils方法

7 日誌管理
       Log4J
       任務是日誌記錄,分為Info,Warn,error幾個層次可以更好的除錯程式

8 開源的J2EE框架
       1) Appfuse
              Appfuse是Matt Raible 開發的一個指導性的入門級J2EE框架, 它對如何整合流行的Spring、Hibernate、iBatis、Struts、Xdcolet、JUnit等基礎框架給出了示範. 在持久層,AppFuse採用了Hibernate O/R對映工具;在容器方面,它採用了Spring,使用者可以自由選擇Struts、Spring/MVC,Webwork,JSF這幾個Web框架。
       
       2) SpringSide
       .SpringSide較完整的演示了企業應用的各個方面,是一個電子商務網站的應用 SpringSide也大量參考了Appfuse中的優秀經驗。最重要的是它是國內的一個開源專案,可以瞭解到國內現在的一些實際技術動態和方向很有指導意義…

9:模版 Template 
主要有Veloctiy和Freemarker
模板用Servlet提供的資料動態地生成 HTML。編譯器速度快,輸出接近靜態HTML             頁面的速度。

10:工作流
       我所知道比較出名的主要有JBpm Shark Osworkflow,由於對它沒有過多的研究所以還不是很清楚之間有什麼區別.

專案管理軟體
dotProject:是一個基於LAMP的開源專案管理軟體。最出名的專案管理軟體
JIRA: 專案計劃,任務安排,錯誤管理
Bugzilla:提交和管理bug,和eclipse整合,可以通過安裝MyEclipse配置一下即可使用
BugFree借鑑微軟公司軟體研發理念、免費開放原始碼、基於Web的精簡版Bug管理
CVS:這個就不介紹了都在用.
SVN: SubVersion已逐漸超越CVS,更適應於JavaEE的專案。Apache用了它很久後,Sourceforge剛剛推出SVN的支援。
測試用例:主要JUnit單元測試,編寫TestCase,Spring也對Junit做了很好的支援

後記:
       以Spring為主的應用開發可選用的元件中介軟體真是眼花繚亂,所以針對不同的專案需求可以利用不同的開源產品解決,比如用Spring+Hibernate/ iBATIS或Spring+WebWork+Hibernate/ iBATIS或Spring+Struts+Hibernate/ iBATIS,合理的框架設計和程式碼複用設計對專案開發效率和程式效能有很大的提高,也有利於後期的維護.


相關文章