天天看點

java架構總結

模式,即pattern。其實就是解決某一類問題的方法論。你把解決某類問題的方法總結歸納到理論高度,那就是模式。

Alexander給出的經典定義是:每個模式都描述了一個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需在重複相同的工作。

模式有不同的領域,建築領域有建築模式,軟體設計領域也有設計模式。當一個領域逐漸成熟的時候,自然會出現很多模式。

架構,即framework。其實就是某種應用的半成品,就是一組元件,供你選用完成你自己的系統。簡單說就是使用别人搭好的舞台,你來做表演。而且,架構一般是成熟的,不斷更新的軟體。

模式是一種指導,在一個良好的指導下,有助于你完成任務,有助于你作出一個優良的設計方案,達到事半功倍的效果。而且會得到解決問題的最佳辦法。架構一般是成熟,穩健的,他可以處理系統很多細節問題,比如,事物處理,安全性,資料流控制等問題。還有架構一般都經過很多人使用,是以結構很好,是以擴充性也很好,而且它是不斷更新的,你可以直接享受别人更新代碼帶來的好處。架構一般處在低層應用平台(如J2EE)和高層業務邏輯之間的中間層。

常見的JAVA架構有:

WAF:

全稱:WEB APPLICATION FRAMEWORK

主要應用方面:EJB層,(WEB層也有,但是比較弱)。

主要應用技術:EJB等

出處:http://java.sun.com/blueprints/code/index.html

簡述:這是SUN在展示J2EE平台時所用的例子PetStore(寵物商店系統)裡面的架構。是SUN藍皮書例子程式中提出的應用架構。它實作了 MVC和其他良好的設計模式。SUN的網站上有技術資料,最好下載下傳PetStore來研究,WEBLOGIC裡自帶此系統,源碼在bea\weblogic700\samples\server\src\petstore。這是學習了解J2EE的首選架構。

免費。

Struts:

主要應用方面:WEB層。

主要應用技術:JSP,TagLib,JavaBean,XML等

出處:http://jakarta.apache.org/struts/index.html

簡述:這是APACHE的開源項目,目前應用很廣泛。基于MVC模式,結構很好,基于JSP。Jbuilder8裡已經內建了STRUTS1.02的制作。

簡述WAF+STRUTS結合的例子:WEB層用STRUTS,EJB層用WAF:

JSP(TagLib)――>ActionForm――>Action  ――>

  Event――>EJBAction――>EJB    ――>DAO――>Database 

JSP(TagLib) (forward) <――Action  <――EventResponse<――                

Turbine:

主要應用技術:servlet等

出處:http://jakarta.apache.org/turbine/index.html

簡述:這是APACHE的開源項目。基于SERVLET。據說速度比較快,基于service(pluggable implementation可插拔的執行元件)的方式提供各種服務。

COCOON:

主要應用技術:XML,XSP,servlet等

出處:http://cocoon.apache.org/2.0/

簡述:這是APACHE的一個開源項目。基于XML,基于XSP(通俗地說,XSP是在XML靜态文檔中加入Java程式段後形成的動态XML文檔。)。特點是可以與多種資料源互動,包括檔案系統,資料庫,LDAP,XML資源庫,網絡資料源等。

ECHO:

出處:http://www.nextapp.com/products/echo/

簡述:nextapp公司的一個開源項目。基于SERVLET。頁面可以做的很漂亮,結合echopoint,可以作出很多圖形效果(裡面用了jfreechart包)。使用SWING的思想來作網頁,把HTML當作JAVA的類來做。但是大量使用Session,頁面分幀(Frame)很多,系統資源消耗很大。

JATO:

全稱:SUN ONE Application Framework

主要應用技術:JSP,TagLib,JavaBean等

出處:http://www.sun.com

簡述:這是SUN推出的一個商業性架構,一看名字就知道是結合SUN ONE的平台推出的。我下載下傳了JATO2.0看了一下,感覺有些簡單,使用了JSP+TagLib+JavaBean。如他的DOC所說JATO是适合用在小的WEB應用裡。

TCF:

全稱:Thin-Client Framework

主要應用方面:JAVA GUI。

主要應用技術:JAVA application等

出處:http://www.alphaworks.ibm.com/tech/tcf

