什么是框架
在的J2EE開發中,經常會提到“框架”這個詞匯,例如Spring,Struts,Webx等等都稱之為J2EE開發框架。那么什么是框架呢?
框架的英文為Framework,帶有骨骼,支架的含義。
在軟件工程中,框架被定義為整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法;另一種定義認為,框架是可被應用開發者定制的應用骨架。
一個框架是一個可復用的設計構件,它規定了應用的體系結構,闡明了整個設計、協作構件之間的依賴關系、責任分配和控制流程,表現為一組抽象類以及其實例之間協作的方法,它為構件復用提供了上下文(Context)關系。
框架是實現了某應用領域通用功能的底層服務。使用這種框架的編程人員可以在一個通用功能已經實現的基礎上開始具體的系統開發。框架提供了所有應用期望的默認行為的類集合。具體的應用通過重寫子類或組裝對象來支持應用專用的行為。
通俗的說,框架是完成是某種應用的半成品,提供了一些常用的工具類和一些基礎通用化的組件,可以供開發人員在此基礎上,更便捷的完成各自特有的系統。
為什么要用框架
軟件系統發展到今天已經很復雜了,特別是服務器端軟件,涉及到的知識,內容,非常廣泛。這樣開發出完善健壯的軟件,對程序員的要求將會非常高。如果采用成熟,穩健的框架,那么一些基礎的通用工作,比如,事物處理,安全性,數據流控制等都可以交給框架處理,那么程序員只需要集中精力完成系統的業務邏輯設計,可以降低開發難度。
從程序員角度看,使用框架最顯著的好處是重用,由於框架能重用代碼,因此從一已有構件庫中建立應用變得非常容易,因為構件都采用框架統一定義的接口,從而使構件間的通信簡單。框架能重用設計。它提供可重用的抽象算法及高層設計,並能將大系統分解成更小的構件,而且能描述構件間的內部接口。這些標准接口使在已有的構件基礎上通過組裝建立各種各樣的系統成為可能。只要符合接口定義,新的構件就能插入框架中,構件設計者就能重用構架的設計。框架還能重用分析。所有的人員若按照框架的思想來分析事物,那么就能將它划分為同樣的構件,采用相似的解決方法,從而使采用同一框架的分析人員之間能進行溝通。
一種技術,最終都是為業務發展而服務的。從業務的角度來講。首先,框架的是為了企業的業務發展和戰略規划而服務的,他服從於企業的願景(vision);其次,框架最重要的目標是提高企業的競爭能力,包括降低成本、提高質量、改善客戶滿意程度,控制進度等方面。最后,框架實現這一目標的方式是進行有效的知識積累。軟件開發是一種知識活動,因此知識的聚集和積累是至關重要的。框架能夠采用一種結構化的方式對某個特定的業務領域進行描述,也就是將這個領域相關的技術以代碼、文檔、模型等方式固化下來。
合理的使用框架可以帶來的好處
重用代碼大大增加,軟件生產效率和質量也得到了提高;
代碼結構的規范化,降低程序員之間溝通以及日后維護的成本;
知識的積累,可以讓那些經驗豐富的人員去設計框架和領域構件,而不必限於低層編程;
軟件設計人員要專注於對領域的了解,使需求分析更充分;
允許采用快速原型技術; 有利於在一個項目內多人協同工作;
大粒度的重用使得平均開發費用降低,開發速度加快,開發人員減少,維護費用降低,而參數化框架使得適應性、靈活性增強。
框架分類
框架與類庫是不同的,框架強調的是軟件的設計重用性和系統的可擴充性,以縮短大型應用軟件系統的開發周期,提高開發質量。
與傳統的基於類庫的面向對象重用技術比較,應用框架更注重於面向專業領域的軟件重用。應用框架具有領域相關性,構件根據框架進行復合而生成可運行的系統。框架的粒度越大,其中包含的領域知識就更加完整。
J2EE有很多開源框架,一般每一種框架都會針對某一方面領域。
Struts是基於JavaEE應用的MVC設計模式的應用框架,減弱了業務邏輯接口和數據接口之間的耦合,以及讓視圖層更富於變化。
Hibernate是一個對象關系映射框架,目的是讓Java程序員可以使用對象編程思維來操縱數據庫。
Spring是一個綜合型框架,致力於J2EE應用的各層的解決方案,而不是僅僅專注於某一層的方案。可以說Spring可以作為應用開發的“一站式”選擇,並貫穿表現層、業務層及持久層。然而,Spring並不想取代那些已有的框架,它可以與其他框架無縫地整合。
考慮到面向的領域,以及實現編碼實現,我們可以將將框架至少分為三類。
第一類是基礎類庫,主要包含多數項目所需要的類庫。(開發人員將其作為一個類庫使用,可以簡化一些常用的算法邏輯。)
第二類是基礎框架,該框架應該整合或者實現J2EE開發所需要的常用功能。(此框架可以為各類WEB項目開發提供基礎支持。)
第三類是平台框架,針對於某種特定領域,實現特定領域所需要的常用功能。(這個框架需要實現具體領域的業務的邏輯。並且應該支持各類擴展)