Web框架是人們在使用某種語言編寫Web應用服務端時關于架構的*實踐
有些Web框架是從實際的Web項目抽取出來的 也就是說 做一個具體的應用項目時 采取的架構比較理想 就把這部分和領域無關 而僅和Web的請求和響應處理有關的設計拿出來 形成一個基礎 在開發(fā)別的應用項目的時候則可以從這基礎做起 讓開發(fā)者更關注領域問題 而不是Web的請求和響應的控制
也有些Web框架是直接設計出來的 很多Web框架在設計的時候也都借鑒了別的框架 吸取優(yōu)點 修改不足 并根據自己的框架的定位 在特定方面有自己的發(fā)揮 形成了自己的特點 比如有的web框架追求的是松耦合性 層次 結構之間都不密切綁定 有的Web框架則追求敏捷性 強調約定而不是配置
Java 的 Web框架雖然各不相同 但基本也都是遵循特定的路數的 使用Servlet或者Filter攔截請求 使用MVC的思想設計架構 使用約定 XML或 實現(xiàn)配置 運用Java面向對象的特點 面向抽象實現(xiàn)請求和響應的流程 支持Jsp Velocity等視圖
JSF
優(yōu)點
Java EE標準 這意味著有很大的市場需求和更多的工作機會
上手快速并且相對容易
有大量可用的組件庫
缺點
大量的JSP標簽
對REST和安全支持不好
沒有一個統(tǒng)一的實現(xiàn) 既有SUN的實現(xiàn) 又有Apache的實現(xiàn)——MyFaces
國內的還支持AJAX 以及有開發(fā)工具 支持
Spring MVC
優(yōu)點
對覆蓋綁定( binding) 驗證()等提供生命周期管理
與許多表示層技術/框架無縫集成 JSP/JSTL Tiles Velocity Excel XSL PDF 等
便于測試——歸功于IoC
缺點
大量的XML配置文件
太過靈活——沒有公共的父控制器
沒有內置的Ajax支持
Stripes
優(yōu)點
不需要書寫XML配置文件
良好的學習文檔
社區(qū)成員很熱心
缺點
社區(qū)比較小
不如其他的項目活躍
里面的URL是硬編碼的
Struts
優(yōu)點
架構簡單——易于擴展
標記庫很容易利用或者Velocity來定制
基于控制器或者基于頁面的導航
缺點
文檔組織得很差
對新特征過分關注
通過Google搜索到的大多是Struts x的文檔
Tapestry
優(yōu)點
一旦學會它 將極大地提高生產率
HTML模板——對頁面設計師非常有利
每出一個新版本 都會有大量的創(chuàng)新
缺點
文檔過于概念性 不夠實用
學習曲線陡峭
發(fā)行周期長——每年都有較大的升級
Wicket
優(yōu)點
對Java開發(fā)者有利(不是Web開發(fā)者)
頁面和顯示綁定緊密
社區(qū)活躍——有來自創(chuàng)建者的支持
缺點
HTML模板和Java代碼緊挨著
需要對OO有較好的理解
Wicket邏輯——什么都用Java搞定
在Java的Web框架中 我使用過Struts Struts 試用過Stripes Wicket 了解過JSF SpringMVC 以我使用的經驗 我覺得看一個Java Web框架應看看下面幾個方面
設計理念
一個框架設計出來應該有一個基本的思路 它為什么要要被設計出來?有的框架的目標 就是提高效率 有的框架的目標的給用戶充分的選擇 有的框架的目標是充分了解實際需求 給用戶一個盡量合理的默認選擇 有的框架是要給使用者開發(fā)桌面程序的感覺 應該說 一個好的框架應該是實現(xiàn)了預期目標 體現(xiàn)出了自己的設計理念的
設計的合理性
設計的合理性表現(xiàn)在框架在一些關鍵問題上的處理 比如靈活性和敏捷性之間的權衡 硬編碼和文本配置之間的權衡 靈活性指的是可以適應用戶多樣的需求 很特殊的要求也能得到支持 有的框架的實現(xiàn)基于太多的約定 使得用戶只能遵循 而敏捷性指的是用戶在解決絕大多數常規(guī)問題的時候 能盡量少做工作 提高效率 框架設計者只能在這兩者見達到一個平衡點 權衡的怎么樣 就很見水平了 硬編碼和文本配置之間的權衡也很有意思 文本配置的意義在于Java是一個編譯語言 強調代碼的封閉 講究擴展而不是修改 這種情況下文本配置信息可以很方便的在不修改程序的情況下改變程序行為 但是隨著一些靈活的腳本語言實現(xiàn)的 Web框架的出現(xiàn) 人們發(fā)現(xiàn)在這樣的框架中 腳本語言即做程序編碼語言 也做配置語言 還做視圖上的標記語言 這使我們對Java實現(xiàn)的框架有了一番新的審視 既然配置文件并沒有消除對程序的修改 為什么不能在應編碼上下下功夫呢?
設計的平衡性
設計的平衡性指的是 框架在設計流程中各階段 各層次的實現(xiàn)方式時 所達到的上述權衡(靈活性和敏捷性之間的權衡等)應該是具有一致的水平 一個在控制上過分靈活 而視圖上具有非常大限制的框架是不能算做一個好的框架的
框架真的解放了開發(fā)者嗎
框架的目的是讓開發(fā)者把更多的精力放在領域問題 而非Web的請求和響應的處理問題上 而事實上框架都做到這一點了嗎?不可否認 框架的使用提高代碼的可維護性 但是框架在解放開發(fā)者這點上就未必了 有時還給開發(fā)者帶來了額外的負擔 事實上 直接使用Servlet 只要維持好代碼風格 一樣可以很有效率 當然 直接使用Servlet的靈活性就不用說了
在我接觸的Web框架中 我最推崇的是Struts 設計優(yōu)雅 偏重靈活 也基本不造成額外的負擔 當然這些評價是和我參與的項目的規(guī)模有關的 其他規(guī)模的項目Struts 就未必合適了 我希望Struts 能在下面幾個方面有些改善
在提供文本配置方式的基礎上給一個約定配置的方式 讓開發(fā)者在大多數情況下可以不配置
配置也支持硬編碼 因為有時候維護可修改的硬編碼是很有效率的
/Article/program/Java/hx/201311/26313
Java是當下最火編程語言之一。Java軟件開發(fā)工程師即當下做熱門的職業(yè),而Java軟件開發(fā)*的框架你了解多少呢?每個框架都有各自的優(yōu)劣勢,IT培訓介紹根據項目看哪個框架適合你。
SpringMVC:出現(xiàn)時間久遠,具有較好的開發(fā)系統(tǒng),幫助你查詢需要的。*和最*的Java框架之一。
Struts2:對于Java軟件開發(fā)工程師是個很好的選擇。它使得測試寫代碼所需的工作量減輕了。不過它也是不夠靈活的。
Hibernate:可對java軟件開發(fā)對象執(zhí)行數據庫操作??蓮浐蠈ο蠛完P系詞之間的差距。獨立于DB的。
JSF:,易使用,無外部依賴,提供很多功能。
Vaadin:是Java軟件開發(fā)工程師創(chuàng)建業(yè)務應用程序時使用的框架。
GWT:是免費的,可優(yōu)化復雜的程序,可獲得單個代碼庫,簡化開發(fā)和調試過程。
Grails:功能強大,設置新項目和支架很快。
各種流行框架都有著自己的優(yōu)缺點,只要你記得選個適合項目的,方便安裝,網絡的活躍程度適合的等等就可以。
只要一個電話
我們免費為您回電