找回密码
 欢迎注册
搜索
热搜: 活动 交友 discuz
查看: 6620|回复: 11

ASP+与JSP之间的抉择

[复制链接]
发表于 2006-5-13 23:17:18 | 显示全部楼层 |阅读模式
<h3><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">与</span><span lang="EN-US">JSP</span><span style="FONT-FAMILY: 宋体">之间的抉择</span></h3><p class="MsoNormal"><span style="FONT-FAMILY: 宋体">由于我同时是</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">JSP</span><span style="FONT-FAMILY: 宋体">的程序员,所以正开始写一系列的文章来比较两者的差别,当我写到一半时,</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">被宣布了,所以我不得不重新开始审视这个问题。我正在同时做一个</span><span lang="EN-US">JSP</span><span style="FONT-FAMILY: 宋体">项目和一个</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">项目,后者十分有趣,因为它开始是采用</span><span lang="EN-US">ASP3.0</span><span style="FONT-FAMILY: 宋体">,但当项目结束后我将会转换为</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">。到那时我将可以对</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">有更近的考察,并提供更好的</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">JSP</span><span style="FONT-FAMILY: 宋体">的比较。本文是我目前对</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">的一些认识和看法,并分析了它对于象我这样的普通开发人员可能会产生的影响。  </span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  通过最初步的比较,我发现:</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">1) </span><span style="FONT-FAMILY: 宋体">面向对象性</span><span lang="EN-US">: <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">将</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">作为一种面向对象语言,在很多方面来看,</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">将成为微软的与</span><span lang="EN-US">Java</span><span style="FONT-FAMILY: 宋体">相似的语言。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">另一个有趣的地方是所有对象都自动变成为</span><span lang="EN-US">COM</span><span style="FONT-FAMILY: 宋体">对象。如果</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">能取得很大的市场份额,那么它将给</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">带来类似于</span><span lang="EN-US">Java</span><span style="FONT-FAMILY: 宋体">的功能,并且具备更快的性能,因为它可以和</span><span lang="EN-US">Windows</span><span style="FONT-FAMILY: 宋体">环境紧密集成。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">是</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">开发中一个最重要的功能,微软会将</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">发展成为</span><span lang="EN-US">Java</span><span style="FONT-FAMILY: 宋体">的强劲对手。这也是微软</span><span lang="EN-US">.Net</span><span style="FONT-FAMILY: 宋体">框架的一个重要组成部分。我认为</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">是微软在编程市场上击败对手的主要工具。我期待着微软能在这个产品后面倾注全力,这样,</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">可以成为许多程序员的又一种选择。</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">的诞生无疑将进一步加剧微软和</span><span lang="EN-US">Sun</span><span style="FONT-FAMILY: 宋体">产品的战线,但这对用户是有利的,他们可以选择两者之一来开发新的应用。  </span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">2) </span><span style="FONT-FAMILY: 宋体">数据库连接:</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">另一个亮点是它使用</span><span lang="EN-US">ADO</span><span style="FONT-FAMILY: 宋体">对象、</span><span lang="EN-US">ODBC</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">OLE-DB</span><span style="FONT-FAMILY: 宋体">和事务处理管理器。因此</span><span lang="EN-US">ASP Web</span><span style="FONT-FAMILY: 宋体">数据库应用开发特别简单。</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">发展了更多的功能,因为有了</span><span lang="EN-US">ADO+</span><span style="FONT-FAMILY: 宋体">!</span><span lang="EN-US">ADO+</span><span style="FONT-FAMILY: 宋体">带来了更强大更快速的功能。</span><span lang="EN-US">JSP</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">JDBC</span><span style="FONT-FAMILY: 宋体">目前在易用性和性能上同</span><span lang="EN-US">ASP/ADO</span><span style="FONT-FAMILY: 宋体">相比已有些落后,当新版本</span><span lang="EN-US">ASP+/ADO+</span><span style="FONT-FAMILY: 宋体">出现后这样的差别会更明显。所以我个人希望</span><span lang="EN-US">SUN</span><span style="FONT-FAMILY: 宋体">应尽快能花大力气来追赶</span><span lang="EN-US">ASP+/ADO+</span><span style="FONT-FAMILY: 宋体">的组合。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">3)</span><span style="FONT-FAMILY: 宋体">大型站点应用:</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">将对大型站点</span><span lang="EN-US">(web farms)</span><span style="FONT-FAMILY: 宋体">有更好的支持。事实上,微软已经在这方面付出了巨大的努力。</span><span lang="EN-US"> ASP+</span><span style="FONT-FAMILY: 宋体">可以让你考虑到多服务器</span><span lang="EN-US">(multiple servers)</span><span style="FONT-FAMILY: 宋体">的场合,当你需要更强大的功能时,仅仅只需要增加一台服务器。整个</span><span lang="EN-US">.Net</span><span style="FONT-FAMILY: 宋体">框架已经充分地提供了这个方法。</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">提供了外部会话状态</span><span lang="EN-US">(external session state)</span><span style="FONT-FAMILY: 宋体">来提供内置式</span><span lang="EN-US">web farm</span><span style="FONT-FAMILY: 宋体">的支持。另外,由于请求的各组件相互间经过了充分的优化,所以速度很快。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  于是</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">现在可以在大型项目方面与</span><span lang="EN-US">JSP</span><span style="FONT-FAMILY: 宋体">一样具有等同的能力。而</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">还有价格方面的优势,因为所有的组件将是服务器操作系统的一部分。对于</span><span lang="EN-US">JSP,</span><span style="FONT-FAMILY: 宋体">你需要购买昂贵的应用服务器群来达到同样的目的。  </span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">4) ASP+</span><span style="FONT-FAMILY: 宋体">还提供更多的其它方面的新特性,例如:</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">*</span><span style="FONT-FAMILY: 宋体">内置的对象缓存和页面结果缓存。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">*</span><span style="FONT-FAMILY: 宋体">内置的</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">支持,可用于</span><span lang="EN-US">XML</span><span style="FONT-FAMILY: 宋体">数据集的简单处理。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">*</span><span style="FONT-FAMILY: 宋体">服务器控制提供了更充分的交互式控制。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  由此可见,</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">确实对</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">进行了较大的发展。  </span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  在我审视完</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">后,我的初步结论是:我未来项目主要还是要采用基于</span><span lang="EN-US">Java/JSP</span><span style="FONT-FAMILY: 宋体">的技术。这有以下三个理由:</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">1) </span><span style="FONT-FAMILY: 宋体">要真正发挥</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">潜力,你要使用</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">或</span><span lang="EN-US">vb.net</span><span style="FONT-FAMILY: 宋体">。这两种语言将成为</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">标准的核心的脚本语言。这对</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">的未来发展很有好处。而我向来不喜欢用当前的</span><span lang="EN-US">Visual Basic</span><span style="FONT-FAMILY: 宋体">来制作</span><span lang="EN-US">com</span><span style="FONT-FAMILY: 宋体">对象。新的</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">核心脚本语言更能发挥</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">的价值。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  显然,所有这些</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">的新进展促使我对今后语言选择做一个决定,它将占据我未来的无数时间和努力。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  回想起来,当</span><span lang="EN-US">Java</span><span style="FONT-FAMILY: 宋体">开始发展起来时我正好学习了</span><span lang="EN-US">Java</span><span style="FONT-FAMILY: 宋体">,那时我预感到这将是围绕我未来程序生涯的语言。于是,</span><span lang="EN-US">JSP</span><span style="FONT-FAMILY: 宋体">理所当然地成为了我在</span><span lang="EN-US">web</span><span style="FONT-FAMILY: 宋体">开发中的第一选择。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  现在我已经是一个</span><span lang="EN-US">JSP fan</span><span style="FONT-FAMILY: 宋体">,除非微软能够将我整个扭转过去,我感觉到自己正面临</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">的巨大挑战。  </span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">2) ASP+</span><span style="FONT-FAMILY: 宋体">依然完全锁定在微软的操作系统中。</span><span lang="EN-US">JSP</span><span style="FONT-FAMILY: 宋体">比</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">拥有更大的范围,它在别的服务器配置中也有很好的伸缩性。虽然</span><span lang="EN-US">Windows 2000 </span><span style="FONT-FAMILY: 宋体">的优越性日益显露,但这对开发人员不构成问题。  </span><span lang="EN-US"> <br />   <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">3) </span><span style="FONT-FAMILY: 宋体">我并不能确信是否我能认同</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">结构的各种方面,这需要更深入的分析,所以,我很犹豫。也许直到我使用了</span><span lang="EN-US">1-2</span><span style="FONT-FAMILY: 宋体">个月后才会改变看法。总的来说,这需要在一个很高的层次来看待这个</span><span lang="EN-US">beta</span><span style="FONT-FAMILY: 宋体">产品。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  而作为一个</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">开发人员,</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">也让我要停下来反思一下。未来</span><span lang="EN-US">8</span><span style="FONT-FAMILY: 宋体">个月的</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">新项目将变得很困难。为什么?因为</span> <span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">C# </span><span style="FONT-FAMILY: 宋体">带来了一个难题,它们要到</span><span lang="EN-US">2001</span><span style="FONT-FAMILY: 宋体">年才正式提供。而很多性能方面的要求现在就需要确定。由于</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">只是一个</span><span lang="EN-US">beta</span><span style="FONT-FAMILY: 宋体">软件,所以现在我的第一个选择反而很简单了。现在的项目就采用</span><span lang="EN-US">ASP3.0</span><span style="FONT-FAMILY: 宋体">。我认为各种</span><span lang="EN-US">beta</span><span style="FONT-FAMILY: 宋体">版的语言都不太可信。  </span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  但我不能忽视</span><span lang="EN-US">ASP+,</span><span style="FONT-FAMILY: 宋体">因为它很快就要推出,并代表了</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">的未来。</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">项目的管理者还需要考虑到未来的可平滑移植性及付出的时间代价等。另一个结果则是,这使得在近期使用</span><span lang="EN-US">HP</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">JSP</span><span style="FONT-FAMILY: 宋体">来代替</span><span lang="EN-US">ASP</span><span style="FONT-FAMILY: 宋体">变得更可靠一些。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  总的来说,</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">1) </span><span style="FONT-FAMILY: 宋体">如果使用</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">,你将花费额外的时间学一些新的工具。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">2) </span><span style="FONT-FAMILY: 宋体">新的工具有待于版本化,所以为什么不先关注于目前存在的东西?</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">3) ASP+</span><span style="FONT-FAMILY: 宋体">将来会拥有的特性</span><span lang="EN-US">JSP</span><span style="FONT-FAMILY: 宋体">已经拥有。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">4) ASP+</span><span style="FONT-FAMILY: 宋体">将你锁定到纯</span><span lang="EN-US">Microsoft</span><span style="FONT-FAMILY: 宋体">的体系中。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  最后,我预测会有很多人加入到</span><span lang="EN-US">HP</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">JSP</span><span style="FONT-FAMILY: 宋体">的行列。可是,仍然会有一部分人会受到</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">给业界带来的激动所感染。我从没看到一个</span><span lang="EN-US">beta</span><span style="FONT-FAMILY: 宋体">编程产品会带来如此的震撼!  </span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  同时,我还注意到一篇讨论</span><span lang="EN-US">.net</span><span style="FONT-FAMILY: 宋体">的文章中也提到了同样的问题:</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  </span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">以自由软件作为开始,现在已经渐渐成为</span><span lang="EN-US">Microsoft</span><span style="FONT-FAMILY: 宋体">的</span><span lang="EN-US">.Net</span><span style="FONT-FAMILY: 宋体">框架的基石之一。</span><span lang="EN-US">Sun</span><span style="FONT-FAMILY: 宋体">应该从中得到教训。特别注意的是,你需要许可证才能升级到</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">,因为它和太多的产品集成在一起了。</span><span lang="EN-US">.Net</span><span style="FONT-FAMILY: 宋体">框架太大了。在假定某个产品可以成为真正的产品之前,我通常等待它的第一个</span><span lang="EN-US">service pack</span><span style="FONT-FAMILY: 宋体">。所以,即使</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">已经在</span><span lang="EN-US">2001</span><span style="FONT-FAMILY: 宋体">第一季度被版本化,我仍然要等到</span><span lang="EN-US">2001</span><span style="FONT-FAMILY: 宋体">第二季度。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  当然,因为</span><span lang="EN-US">ASP+ </span><span style="FONT-FAMILY: 宋体">已经产生了如此的激动人心,一旦推出,很多商店都会马上提供</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">。</span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  事实上我早已经使用</span><span lang="EN-US">beta</span><span style="FONT-FAMILY: 宋体">版</span><span lang="EN-US">ASP+! </span><span style="FONT-FAMILY: 宋体">我发现它使用</span><span lang="EN-US"> .<span class="SpellE">aspx</span> </span><span style="FONT-FAMILY: 宋体">后缀,这使我我感觉</span><span lang="EN-US">Microsoft</span><span style="FONT-FAMILY: 宋体">会在近期推出第一个</span><span lang="EN-US">ASP+</span><span style="FONT-FAMILY: 宋体">的</span><span lang="EN-US">service pack</span><span style="FONT-FAMILY: 宋体">。  </span><span lang="EN-US"> <br />   <br />  </span><span style="FONT-FAMILY: 宋体">  下一年里,我们将看到在这个巨大的市场上</span><span lang="EN-US">Sun</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">Microsoft</span><span style="FONT-FAMILY: 宋体">如何展开决战,而程序员们又将做出什么样的选择呢?</span><span lang="EN-US"> </span></p><span lang="EN-US"><p class="MsoNormal"><hr /></p><p class="MsoNormal">这是我从一个教程里,扣出来的。我看到这位作者写的很好,很想与这里的朋友分享,如有得罪的地方请作者 通知,我会立刻删除。</p></span>
发表于 2006-5-14 10:49:20 | 显示全部楼层

