亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

J2EE開發(fā)原則

時(shí)間:2020-10-12 14:13:14 J2EE培訓(xùn) 我要投稿

J2EE開發(fā)原則

  J2EE,作為開發(fā)mission-critical的企業(yè)級(jí)應(yīng)用的一整套規(guī)范的整合平臺(tái),規(guī)范多、內(nèi)容廣,從而給開發(fā)J2EE應(yīng)用帶來了很多“麻煩”。比如,為實(shí)現(xiàn)內(nèi)容的RDBMS,我們可能的方法有JDBC、Entity Beans、JDO、O/R Mapping工具(TopLink、Hibernate)、XML-DBMS、JAXB等方法(其中一些方法不是J2EE規(guī)范所包含的)。

  因此,為實(shí)現(xiàn)J2EE各層(至少有表示層、控制層、商業(yè)邏輯層等3層)以及層與層之間的耦合,J2EE系統(tǒng)架構(gòu)師需要考慮的問題會(huì)很多。加上,J2EE本身的快速發(fā)展,給架構(gòu)、開發(fā)具有工業(yè)強(qiáng)度的J2EE應(yīng)用帶來一些難題。

  1.結(jié)合商業(yè)需求選擇合理的架構(gòu)

  如果脫離商業(yè)需求,而單獨(dú)的討論技術(shù)本身的優(yōu)勢(shì)是不夠的。各項(xiàng)技術(shù)都有產(chǎn)生的特定背景,其中很多都是來自工業(yè)需求而觸動(dòng)的。一般而言,企業(yè)信息系統(tǒng)(EIS)都要求自己穩(wěn)定、、可靠、高效、便于維護(hù)。同時(shí),各個(gè)企業(yè)信息系統(tǒng)都有自己獨(dú)特的要求,可能有些時(shí)候需要考慮與原有遺留系統(tǒng)的集成,所以了解各個(gè)企業(yè)信息系統(tǒng)具體的商業(yè)需求對(duì)于整個(gè)系統(tǒng)的架構(gòu)顯得很關(guān)鍵。

  比如,如果待開發(fā)的J2EE應(yīng)用系統(tǒng)中使用到的數(shù)據(jù)大部分來自于外在數(shù)據(jù)源;而這些數(shù)據(jù)可能是通過JDBC直接從外在數(shù)據(jù)源導(dǎo)入到待開發(fā)的J2EE系統(tǒng)的Database中。對(duì)于這種情形,如果在開發(fā)過程中,僅僅使用JDBC來操作數(shù)據(jù)庫(kù),對(duì)于小強(qiáng)度(并發(fā)訪問用戶少、數(shù)據(jù)流量少)的情形,顯然是比較合適的;但如果,并發(fā)訪問用戶較多、數(shù)據(jù)流量大,對(duì)Database層使用較為頻繁的情形,則顯得有些力不從心。

  因此,對(duì)于這種需求,我們可以考慮采用Entity Beans with Caches。打個(gè)比方,在JBoss 3.2.1中對(duì)于Entity Beans的Cache策略有多種,這時(shí)可以考慮使用,即“Standard CMP 2.x EntityBean”,方式并采用“D”類型的commit-option來保證Entity Beans的內(nèi)容與數(shù)據(jù)源的同步,并使得系統(tǒng)的性能得到大大改善(同直接使用JDBC相比)。其中,可以將一些Entity Beans設(shè)置為read-only,以改善性能。當(dāng)然,在這里也可以采用其他一些O/R Mapping技術(shù),比如TopLink。

  再比如,考慮這樣一種情形:如果待開發(fā)的企業(yè)信息系統(tǒng)使用到的數(shù)據(jù)都是由系統(tǒng)本身生成和操作的,則建議采用:CMP Entity Beans技術(shù)。Entity Beans給大家的印象很壞,這可能與EJB 1.1給大家留下的壞映象有關(guān)吧。但是,EJB 2.0(或者說2.1)得到了很大的改善,Local Interfaces、CMR、Read-Only、Session Fa?ade模式給Entity Beans注入了活力。當(dāng)然,并發(fā)用戶多、數(shù)據(jù)流量很大時(shí)才會(huì)體現(xiàn)出使用Entity Beans的優(yōu)勢(shì)。其中,有一點(diǎn)很關(guān)鍵:要注重Entity Beans技術(shù)的性能調(diào)優(yōu),各個(gè)應(yīng)用都有自己的一套性能調(diào)優(yōu)方案。

  對(duì)于JBoss 3.2.1,配置文件standardjboss.xml提供了Entity Beans技術(shù)調(diào)優(yōu)的入口。比如,Bean Lock策略的合理使用對(duì)于Entity Beans的調(diào)優(yōu)就顯得很重要。這樣使得,我們可以更加關(guān)注于系統(tǒng)的商業(yè)邏輯,而不只是底層的Database(EJB調(diào)優(yōu)處于EJB Container中,因此我們處在J2EE性能的高端,而不是底端,即Database層。同時(shí),Database層的調(diào)優(yōu)使得J2EE系統(tǒng)的數(shù)據(jù)庫(kù)移植性大打折扣。)。

  簡(jiǎn)而言之,要結(jié)合各個(gè)系統(tǒng)的特定需求和狀況給出具體的技術(shù)架構(gòu)方案,而不能孤單的論述技術(shù)本身的好壞。

  2.Framework的合理選用

  設(shè)計(jì)模式在J2EE應(yīng)用系統(tǒng)中扮演著重要的角色。因此,有一個(gè)問題擺在大家面前,是自己來實(shí)現(xiàn)具體的設(shè)計(jì)模式,還是借助于Third-party Framework。如果貴公司不大,或者說公司不想在J2EE基礎(chǔ)應(yīng)用Framework投入很多精力,選用現(xiàn)有的較為成熟的、穩(wěn)定、與現(xiàn)有J2EE Specification兼容的技術(shù)框架會(huì)比較明智。

  一般而言,F(xiàn)ramework本身,或者說J2EE平臺(tái)本身都是實(shí)現(xiàn)并優(yōu)化了具體的設(shè)計(jì)模式、規(guī)則,比如業(yè)務(wù)代理、Service Locator(包括Web Tier和EJB Tier各自的服務(wù)定位器,起到統(tǒng)一管理有限資源、Cache相關(guān)資源的作用,便于系統(tǒng)移植)、Front Controller、DAO等等,F(xiàn)有的J2EE Framework比較豐富。比如:

  Struts: 對(duì)于實(shí)現(xiàn)了Model 2類型的Framework,對(duì)于現(xiàn)在以及將來(隨著JSF規(guī)范、技術(shù)的成熟),選用她是一種明智之舉。目前,Struts已經(jīng)發(fā)展到1.1版本。其內(nèi)在的MVC主線、對(duì)后端數(shù)據(jù)操作方式?jīng)]有限定、集合了Apache Jakarta項(xiàng)目組的優(yōu)秀相關(guān)項(xiàng)目的精華,可謂是開發(fā)J2EE應(yīng)用的佳品。同時(shí),對(duì)于具有.NET Web Forms功能的下一代J2EE平臺(tái)技術(shù)JSF而言,Struts本身可考慮到與JSF的兼容和集成性。比如,通過JSP呈現(xiàn)表示層、Servlet呈現(xiàn)控制層、EJB呈現(xiàn)數(shù)據(jù)層。各層之間,可以通過值對(duì)象、HTTP相關(guān)對(duì)象來通訊,實(shí)現(xiàn)J2EE相關(guān)技術(shù)的完美應(yīng)用。

  Log4j: 我想對(duì)于習(xí)慣采用“System.out.println(“”);”的讀者而言,Log4j是大家的福音。盡管 2 Standard Edition也具備java.util.logging包來保證日志的'輸出,但Log4j的簡(jiǎn)單、高效、靈活已經(jīng)成了很多項(xiàng)目的選擇。日志,在某種程度上可以考驗(yàn)系統(tǒng)的穩(wěn)定性、正確性,所以采用可配置的Log4j(目前,Log4j已經(jīng)考慮到了與java.util.logging包的兼容性)是不會(huì)錯(cuò)的。比如,JBoss 3.2.1本身就是借助于Log4j來管理日志的。

  realMethods: 可能有些讀者還不知道這一款殺手锏。那好,這里就簡(jiǎn)要作一介紹。realMethods是一開發(fā)J2EE應(yīng)用的Framework,她不同于Struts(主要在于實(shí)現(xiàn)Model 2,J2EE應(yīng)用前端);realMethods對(duì)于J2EE應(yīng)用的各個(gè)層面都有詳盡、高效的支持。同時(shí),realMethods以前還是商用軟件,現(xiàn)在已經(jīng)成為了Open Source的產(chǎn)品,因此現(xiàn)在可以參看其全部源代碼。

  BC4J: 公司推出的用于的商業(yè)組件。其內(nèi)容和外在的特點(diǎn)和優(yōu)勢(shì),不言而喻。

  當(dāng)然,類似的Framework很多很多。作為開發(fā)J2EE應(yīng)用的團(tuán)隊(duì)而言,我們需要對(duì)各種Framework加以篩選,選擇適合項(xiàng)目需求、團(tuán)隊(duì)、公司發(fā)展方向的框架。

  一般情況下,待開發(fā)的目標(biāo)產(chǎn)品不宜采用過多的Framework。

  其一,J2EE各個(gè)技術(shù)發(fā)展很快,過多的Framework使得系統(tǒng)的后續(xù)升級(jí)、維護(hù)不利;

  其二,可以借鑒其中的好的一面,比如研究realMethods實(shí)現(xiàn)的相應(yīng)的設(shè)計(jì)模式,并改造她以適合我們的項(xiàng)目需求;

  其三,F(xiàn)ramework本身會(huì)有變動(dòng),如果選用過多,會(huì)給開發(fā)團(tuán)隊(duì)加重負(fù)擔(dān),從而不利于項(xiàng)目管理。有選擇的使用現(xiàn)有的成熟Framework能提升大家的開發(fā)效率、開發(fā)水平。

  3,開發(fā)模式的選擇

  開發(fā)J2EE應(yīng)用要求目標(biāo)開發(fā)人員能夠掌握其中的各種技術(shù)。但是,現(xiàn)實(shí)情況不是這樣。作為一個(gè)團(tuán)隊(duì),每個(gè)人都有自己不同的技能優(yōu)勢(shì)、興趣以及悟性。同時(shí),J2EE本身需要體現(xiàn)社會(huì)分工。一般情況下,我們的開發(fā)團(tuán)隊(duì)不會(huì)有Specification所要求的各個(gè)開發(fā)角色,F(xiàn)實(shí)往往只有3種(也可能是兩種):美工、JSP程序員、EJB程序員。面對(duì)這種分工,團(tuán)隊(duì)更要注重溝通、交流,注重代碼的一致性。

  一般情況下,團(tuán)隊(duì)要盡量采用版本控制工具管理代碼、盡量做到每天都有一個(gè)完整的運(yùn)行版本。經(jīng)過一段時(shí)間,團(tuán)隊(duì)都會(huì)適應(yīng)這種開發(fā)模式。其中,版本控制工具一定要使用,便于代碼的管理、控制和備份。這其中會(huì)牽扯到很多層面。比如,開發(fā)工具的選擇要考慮到版本控制工具的使用、建模工具的合理使用有助于團(tuán)隊(duì)有效的溝通和交流。

  基于現(xiàn)有的開發(fā)模式,個(gè)人認(rèn)為這樣3套方案不錯(cuò)。第一,采用Together作為建模工具、采用JBuilder作為IDE工具、采用VSS(或者CVS)作為版本控制工具、采用JBoss作為開發(fā)J2EE應(yīng)用開發(fā)階段的。第二,采用WebSphere Studio整套工具。第三,采用Eclipse(或者JCreator)、Ant、XDoclets作為開發(fā)工具。

  當(dāng)然,手工完成J2EE應(yīng)用的編寫、編譯、打包、部署、更能使開發(fā)者理解各個(gè)開發(fā)階段的具體細(xì)節(jié)。但本人認(rèn)為,只要開發(fā)者有這種關(guān)注具體細(xì)節(jié)的態(tài)度,選用功能強(qiáng)大的建模、開發(fā)工具是明智的。開發(fā)工具不能提高開發(fā)人員的開發(fā)技能,但是她能夠引導(dǎo)開發(fā)人員正確的開發(fā)方向。比如,JBuidler 9 Enterprise提供的EJB精靈具有的“Struts + EJB + Session Fa?ade + Value Object”等功能呈現(xiàn)了業(yè)界廣泛應(yīng)用的J2EE構(gòu)架方式。

  4,注重各個(gè)階段的工作

  測(cè)試工作往往是很多項(xiàng)目經(jīng)理忽視,不愿意去花費(fèi)時(shí)間、費(fèi)用的內(nèi)容,因?yàn)槟菢訒?huì)增加項(xiàng)目的成本。但是,他們忽視了,項(xiàng)目的完成質(zhì)量往往對(duì)項(xiàng)目的成本有很大的關(guān)系。比如,如果軟件質(zhì)量很差,并沒有經(jīng)歷測(cè)試階段,其后期部署、運(yùn)行所帶來的費(fèi)用會(huì)遠(yuǎn)遠(yuǎn)超過前期的費(fèi)用。

  測(cè)試是分階段的。單元測(cè)試,比如借助于JUnit,來保證功能正確等內(nèi)容。集成測(cè)試,來保證系統(tǒng)沒有內(nèi)存泄漏等內(nèi)容。其中,Optimizeite Suite Enterprise對(duì)于完成Profiler、Code Coverage、Thread Debugger等內(nèi)容很有幫助。我記得,我寫的一個(gè)Swing桌面應(yīng)用存在內(nèi)容泄漏,但是想了很多辦法都沒有解決問題。后來,采用Profiler獲得了答案。因此,現(xiàn)在開發(fā)應(yīng)用,我們很多時(shí)候都采用Optimizeite Suite Enterprise作為測(cè)試工具。尤其是,在做集成測(cè)試過程中,檢查系統(tǒng)的內(nèi)存泄漏、性能很有幫助。

  測(cè)試是分類型的。壓力測(cè)試、性能測(cè)試。就目前對(duì)支持J2EE應(yīng)用的測(cè)試而言,并沒有很好的測(cè)試工具。但是,一般情況下,借助于Rational Robot也能夠取得不錯(cuò)的效果。

  當(dāng)然,成功開發(fā)J2EE應(yīng)用的因素有很多。比如,Entity Beans的成功應(yīng)用很大程度上與底層Database的設(shè)計(jì)有關(guān)系(如果表結(jié)構(gòu)設(shè)計(jì)設(shè)計(jì)的不合理,將導(dǎo)致Entity Beans性能的急劇下降);如何最大化挖掘、提升團(tuán)隊(duì)各個(gè)成員的J2EE技能。等等這些,設(shè)計(jì)面很廣。希望對(duì)你有幫助。

【J2EE開發(fā)原則】相關(guān)文章:

J2EE開發(fā)技術(shù)研究05-08

J2EE項(xiàng)目開發(fā)風(fēng)險(xiǎn)匯總01-05

開發(fā)j2ee項(xiàng)目設(shè)置方法06-04

javaweb開發(fā)和j2ee區(qū)別06-04

j2ee企業(yè)級(jí)應(yīng)用開發(fā)05-22

Eclipse j2ee開發(fā)環(huán)境的搭建05-08

Java Web開發(fā)和J2EE的區(qū)別11-11

J2EE架構(gòu)與開發(fā)簡(jiǎn)答題10-19

J2EE開發(fā)使用手冊(cè)目錄12-19