日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

java pet store

系統(tǒng) 1911 0
轉自:http://blog.csdn.net/gaulhor/archive/2007/03/20/1535280.aspx

相信大家常常會看到很多統(tǒng)計數(shù)字,來自各家廠商、各種傳播媒體、各個政治團體,但是數(shù)字雖然會說話,卻常常各說各話。前陣子出現(xiàn)一篇比較微軟.NET和Java J2EE架構執(zhí)行效率的報告,常常被微軟陣營拿來當成打擊J2EE的證據(jù)。例如以下這段話﹕

"而據(jù)微軟宣稱,Visual Studio.Net能支持25種語言,和Java相比具有節(jié)省2/3程序代碼、效能快28倍,承載六倍的使用者的功能"
- 摘自臺灣CNet 2002年四月二日新聞專區(qū)

這樣超能力的.NET效能報告到底來自何方?其真實性為合?本周我就來
從頭開始講講這個精采故事的始末。

J2EE (Java 2 Enterprise Edition)是Java技術在企業(yè)運算上的應用,之中包含多種運算標準,EJB組件架構、JDBC數(shù)據(jù)庫運算、JMS訊息傳遞、Java Servlets/JSP等Web組件程序等等,功能強大但是內(nèi)容博大精深,為了讓使用者可以有一個設計J2EE架構應用程序的模板,Sun做出一套系統(tǒng)名為 "Java Pet Store"。這個線上寵物店的范例是針對已經(jīng)熟悉Java程序設計和J2EE觀念的人,提供一個用正規(guī)方式設計出來的系統(tǒng),讓要用J2EE架構的人有一個參考的依據(jù)。

這個范例一出來,很快就被用來當成比較各家J2EE兼容產(chǎn)品的依據(jù)。最先是在去年的JavaOne大會上,受邀參加主題演講的Oracle大老板Larry Ellision重炮轟擊在他之前剛講完下臺的BEA,公開宣稱Oracle的J2EE Application Server (Oracle9iAS) 的執(zhí)行效能是BEA WebLogic的三倍,同時也是IBM WebSphere
的兩倍。接下來IBM和BEA都站出來反擊,例如BEA在去年七月也公布一項效能數(shù)據(jù),數(shù)據(jù)上顯示W(wǎng)ebLogic Server 6.1的執(zhí)行效率是IBM WebSphere的四倍,并且比Oracle的產(chǎn)品快上54%等等。這種情況其實是正常的,Java標準的精神原本就是各家廠商合作制定技術標準,然后再來根據(jù)這個標準來比賽誰的產(chǎn)品做得好。但是正當各家J2EE廠商比較得正熱鬧的時候,卻半路殺出一個程咬金,微軟有個網(wǎng)站叫做GotDotNET公布一份報告,宣稱他們用同樣的架構運用.NET技術做出同一套系統(tǒng),結果就是本文一開頭的那一段︰"和Java相比具有節(jié)省2/3程序代碼、效能快28倍,承載六倍的使用者的功能"。這個數(shù)字一公布,就常常被微軟以及微軟的經(jīng)銷商們拿來當成.NET遠遠超越J2EE的證據(jù)。

這種驚人的數(shù)據(jù)當然引起J2EE陣營的質疑,于是大家仔細去看到底這些數(shù)字是
怎么產(chǎn)生的,很快地就被發(fā)現(xiàn)其中大有文章。這個.NET版本的寵物店系統(tǒng)已經(jīng)被從頭到尾改裝過,整個架構都跟原先Java Pet Store不一樣。根據(jù)網(wǎng)絡上來自各方的整理,主要的不同點有以下幾個﹕

1. Java Pet Store用的架構設計是所謂的MVC design pattern。MVC是Model-View-Controller的簡寫,是design pattern的一種,源自Smalltalk。以往開發(fā)這種大型應用程序常常把不同用途的各部分程序都混在一起,造成項目成員分工不清,系統(tǒng)也很難維護。MVC design pattern則是將對象分成三類,Model對象專門用來包裝應用程序的狀態(tài),View用來負責屏幕上的展現(xiàn),Controller則負責定義應用程序的各種動作和反應。Java寵物店系統(tǒng)利用MVC Pattern設計整個系統(tǒng)架構,將各層的對象清楚地分開。.NET的寵物店則是完全采用自己定義的架構,所以在一開始就和原來的范例完全不一樣。

2. 在資料存取方面,.NET寵物店大量使用數(shù)據(jù)庫中的store procedure。但是在原來的Java寵物店中,這些商業(yè)邏輯的工作是放在中間層組件中的。把這些工作放到store procedure里也許可以增加一些執(zhí)行效率,但是卻犧牲了程序的彈性和把各種工作都放進store procedure里, 帶來的缺點是維護不易。而且對于某些陽春型的數(shù)據(jù)庫系統(tǒng) (例如MySQL),它根本就沒有store procedure的功能。

3. 在數(shù)據(jù)庫方面,.NET寵物店采用ADO.NET的Sql DataReaders來存取微軟SQL? Server的資料。但是如果數(shù)據(jù)庫換成其它廠牌的產(chǎn)品,比如說 Oracle、
?? Sybase或是DB/2,雖然還是可以用 ADO.NET透過 OLE DB以及ODBC等方式來存取,但是在效率上就不可能跟在Microsoft SQL Server上一樣了。所以Java寵物店是一個不管使用各家產(chǎn)品皆可行的展示,.NET寵物店則是在各方面都采用自家產(chǎn)品/技術的產(chǎn)物。