ASP+与JSP之间的抉择

写的不错啊,可是没把ASP.NET相对JSP的优点写出来啊,按照JSP2.0标准在JSP页面中一般不需要嵌入JAVA代码了。
 楼主| 发表于 2006-5-14 20:25:59 | 显示全部楼层

ASP+与JSP之间的抉择

<p><!--quote-mojuncong+2006-05-14 10:49--><div class='quotetop'>引用mojuncong &#064; 2006-05-14 10:49)</div><div class='quotemain'><!--quote1-->写的不错啊,可是没把ASP.NET相对JSP的优点写出来啊,按照JSP2.0标准在JSP页面中一般不需要嵌入JAVA代码了。<!--quote2--></div><!--quote3--><br />谢谢版主指教</p><p />
<br />
发表于 2006-5-14 20:53:26 | 显示全部楼层

ASP+与JSP之间的抉择

<p>现在可以了吧,精神鼓励?</p><!--editpost--><br /><br /><br /><div><font class='editinfo'>此帖由 mojuncong 在 2006-05-14 12:58 进行编辑...</font></div><!--editpost1-->
 楼主| 发表于 2006-5-14 21:41:54 | 显示全部楼层

ASP+与JSP之间的抉择

谢谢!
发表于 2006-5-15 08:09:32 | 显示全部楼层

