`
kakarot_java
  • 浏览: 163708 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
转自:http://blog.csdn.net/gaulhor/archive/2007/03/20/1535280.aspx

相信大家常常会看到很多统计数字,来自各家厂商、各种传播媒体、各个政治团体,但是数字虽然会说话,却常常各说各话。前阵子出现一篇比较微软.NET和Java J2EE架构执行效率的报告,常常被微软阵营拿来当成打击J2EE的证据。例如以下这段话﹕

"而据微软宣称,Visual Studio.Net能支持25种语言,和Java相比具有节省2/3程序代码、效能快28倍,承载六倍的使用者的功能"
- 摘自台湾CNet 2002年四月二日新闻专区

这样超能力的.NET效能报告到底来自何方?其真实性为合?本周我就来
从头开始讲讲这个精采故事的始末。

J2EE (Java 2 Enterprise Edition)是Java技术在企业运算上的应用,之中包含多种运算标准,EJB组件架构、JDBC数据库运算、JMS讯息传递、Java Servlets/JSP等Web组件程序等等,功能强大但是内容博大精深,为了让使用者可以有一个设计J2EE架构应用程序的模板,Sun做出一套系统名为 "Java Pet Store"。这个线上宠物店的范例是针对已经熟悉Java程序设计和J2EE观念的人,提供一个用正规方式设计出来的系统,让要用J2EE架构的人有一个参考的依据。

这个范例一出来,很快就被用来当成比较各家J2EE兼容产品的依据。最先是在去年的JavaOne大会上,受邀参加主题演讲的Oracle大老板Larry Ellision重炮轰击在他之前刚讲完下台的BEA,公开宣称Oracle的J2EE Application Server (Oracle9iAS) 的执行效能是BEA WebLogic的三倍,同时也是IBM WebSphere
的两倍。接下来IBM和BEA都站出来反击,例如BEA在去年七月也公布一项效能数据,数据上显示WebLogic Server 6.1的执行效率是IBM WebSphere的四倍,并且比Oracle的产品快上54%等等。这种情况其实是正常的,Java标准的精神原本就是各家厂商合作制定技术标准,然后再来根据这个标准来比赛谁的产品做得好。但是正当各家J2EE厂商比较得正热闹的时候,却半路杀出一个程咬金,微软有个网站叫做GotDotNET公布一份报告,宣称他们用同样的架构运用.NET技术做出同一套系统,结果就是本文一开头的那一段︰"和Java相比具有节省2/3程序代码、效能快28倍,承载六倍的使用者的功能"。这个数字一公布,就常常被微软以及微软的经销商们拿来当成.NET远远超越J2EE的证据。

这种惊人的数据当然引起J2EE阵营的质疑,于是大家仔细去看到底这些数字是
怎么产生的,很快地就被发现其中大有文章。这个.NET版本的宠物店系统已经被从头到尾改装过,整个架构都跟原先Java Pet Store不一样。根据网络上来自各方的整理,主要的不同点有以下几个﹕

1. Java Pet Store用的架构设计是所谓的MVC design pattern。MVC是Model-View-Controller的简写,是design pattern的一种,源自Smalltalk。以往开发这种大型应用程序常常把不同用途的各部分程序都混在一起,造成项目成员分工不清,系统也很难维护。MVC design pattern则是将对象分成三类,Model对象专门用来包装应用程序的状态,View用来负责屏幕上的展现,Controller则负责定义应用程序的各种动作和反应。Java宠物店系统利用MVC Pattern设计整个系统架构,将各层的对象清楚地分开。.NET的宠物店则是完全采用自己定义的架构,所以在一开始就和原来的范例完全不一样。

2. 在资料存取方面,.NET宠物店大量使用数据库中的store procedure。但是在原来的Java宠物店中,这些商业逻辑的工作是放在中间层组件中的。把这些工作放到store procedure里也许可以增加一些执行效率,但是却牺牲了程序的弹性和把各种工作都放进store procedure里, 带来的缺点是维护不易。而且对于某些阳春型的数据库系统 (例如MySQL),它根本就没有store procedure的功能。

3. 在数据库方面,.NET宠物店采用ADO.NET的Sql DataReaders来存取微软SQL  Server的资料。但是如果数据库换成其它厂牌的产品,比如说 Oracle、
   Sybase或是DB/2,虽然还是可以用 ADO.NET透过 OLE DB以及ODBC等方式来存取,但是在效率上就不可能跟在Microsoft SQL Server上一样了。所以Java宠物店是一个不管使用各家产品皆可行的展示,.NET宠物店则是在各方面都采用自家产品/技术的产物。

4. 另外.NET宠物店还有一个最快速提升效率数字的方法,就是去更改SQL的
   query statement,让传回来的资料笔数少一些。这招果然有立竿见影的效果

简单来说,这个.NET版本宠物店和Java宠物店的最大差别在架构设计。Java宠物店的目的是展示一个具扩充性的企业运算架构,就是采用三层(3-Tiers)式设计,资料展现层在最外面,中间是执行企业运算逻辑的中间层组件,后端就单纯是存放资料的关系型数据库。如此一来工作分得很清楚干净,各司其职。而微软的.NET宠物店其实就类似传统的两层式(2-Tiers)设计,

另外Java宠物店当初的用意也只是当成一个J2EE架构设计的模板,并没有特别针对加速执行效能作额外的设计。但是.NET宠物店完全以执行效能出发,为此不惜重新量身订作,虽然系统跑起来外观和功能一样,但是里头完全不是那么回事。如果用它来展示.NET也可以做出一套相同的宠物店系统那倒无妨,但是如果用执行效率来作文章,那就有些不公平了。

近来最新的发展是Sun的Java/XML部门总裁Rich Green在JavaOne大会上宣布,Oracle和IBM又针对Java宠物店在不更动架构下做了效能提升,结果比.NET宠物店快上18到22倍。比如说在中间层的EJB组件之中,它们使用 isModified() 方式来避免不需要的数据库更新动作,这个小更动就大幅提升了整体的执行效率。而且为了系统的架构弹性和程序可移植性,在这个新版的系统中仍然没有像.NET版本一样使用store procedure。Oracle的这篇最新报告和原始码可以在下列网站下载﹕

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

另外在TheServerSide网站上也有一位先生发起在不牺牲原来架构和弹性的前提下,来做一套也在执行效能上作最佳化的无敌终极版Java宠物店。也有人干脆仿效.NET宠物店的方式,干脆弄一套两层式(2-Tiers)的Java版宠物店,和用微软的范例系统 "北风数据库" 同时摆在网站上让人做线上比较。它们的网址分别是︰

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

相信这个宠物店大战还没完,J2EE各家厂商、网络上Java阵营的支持者、加上.NET阵营,都会继续改进自己做的系统,并公布更加梦幻的数据。一般使用者要注意的就是不要被简单的数字所蒙骗,不要跟着瞎起哄。要看看到底它做了哪些修改才得到这样的效能提升,而且效能不是一切,系统的稳定度、架构的弹性和程序可移植性、程序维护上面的难易度,都是要一并考量的因素。而且既然要比赛,立足点就得公平,不然好比奥运游泳比赛,大家都照规矩在水中划手踢腿游,但是偏偏有一个人为了速度,在屁股上装个推进器往前射,然后再来自己宣称打破世界纪录,还有一帮人在旁边跟着鼓掌叫好,这样子就不太对了。

下面是本文中提到的文章网址,有兴趣进一步研究的朋友可以自行参考﹕

Java宠物店的原始网址 (包含所有文件和范例程序代码)﹕
http://java.sun.com/blueprints/code/index.html#java_pet_store_demo

Sun有关这个Java宠物店系统的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版本宠物店的网址︰
http://www.gotdotnet.com/team/compare/petshop.aspx

Oracle版本Java宠物店的网址﹕
http://otn.oracle.com/tech/java/oc4j/content.html

BEA版本Java宠物店的网址﹕
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大师作品-在线宠物商店系统sun java pet store

    《Java大师作品——在线宠物商店系统Sun Java Pet Store》 Sun Java Pet Store是一款经典的开源项目,由Sun Microsystems公司开发,旨在展示和教育开发者如何利用J2EE(Java 2 Platform, Enterprise Edition)技术...

    Java Pet Store

    Java Pet Store是一个面向Web 2.0的示例应用程序,主要展示了如何利用Ajax技术来创建一个无缝交互的富Web界面。Ajax(异步JavaScript和XML)是构建这种应用程序的关键技术,它允许用户在不重新加载整个页面的情况下...

    Java Pet Store Doc ZIP

    Java Pet Store 是一个经典的开源项目,它展示了如何使用Java技术和相关框架来构建一个完整的Web应用程序。这个ZIP文件包含了该项目的设计文档、数据库相关资料以及代码版本追踪的信息,版本为1.3.2。以下是对这些...

    java pet store详细设计文档

    "java pet store详细设计文档" 本文档是关于Java Pet Store详细设计文档的知识点总结,涵盖了系统架构、宠物店网上商店、系统设计等方面的知识点。 1. 系统架构 * Sun J2EE是一种Java技术栈,用于构建企业级应用...

    使用 .NET实现JavaTM Pet Store J2EETM 蓝图应用程序.doc

    标题中的“使用 .NET实现JavaTM Pet Store J2EETM 蓝图应用程序”意味着本文档将探讨如何使用微软的.NET框架来重构和实现Sun Microsystems的Java Pet Store,这是一个基于J2EE(Java 2 Platform, Enterprise Edition...

    (java,jsp)宠物网站

    【Java Pet Store 架构设计】 Java Pet Store 是一个基于Java和JSP技术构建的宠物网站,它展示了如何在实际项目中应用MVC(Model-View-Controller)设计模式。MVC模式是一种常用于Web应用程序的软件设计模式,旨在...

    javapetstore-2.0-ea5

    "javapetstore-2.0-ea5" 是一个早期版本的 Java Pet Store 示例应用,它是基于Java技术栈构建的。这个项目主要是为了展示如何使用Java Enterprise Edition(Java EE,现称为Jakarta EE)来开发分布式、面向服务的...

    scala-pet-store:使用scala中的FP技术的Java pet store的实现

    Scala宠物商店 在scala中使用FP技术实现Java宠物商店。谢谢! 特别感谢 ,他也维护了这个项目; 以及继续改善宠物商店的许多状态我有大多数端点。 万一你们都想伸出援手,剩下的大块头了: 创建一个ScalaJS React...

    jps1.1.2(java petstore)+J2EE_Petstore详解

    Java Petstore是Oracle公司推出的一个基于J2EE(Java 2 Platform, Enterprise Edition)平台的示例应用,用于展示如何构建分布式、多层的企业级Web应用程序。这个项目旨在教育开发者如何利用J2EE技术栈来设计和实现...

    petstore1.3.102源码及安装说明

    Petstore是一款经典的Java EE示例应用,广泛用于教学和实践,它展示了J2EE平台上的B/S架构开发。这个版本是1.3.102,对于初学者来说,是一个极好的起点,能够帮助他们理解Web应用的开发流程。本文将详细解析Petstore...

    Microsoft .NET Pet Shop 3.x_ .NET Pet Shop 的设计模式与体系结构.docx

    Java Pet Store是另一个开源项目,用于展示Java平台上的企业级应用程序开发。它是.NET Pet Shop的一个对比参考,两者都被广泛用于教学和实践设计模式和企业级架构。 2. **Microsoft .NET Pet Shop** .NET Pet ...

    应用程序服务器与Web服务基准比较.docx

    文档中提到的“Java Pet Store”和“.NET Pet Store2.0”是经常用来作为基准测试的示例应用程序,它们被用来模拟真实世界的商业场景,以测试应用程序服务器和Web服务的性能。在修订版的Java Pet Store中,可能引入了...

    基于JBoss 4.x的J2EE 1.4应用开发指南

    J2EE发展趋势 案例研究 J2EE Tutorial Java Pet Store Java Adventure Builder 钟情JBoss 4.x 全书内容安排 1 安装JBoss 4.x 2 安装JBoss-IDE 1.4.0 3 基于JBoss 4.x的JSF应用开发 ...

    MyPetstore - Creating a Pet Store Application with JavaServer Faces, Spring, and Hibernate

    Creating a Pet Store Application with JavaServer Faces, Spring, and Hibernate.pdf mypetstore.zip 教程和例子在同一个包内。 学习的好资料!

    petshop4.0加详解

    大意为Sun公司为帮助开发人员和架构师使用J2EE技术,发布了一个在线宠物商店Sun Java Pet Store。而微软公司则利用.NET技术也发布了一个实现同样功能的PetShop,并且在代码数量、性能等各方面对二者进行了比较。最终...

    COM编程的相关资料

    根据给定文件的信息来看,这段文档似乎与COM编程并没有直接关联,反而更多地涉及Java编程、特别是Java BluePrints原则及Java Pet Store样例应用程序的设计与实现。不过,基于题目要求,我们还是来探讨一下COM编程...

    netbean下运行Jpetstore

    9. **应用启动**:完成上述配置和部署后,可以在Web应用程序列表中找到`javapetstore-2.0-ea4`并启动,用户界面会显示“Java Pet Store Reference Application, 2.0 Early Access”,用户可以浏览和体验这个示例商店...

    pet store struts2

    综上所述,"pet store struts2"是一个关于使用Struts2框架构建Pet Shop应用的实践案例,它涵盖了MVC设计模式、Struts2核心概念以及Web开发的多个重要方面。通过学习和实践这个案例,开发者不仅可以深化对Struts2的...

Global site tag (gtag.js) - Google Analytics