4. 另外.NET寵物店還有一個最快速提升效率數(shù)字的方法,就是去更改SQL的
?? query statement,讓傳回來的資料筆數(shù)少一些。這招果然有立竿見影的效果

簡單來說,這個.NET版本寵物店和Java寵物店的最大差別在架構設計。Java寵物店的目的是展示一個具擴充性的企業(yè)運算架構,就是采用三層(3-Tiers)式設計,資料展現(xiàn)層在最外面,中間是執(zhí)行企業(yè)運算邏輯的中間層組件,后端就單純是存放資料的關系型數(shù)據(jù)庫。如此一來工作分得很清楚干凈,各司其職。而微軟的.NET寵物店其實就類似傳統(tǒng)的兩層式(2-Tiers)設計,

另外Java寵物店當初的用意也只是當成一個J2EE架構設計的模板,并沒有特別針對加速執(zhí)行效能作額外的設計。但是.NET寵物店完全以執(zhí)行效能出發(fā),為此不惜重新量身訂作,雖然系統(tǒng)跑起來外觀和功能一樣,但是里頭完全不是那么回事。如果用它來展示.NET也可以做出一套相同的寵物店系統(tǒng)那倒無妨,但是如果用執(zhí)行效率來作文章,那就有些不公平了。

近來最新的發(fā)展是Sun的Java/XML部門總裁Rich Green在JavaOne大會上宣布,Oracle和IBM又針對Java寵物店在不更動架構下做了效能提升,結果比.NET寵物店快上18到22倍。比如說在中間層的EJB組件之中,它們使用 isModified() 方式來避免不需要的數(shù)據(jù)庫更新動作,這個小更動就大幅提升了整體的執(zhí)行效率。而且為了系統(tǒng)的架構彈性和程序可移植性,在這個新版的系統(tǒng)中仍然沒有像.NET版本一樣使用store procedure。Oracle的這篇最新報告和原始碼可以在下列網(wǎng)站下載﹕

http://otn.oracle.com/tech/java/oc4j/content.html

另外在TheServerSide網(wǎng)站上也有一位先生發(fā)起在不犧牲原來架構和彈性的前提下,來做一套也在執(zhí)行效能上作最佳化的無敵終極版Java寵物店。也有人干脆仿效.NET寵物店的方式,干脆弄一套兩層式(2-Tiers)的Java版寵物店,和用微軟的范例系統(tǒng) "北風數(shù)據(jù)庫" 同時擺在網(wǎng)站上讓人做線上比較。它們的網(wǎng)址分別是︰

http://www.javelinsoft.com/petstore
http://www.javelinsoft.com/northwind

相信這個寵物店大戰(zhàn)還沒完,J2EE各家廠商、網(wǎng)絡上Java陣營的支持者、加上.NET陣營,都會繼續(xù)改進自己做的系統(tǒng),并公布更加夢幻的數(shù)據(jù)。一般使用者要注意的就是不要被簡單的數(shù)字所蒙騙,不要跟著瞎起哄。要看看到底它做了哪些修改才得到這樣的效能提升,而且效能不是一切,系統(tǒng)的穩(wěn)定度、架構的彈性和程序可移植性、程序維護上面的難易度,都是要一并考量的因素。而且既然要比賽,立足點就得公平,不然好比奧運游泳比賽,大家都照規(guī)矩在水中劃手踢腿游,但是偏偏有一個人為了速度,在屁股上裝個推進器往前射,然后再來自己宣稱打破世界紀錄,還有一幫人在旁邊跟著鼓掌叫好,這樣子就不太對了。

下面是本文中提到的文章網(wǎng)址,有興趣進一步研究的朋友可以自行參考﹕

Java寵物店的原始網(wǎng)址 (包含所有文件和范例程序代碼)﹕
http://java.sun.com/blueprints/code/index.html#java_pet_store_demo

Sun有關這個Java寵物店系統(tǒng)的FAQ︰
http://java.sun.com/blueprints/qanda/faq.html

解說 MVC Pattern的文件︰
http://java.sun.com/blueprints/patterns/j2ee_patterns/model_view_controller/index.html

.NET版本寵物店的網(wǎng)址︰
http://www.gotdotnet.com/team/compare/petshop.aspx

Oracle版本Java寵物店的網(wǎng)址﹕
http://otn.oracle.com/tech/java/oc4j/content.html

BEA版本Java寵物店的網(wǎng)址﹕
http://www.bea.com/press/releases/2001/0709_benchmark_bea-ibm-oracle.shtml

IBM對.NET提出的響應︰
http://www-3.ibm.com/software/webservers/studio/msnetreview.html





Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1535280


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/tan_jianhui/archive/2008/03/12/2172273.aspx

java pet store


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 庆安县| 青川县| 平度市| 来宾市| 雷波县| 睢宁县| 南雄市| 衡东县| 香港| 武穴市| 金昌市| 绵竹市| 涿州市| 连云港市| 拜城县| 石林| 广宗县| 滨海县| 宁河县| 乌恰县| 长泰县| 汾阳市| 铅山县| 翁牛特旗| 革吉县| 高阳县| 乐平市| 呈贡县| 乐都县| 佳木斯市| 静海县| 屏东市| 遂川县| 玉溪市| 商洛市| 佳木斯市| 青浦区| 芮城县| 漳平市| 赫章县| 错那县|