ASP+与JSP之间的抉择

呵呵,佩服,顶一下
发表于 2006-5-27 19:26:00 | 显示全部楼层

ASP+与JSP之间的抉择

<p>学习。</p>
发表于 2006-5-31 13:44:47 | 显示全部楼层

ASP+与JSP之间的抉择

<p>我是不懂了,只是来学习的!</p>
发表于 2006-6-5 12:00:07 | 显示全部楼层

ASP+与JSP之间的抉择

<!--quote-mojuncong+2006-05-14 10:49--><div class='quotetop'>引用mojuncong &#064; 2006-05-14 10:49)</div><div class='quotemain'><!--quote1-->写的不错啊,可是没把ASP.NET相对JSP的优点写出来啊,按照JSP2.0标准在JSP页面中一般不需要嵌入JAVA代码了。<!--quote2--></div><!--quote3--><br />实际按我的经验来看,难以清处java代码,其实也不必要。
发表于 2007-9-30 12:37:37 | 显示全部楼层
混了PHP也有三年时间了,现在看了看楼主提到的那些高级特性,我突然发现原来PHP一样也不支持(除了面向对象)
数据库连接池 --- PHP没有,只有一个持久链接(而这个还被Web Server 的线程影响可能导致不太稳定)
大型站点 --------- 分布式构架 PHP 没有,自己找方案解决
对象缓存、页面缓存 ---------  自己解决,无内置方案
内置XML支持            ---------  这点应该算是PHP的一点优点了(PHP5)

