當前位置:首頁 » 編程語言 » java框架設計

java框架設計

發布時間: 2023-09-14 14:03:48

1. 現代java Web開發架構分析

在本文中 我將集中討論現代的Java開發框架 分析它們的特徵和各自的使用優點 另外 我還想比較目前流行的生產質量框架 例如Struts Spring和Hibernate 並詳細討論其基本相似性及有關基本概念

我將簡短分析被用於支持這些框架的企業開發環境或工具箱 例如Borland JBuilder Eclipse以及BEA Workbench 請記住 市場上有許多有關這些開發框架的圖書;然而 在任何一篇文章中 要對它們進行深入描述是不可能的 不過 我將盡力討論最廣泛地使用的概念

共同點

幾乎所有現代的網路開發框架都遵循了模型 視圖 控制(MVC)設計模式 商業邏輯和描述被分開 由一個邏輯流控制器來協調來自客戶端的請求和伺服器上將採取的行動 這條途徑成為了網路開發的事實上的標准 每個框架的內在的機制當然是不同的 但是開發者們使用來設計和實現他們的Web應用軟體的API是很類似的 差別還存在於每個框架提供的擴展方面 例如標簽庫 JavaServer Faces或JavaBean包裝器等

所有的框架使用不同的技術來協調在Web應用程序之內的導航 例如XML配製文件 java屬性文件或定製屬性 所有的框架在控制器模塊實現的方法方面也存在明顯的不同 例如 EJB可能實例化在每個請求中需要的類或使用Java反射動態地調用一個適當的行動(Action)類 另外 不同框架在各自引入的概念上也有所不同 例如 一個框架可能定義用戶請求和反應(以及錯誤)場所 而另外一個框架可能僅僅定義一個完整的流 從一個請求到多個響答和隨後的再請求……

各種Java框架在它們組織數據流的方法方面是很類似的 在請求發出後 在應用程序伺服器上產生一些行動;而作為響應 一些可能包含對象集的數據總是被發送到JSP層 然後 從那些對象 可能是有setter和getter方法的簡單類 javabeans 值對象 或者一些集合對象 中提取數據 現代的Java框架還想方設法簡化開發者的開發任務 如通過使用簡易的API 資料庫連接池 甚至資料庫調用包等提供自動化的追蹤方式來實現 一些框架或者能夠鉤進(hooked into)另外的J EE技術中 例如JMS(Java消息服務)或JMX 或把這些技術集成到一起 伺服器數據持續性和日誌也有可能成為框架的一部分

企業開發環境

一些框架在Web開發者社區和企業發展領域變得相當流行 隨著這些框架的日漸成熟並開始發行穩定的版本 商業的IDE(集成發展環境)開始為這些框架提供支持並把他們納入到自己的產品中 一些IDE甚至基於框架的概念開發出整個的產品 例如 BEA WebLogic Workshop就是基於Struts框架建立起來的

Borland Jbuilder為Struts提供了內建的支持 也支持JSF和JSTL

Eclipse平台已成為一個很流行的開發工具 部分因為它是基於插件的 部分因為它對於Web框架的支持 現在 出現了眾多的Eclipse插件 甚至完整的基於Eclipse的IDE 許多插件被設計適合於Struts框架開發 例如MyEclipse()或M

大多數IDE都具有圖形化的流程和可視化對象(類代理) 例如 下面是一個JBuilder的行動(Action)設計器 用於規劃Web應用程序的頁面順序

WebLogic Workshop引入Java頁面流程技術 它擴展了Struts框架而提供了一個簡化的開發模型並增加了另外一些特性 Workshop使用頁面流(Page Flows) 實現輕易地把用戶介面與導航和商業邏輯分離開來 頁面流由JSP頁組成 這些頁麵包含用戶介面元素和一個控制器文件(JPF) 它包含由用戶提供的數據將怎樣被處理的指令以及下一步什麼頁面將被返回到用戶的信息 頁面流動提供給開發者一個可視化的Web應用程序總體輪廓 它讓開發者能夠看到直觀地分析不同的JSP頁彼此相關聯 並實現Web應用程序整體結構的快速建立

MyEclipse提供類似的特徵 並帶有更多吸引人的代價標簽

Apache Struts框架

