軟件測試開發技術Java企業應用系統框架的比較與選擇[2] Java開發
關鍵字:uml
對應于三個層次的框架比較
1、表現層框架比較
MVC設計模式不再是某一種表現層框架的特點而是這幾種框架的共性。Struts框架由于出現時間早,所以使用相對廣泛,它的社區非?;钴S,很容易找到很多現成的開源功能標簽以供使用以及樣例程序可供參考。但是它的組件在頁面中顯示的粗粒度,以及框架類的限制在很多情況下會表現得過于死板,給表示層的開發會帶來一些額外的代碼開銷。JSF在很大程度上類似Struts,只是JSF的組件概念沒有象Struts那樣必須繼承ActionForm的限制,JSF在事件粒度上要比Struts細膩。JSF有的另外一個優勢就是其身后有Sun公司和其他的一些大公司的支持。Tapestry是一個完全組件的框架,Tapestry的組件可以被套嵌并包裹其它組件,因此可以組合形成一個更大的組件或邏輯頁面。組件的行為模式為Web頁面編程提供了很大的方便,事件處理也方便很多。所以,如果做一個對頁面要求靈活度相當高的系統就可以考慮選用Tapestry。
表1 三種框架的表現層功能技術細節比較2、業務組件層框架比較
EJB 2.1框架有些過于復雜了,有如下缺點:
?、?EJB模型需要建立許多組件接口和實現許多不必要的回滾方法;
?、?EJB的部署描述復雜而容易出錯;
?、?開發人員不能脫離EJB容器測試。對于以上缺點JCP (Java Community Process)制訂的EJB3.0標準框架做了相應的改進,該框架為所有主要的J2EE廠商支持。EJB3.0和Spring兩個框架結構都有一個共同核心設計理念:將中間件服務傳遞給耦合松散的POJOs。
EJB3.0框架與應用服務器高度整合,服務整合代碼也包裝在一個標準接口后面。EJB框架一方面有成熟的EJB容器支持,基于EJB框架的企業應用性能優良;另一方面EJB容器設計因為考慮了多方面的功能,所以在其內核上總是會顯得臃腫,這也是一種重量表現。不需要的東西存在肯定會影響效率,EJB不能根據項目需求對EJB整體包括EJB容器進行可配置式的切割。
Spring框架處于應用服務器和服務庫的上方,服務整合的代碼屬于框架,并暴露于應用開發者。它與應用服務器整合的能力相對EJB3.0要弱。但是Spring框架模塊的可分離配置體現了它優于EJB3.0的靈活性。
表2 EJB和Spring框架的具體細節比較3、持久層框架比較
容器管理持久性(CMP)是對EJB中Entity Bean進行持久性管理的方式。EJB2.1 持久性模型過于復雜并且存在基礎缺陷[3]。EJB3.0持久層針對EJB2.1的缺陷做了相應改進,采用與Hibernate類似的機制。
Hibernate相對而言其基本優勢如下:
?、貶ibernate 使用 Java 反射機制而不是字節碼增強程序來實現透明性;
?、贖ibernate的使用簡單;
?、塾成涞撵`活性很出色,它支持各種關系數據庫,從一對一到多對多的各種復雜關系。Hibernate 也有一些缺點,它限制所使用的對象模型 (例如,一個持久性類不能映射到多個表)。
使用iBATIS提供的O/R Mapping機制,對業務邏輯實現人員而言,面對的是純粹的Java對象,這一層與通過Hibernate 實現O/R Mapping 而言基本一致,而對于具體的數據操作,Hibernate 會自動生成SQL 語句,而iBATIS則要求開發者編寫具體的SQL 語句。相對Hibernate等 “全自動”O/R Mapping機制而言,iBATIS以SQL開發的工作量和數據庫移植性上的讓步,為系統設計提供了更大的自由空間。作為“全自動”ORM 實現的一種有益補充,iBATIS的出現顯得別具意義。
原文轉自:http://www.anti-gravitydesign.com