同样,我也搞了一旦时间的Java了,发现Java其实也不过如此,其中的内容(声明:我只看过Hibernate 和 Spring)除了名字比较拽之外没有什么奇特之处(PHP没有实现的原因只是因为PHP无法长期驻留内存导致采用那么多模式效率受影响)

不过就我的经验来说,即使Java采用了那么多好处,效率仍旧不行,日常运行速度远比不上PHP

一下是我以前做的一个测试:
系统平台:Windos Xp Sp2
CPU: 赛扬 M 1.60G
RAM: 512M
Server: Apache2.24 & PHP5.23& eaccelerator 0.95 (PHP)
            Tomcat 5.50-17 (Java)
测试: ab -c 50 -n 1000

代码一:
PHP制作一个计数器:
<?php
class
Counter
{
    const
SAVE_PATH = './a'
;
    private
$_counter = 0
;
    public function
__construct
()
    {
        
$this->_counter = (int)file_get_contents(self::SAVE_PATH
);
        
$this->_counter
++;
    }
    public function
getCount
()
    {
        return
$this->_counter
;
    }
    public function
__destruct
()
    {
        
file_put_contents(dirname(__FILE__) . '/' . self::SAVE_PATH, $this->_counter
);
    }
}

$cnt = new Counter
();
echo
'你是第 ' . $cnt->getCount() . '  个无聊份子'
;
?>