簡述:這是IBM出的一個架構。基于MVC模式,基于JAVA Application。推薦一篇介紹文章:http://www-900.ibm.com/developerWorks/cn/java/j-tcf1/index.shtml

近兩個月一直在學習java各種架構技術,收獲還是蠻大的。不同的架構都有她突出的亮點,在這個階段,主要還是看了他們設計的理念、涉及的概念,是以主要是看,代碼敲的不多。

 主要看的架構:struts、webwork2、tapestry3、spring。

 資料庫對象關系映射架構:hibernate、caster、ibatis

 涉及到的概念:MVC、IOC、DI、AOP

 還有其他的一些著名架構的介紹

1、struts,原本是去年開始學java看的東西,但是工作原因,沒有更深入的學習,隻是做過幾個簡單的form的資料驗證和送出的程式。當初覺得他效率也是很一般。現在網上對他的評價不是很好“優點:學習曲線低,易上手,适合初學者,由于存在時間很長了,是以他是一個成熟的産品,而且學習知道多。缺點:jsp+taglib的頁面修改調試起來相當的麻煩,系統配置也比較繁瑣”。現在用struts的人是最多的,也是大多數的公司招聘程式員的基本要求。上個月又簡單的重新看了看他,但是沒有太深入。

2、webwork2,年初的時候看過一點。當時公司正在用一個“開源系統”做項目,那個系統用的是webwork, webwork和webwork2因為有很大的差别,就也沒有深入的學習,況且我修改的是系統的controler層部分的代碼,不涉及到webwork。上個月末的時候,有重新的學習了一下,做了幾個簡單的例子,把它官方的文檔都粗略的看了一遍。開發效率應該和struts差不多,但webwork2的配置要相對簡單些。webwork2最大的優勢可是在于它的良好的view層的設計,他支援jsp、taglib、velocity、freemark等。webwork2的學習曲線要不struts稍微高些,資料相對也少也。但是他和struts感覺有點像近親,隻要學會其中一個,那另一個學習起來就輕松多了。

3、tapestry3,這個東西花了我近一個月的時間搞,他與struts和webwork2是完全不相同的一個東西,學習曲線很高,學習資料很少。他提倡一個組鍵的概念,開發過程有點像winform。第一個星期看的“tapestry in action”的pdf文檔,e文的,看得很痛苦。第二個星期開始用它做東西,做公司的日行程管理系統,做了三個星期,基本功能都做完了,然後剩下的修改的工作就都交給其他同僚,就沒我事了。剛開始用它開發的時候,感覺挺别扭的,挺多地方不适應,覺得它的效率慢。用了一段時間,漸漸适應了後,發現他的用起來還是蠻友善的。由于它的資料實在太少了,是以要更深入的學習就隻能看他的源代碼了,這個是很郁悶的事情。tapestry4已經是測試階段了,tapestry4比tapestry3又有了很大的改進,整合了hivemind,感覺整合後,tapestry成了hivemind的一個附加包,這樣看來tapestry4将成為sping的近親,因為他們的設計目标是一樣的。

struts、webwork2、tapestry3工作的主要側重點在于form的處理上,将form資料傳到controler層後,controler層怎麼處理資料他們就不管了。spring和他們不同,spring通過ioc設計和di設計,controler層和model層的工作。

4、spring,他實作的功能比較全,但是使用和配置比較麻煩,是以在架構選型的時候,更多公司會選擇struts和webwork。spring最大的亮點是他的bean管理功能,可以對資料庫操作提供一個很棒的事務管理,這個功能是其它的架構所不具備的,是以他通常是和其他的架構組合使用,現在常被用到的組合

 struts + spring + 其他

 webwork + spring + 其他

 tapestry + spring + 其他

我上面說的公司的日行程管理就是用“tapestry + spring + hibernate”作的

5、hibernate,這個是個大哥大,不用說也多知道。

   caster,xml支援比較好,分頁功能比較差

   ibatis,簡單友善,可以在配置檔案中寫sql。

6、對于IOC設計和DI設計,可以看看spring和hivemind1.1的文檔,spring和hivemind1.1都很好的實作了bean的管理。但是hivemind1.1用的人很少,他的官方網站上的文檔組織的很亂,很難通過它的官方文檔來學習。

繼續閱讀