Struts框架是一開源產品 基於模型 視圖 控制器(MVC)設計範例來開發Web應用軟體 它使用並且擴展了Java Servlet API 最初由Craig McClanahan創建 在 年 月 它被捐贈到Apache Foundation Struts框架展示了一個強有力的定製標簽庫 平鋪顯示 表單檢驗和I N(國際化) 另外 Struts支持許多描述層 包括JSP XML/XSLT JavaServerFaces(JSF)和Velocity;還支持一些模型層 包括JavaBeans和EJB

Spring框架

Spring框架是一個分層的Java/J EE應用程序框架 基於Expert One on One J EE設計和發行的代碼 Spring框架提供一種簡單的開發技術 用於自動化處理工程中大量的屬性文件和助理類

Spring框架包括的主要特色有:

強有力的基於JavaBeans的配置管理 使用Inversion of Control(IoC)原則 一個核心bean工廠 可用在任何環境 從applets到J EE容器程序 通用的抽象層適合於資料庫事務管理 允許可插入的事務管理器 並且不需要處理低層次的問題就可容易地劃分各事務的界限 一個很有意義的異常處理的JDBC抽象層 與Hibernate集成到一起 DAO實現支持以及事務策略

Hibernate框架

Hibernate是一適合於Java語言的對象 關系映射(ORM)解決方案 它也是開源軟體 類似Struts 並且在LGPL保護下發布 Hibernate被一群來自世界各地的Java軟體開發者所共同開發 它提供一個易用的框架來實現把一個面向對象的域模型映射到一傳統的關系資料庫 它不僅負責從Java類到資料庫表格(以及來自Java數據類型的SQL數據類型)的映射 而且還提供數據查詢和檢索能力 並能大大減少花在SQL和JDBC手工數據處理上的開發時間

Hibernate的目標是減輕開發者的與大量普通的數據持續性相聯系的編程任務 Hibernate還能夠適應開發進程 無論它是剛開始設計還是來自一現成的資料庫 Hibernate可以自動生成SQL 使開發者擺脫了手工處理結果集和進行對象轉化的繁瑣任務 並能使應用程序移植到所有的SQL資料庫 它還能提供透明的持續性 對持續性類的唯一的要求的是實現一個無參數的構造器

這個框架典型地使用在JavaSwing應用軟體 基於Servlet的Java應用軟體和使用EJBsession beans的J EE應用軟體中

結論

lishixin/Article/program/Java/hx/201311/26488

2. 常用的Java Web框架簡介

Web框架是人們在使用某種語言編寫Web應用服務端時關於架構的最佳實踐

有些Web框架是從實際的Web項目抽取出來的 也就是說 做一個具體的應用項目時 採取的架構比較理想 就把這部分和領域無關 而僅和Web的請求和響應處理有關的設計拿出來 形成一個基礎 在開發別的應用項目的時候則可以從這基礎做起 讓開發者更關注領域問題 而不是Web的請求和響應的控制

也有些Web框架是直接設計出來的 很多Web框架在設計的時候也都借鑒了別的框架 吸取優點 修改不足 並根據自己的框架的定位 在特定方面有自己的發揮 形成了自己的特點 比如有的web框架追求的是松耦合性 層次 結構之間都不密切綁定 有的Web框架則追求敏捷性 強調約定而不是配置

Java 的 Web框架雖然各不相同 但基本也都是遵循特定的路數的 使用Servlet或者Filter攔截請求 使用MVC的思想設計架構 使用約定 XML或 Annotation實現配置 運用Java面向對象的特點 面向抽象實現請求和響應的流程 支持Jsp Freemarker Velocity等視圖

JSF

優點

Java EE標准 這意味著有很大的市場需求和更多的工作機會

上手快速並且相對容易

有大量可用的組件庫

缺點

大量的JSP標簽

對REST和安全支持不好

沒有一個統一的實現 既有SUN的實現 又有Apache的實現——MyFaces

國內的OperaMasks還支持AJAX 以及有開發工具 支持

Spring MVC

優點

對覆蓋綁定(overriding binding) 驗證(validation)等提供生命周期管理

與許多表示層技術/框架無縫集成 JSP/JSTL Tiles Velocity FreeMarker Excel XSL PDF 等

便於測試——歸功於IoC

缺點