测试结果:
Requests per second:    239.70 [#/sec] (mean)
Java的计数器(Servlet)
/*
* CServlet.java
*
* Created on 2007年8月28日, 下午11:36
*/

import java.io
.*;
import java.net
.*;

import javax.servlet
.*;
import javax.servlet.http
.*;

/**
*
* @author 西门吹水
* @version
*/
public class CServlet extends HttpServlet
{
    private
int i = 0
;
   
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
   
protected void processRequest(HttpServletRequest request, HttpServletResponse response
)
   
throws ServletException, IOException
{
        
i
++;
        
response.setContentType("text/html;charset=UTF-8"
);
        
PrintWriter out = response.getWriter
();
        
out.println("<html>"
);
        
out.println("<head>"
);
        
out.println("<title>Servlet CServlet</title>"
);
        
out.println("</head>"
);
        
out.println("<body>"
);
        
out.println("你是第 " + i + "个无聊份子"
);
        
out.println("</body>"
);
        
out.println("</html>"
);
        
out.close
();
    }
     
   
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
   
protected void doGet(HttpServletRequest request, HttpServletResponse response
)
   
throws ServletException, IOException
{
        
processRequest(request, response
);
    }
     
   
/** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
   
protected void doPost(HttpServletRequest request, HttpServletResponse response
)
   
throws ServletException, IOException
{
        
processRequest(request, response
);
    }
     
   
/** Returns a short description of the servlet.
     */
   
public String getServletInfo
() {
        return
"这只是一个无聊的测试"
;
    }
   
// </editor-fold>
}



测试结果:
Requests per second:    33.20 [#/sec] (mean)
Java的计数器(JSP + Bean)

JSP源码:
<%@page c%>
<%@page pageEncoding="UTF-8"%>
<jsp:useBean id="cnt" scope="application" class="counter.Counter" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" c>
        <title>Counter 测试</title>
    </head>
    <body>
    <div style="text-align:center;">你是第 <%=cnt.getCount()%> 个无聊份子</div>
   
    </body>
</html>

Bean源码:
/*
* Counter.java
*
* Created on 2007年8月11日, 下午5:53
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package counter
;
/**
*
* @author 西门吹水
*/
public class Counter
{
     
    public
int getCount
()
    {
        
count
++;
        return
count
;
    }
    public
void setCount(int count
)
    {
        
this.count = count
;
    }
   
/** Creates a new instance of Counter */
   
public Counter
() {
    }
    private
int count = 0
;
}



测试结果
Requests per second:    18.08 [#/sec] (mean)
发表于 2007-9-30 12:48:18 | 显示全部楼层
以上的例子中:Java的计数都是在内存中进行的,而PHP的还要涉及到文件IO操作(在构造函数和析构函数中完成),然而PHP的效率还是明显优于Java

而同样的PHP内存计数的话(采用ea做共享内存):

  1. <?php
  2. class Counter
  3. {
  4.     const STORE_NAME = 'ct';
  5.     private $_count = 0;
  6.     public function __construct()
  7.     {
  8.   $this->_count = eaccelerator_get(self::STORE_NAME );
  9.   $this->_count++;
  10.   eaccelerator_put(self::STORE_NAME , $this->_count, 0);
  11.     }
  12.     public function getCount()
  13.     {
  14.   return $this->_count;
  15.     }
  16. }
  17. $cnt = new Counter();
  18. echo '你是第 ' . $cnt->getCount() . ' 个无聊分子!';
  19. ?>
复制代码
测试结果:Request Per Second 可以达到 455.56 (这个测试是以后补的,机器,平台一样,但是不是和上面三个测试一次进行的)

感觉其实什么什么的只是像一句广告(对象缓存、页面缓存、这支持那支持),没必要信得太真。唯一比较有用的只是那个链接缓冲池。。。感觉(PHP没有连接缓冲池的确很不爽,开 持久连接 不能把 Server 线程数开得超过MySQL的最大并发数)

在Java道上也看见这种技术之间的论战,不过结论有些不同,真正的大型站点RoR、PHP、Java(未讨论C#)都无法支持,能搞搞得还是得C语言。。。。。

现在觉得对我影响最大的是框架(Framework)以及IDE(PHP完全没有可视化的IDE, 那个 Delphi for PHP真不能算一个东西)。没感觉Java在Web上比PHP有什么强的。Java在小内存平台的表现相当的让人失望

对C#没什么好说的,没搞过
但是有如下经历:我想在我们公司的机器(一台没人用的机器上)上安装一个MicroSoft Share Point 2007,服务器配置 Windows 2003 Server、RAM  256M、CPU 赛扬4 1.8G,但是结果极其失望,打开一个页面(配置页面我可以回去睡一觉了,回来打开显示器100%的运行时异常)
而几个月前还是学生的时候,同样安装过SugarCRM(Windows XP 、256M、赛扬4 2.0G,以前的学生配置),就算很有些慢(PHP的设置不可能运行超过30秒),但是还是能运行。。。Java、C#都在促进我们烧内存

[ 本帖最后由 wps2000 于 2007-9-30 12:55 编辑 ]
发表于 2009-2-5 20:23:41 | 显示全部楼层
按照jsp+struts2+spring+hibernate框架来看,jsp主要用于表示层了.java来处理业务逻辑层,表示层用php还是jsp,根据业务需要,现在ruby好象比较流行,可惜我没用过,不好比较
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

快速回复 返回顶部 返回列表