大量的XML配置文件

太過靈活——沒有公共的父控制器

沒有內置的Ajax支持

Stripes

優點

不需要書寫XML配置文件

良好的學習文檔

社區成員很熱心

缺點

社區比較小

不如其他的項目活躍

ActionBean裡面的URL是硬編碼的

Struts

優點

架構簡單——易於擴展

標記庫很容易利用FreeMarker或者Velocity來定製

基於控制器或者基於頁面的導航

缺點

文檔組織得很差

對新特徵過分關注

通過Google搜索到的大多是Struts x的文檔

Tapestry

優點

一旦學會它 將極大地提高生產率

HTML模板——對頁面設計師非常有利

每出一個新版本 都會有大量的創新

缺點

文檔過於概念性 不夠實用

學習曲線陡峭

發行周期長——每年都有較大的升級

Wicket

優點

對Java開發者有利(不是Web開發者)

頁面和顯示綁定緊密

社區活躍——有來自創建者的支持

缺點

HTML模板和Java代碼緊挨著

需要對OO有較好的理解

Wicket邏輯——什麼都用Java搞定

在Java的Web框架中 我使用過Struts Struts 試用過Stripes Wicket 了解過JSF SpringMVC 以我使用的經驗 我覺得看一個Java Web框架應看看下面幾個方面

設計理念

一個框架設計出來應該有一個基本的思路 它為什麼要要被設計出來?有的框架的目標 就是提高效率 有的框架的目標的給用戶充分的選擇 有的框架的目標是充分了解實際需求 給用戶一個盡量合理的默認選擇 有的框架是要給使用者開發桌面程序的感覺 應該說 一個好的框架應該是實現了預期目標 體現出了自己的設計理念的

設計的合理性

設計的合理性表現在框架在一些關鍵問題上的處理 比如靈活性和敏捷性之間的權衡 硬編碼和文本配置之間的權衡 靈活性指的是可以適應用戶多樣的需求 很特殊的要求也能得到支持 有的框架的實現基於太多的約定 使得用戶只能遵循 而敏捷性指的是用戶在解決絕大多數常規問題的時候 能盡量少做工作 提高效率 框架設計者只能在這兩者見達到一個平衡點 權衡的怎麼樣 就很見水平了 硬編碼和文本配置之間的權衡也很有意思 文本配置的意義在於Java是一個編譯語言 強調代碼的封閉 講究擴展而不是修改 這種情況下文本配置信息可以很方便的在不修改程序的情況下改變程序行為 但是隨著一些靈活的腳本語言實現的 Web框架的出現 人們發現在這樣的框架中 腳本語言即做程序編碼語言 也做配置語言 還做視圖上的標記語言 這使我們對Java實現的框架有了一番新的審視 既然配置文件並沒有消除對程序的修改 為什麼不能在應編碼上下下功夫呢?

設計的平衡性

設計的平衡性指的是 框架在設計流程中各階段 各層次的實現方式時 所達到的上述權衡(靈活性和敏捷性之間的權衡等)應該是具有一致的水平 一個在控制上過分靈活 而視圖上具有非常大限制的框架是不能算做一個好的框架的

框架真的解放了開發者嗎

框架的目的是讓開發者把更多的精力放在領域問題 而非Web的請求和響應的處理問題上 而事實上框架都做到這一點了嗎?不可否認 框架的使用提高代碼的可維護性 但是框架在解放開發者這點上就未必了 有時還給開發者帶來了額外的負擔 事實上 直接使用Servlet 只要維持好代碼風格 一樣可以很有效率 當然 直接使用Servlet的靈活性就不用說了

在我接觸的Web框架中 我最推崇的是Struts 設計優雅 偏重靈活 也基本不造成額外的負擔 當然這些評價是和我參與的項目的規模有關的 其他規模的項目Struts 就未必合適了 我希望Struts 能在下面幾個方面有些改善

在提供文本配置方式的基礎上給一個約定配置的方式 讓開發者在大多數情況下可以不配置

配置也支持硬編碼 因為有時候維護可修改的硬編碼是很有效率的

lishixin/Article/program/Java/hx/201311/26313

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:432
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:743
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:536
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:146
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:232
java駝峰 發布:2025-02-02 09:13:26 瀏覽:651
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:532
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726