我们都一定对比过编程的轻松与简单性。虽然我们都确认php和perl是最容易学习和编程的语言,但我仍旧想知道,如果用php、asp、jsp以及perl分别编写一个同样的程序,哪一个将最快。
进行这样的对比依赖于操作系统和硬件设备。对于我来说,在linux/apache上运行php是非常快的,即使机器属于低端Pro类型。当然,每个人都知道linux是多么的稳定与快速。IIS上的ASP运行可以非常快,但是也要求相当高的硬件性能。
至于Java,许多编程者都一直在抱怨它怎么会这么慢 … 有一个报告叫做“volano”,从中你可以找到各种JDKs和Servlet引擎间在性能上的区别。
但是也要看到,现在由于“Java”的大肆宣传,每个人都在研究Servlets/JSP 或者 EJB(这可以从工作招聘中的调查得到)。所以,如果你从身无分文开始工作,PHP或者Python/Zope将是最好的选择。但是如果你就职于一个目标远大的公司(几千美元对他们来说是无所谓的),你就会有许多种选择。
在企业级计算机环境中开发应用程序要面临许多特殊的挑战:多后台线程是标准,代码资源必须是可管理的、可维护的并且能被多代开发人员所重用。
即使有了这些限制,IT管理人员仍旧要面临巨大的压力去快速开发新项目。当这些工程发生在Web上时,脚本语言就经常是较好的选择。
做为评估的一个商业案例,eWEEk实验室模拟了一个试验,假设为了intranet的发展需要设计一个新的、相对小型的Web应用。我们限制预算在几千美元,以及一个星期的开发时间。
测试中,我们使用了2个同样的Dell计算机公司的OptiPlex GX1p 系统,每个机器的CPU都是Pentium III 550MHz、内存 384MB。
一个服务器运行Windows 2000 Server,并且安装了Service Pack 1。我们在其上测试Allaire公司的ColdFusion Server Professional 4.5.1以及Microsoft 公司的ASP (Active Server Pages) 5.0。另外一个服务器运行Red Hat 公司的Red Hat Linux 7.0,其上测试Apache 公司Tomcat 3.2 Beta 5 以及 PHP 4.02。
在开发速度、易用性以及完整、强大的API使用等方面,ColdFusion最终鹤立鸡群。
我们也推荐使用JSP (JavaServer Pages),它由Tomcat 描绘,对于企业级应用是一个好的选择。ASP和PHP也能做同样的工作,但它们不是我们第一选择。
为了测试Web页面性能并且测试稳定性,我们使用了Quest软件公司的Benchmark Factory load测试和稳定计划工具。Quest软件可以从www.quest.com得到。
尽管性能有所不同,但我们相信每个产品对于小型工程都是足够快的,在那里纯脚本应用是有实际意义的。关于这个测试的更多信息,包括代码以及性能细节,发布在www.eWEEK.com/links
JSP
Sun微系统公司一直努力地普及它的JSP脚本语言,并给Apache组织贡献有关JSP和Java Servlet引擎的代码。Apache组织将这些代码发布为一个Apache产品,叫做Tomcat。
JSP相对来说还是一个新技术,但是已经有了明确的市场方向。
然而,由于JSP基于Java(并且几乎能做到Java可以做的任何事情,这就开放了一个巨大的API库以及类库)而且由于被称为标记库的JSP扩展使JSP能模仿ColdFusion的标记类型API,因此我们有理由认为,在未来几年中,JSP将成为Web脚本语言的核心。
还有更多种类的产品支持JSP,它们适用于高端应用服务器,这就让JSP开发人员能更容易地考虑扩展性和容错性。
由于JSP基于Java,而Java是一个功能强大的类型语言,所以当需要时我们就必须定义变量的类型。对于非程序员学习起来,这就是一个困难,尽管了解一些Java的人认为JSP几乎可以很快上手。
利用Java数据库连通性,Java具有一个灵活且完整的访问数据的API集。
在服务器端,我们测试了Apache 组织的免费 Tomcat 3.2 Beta 5版本。测试服务器是Linux的情况下,Tomcat的速度大约是每秒13页。
很不幸,Tomcat只具有很基本的性能监视器和管理工具(在Web上我们也许能找到一些beta产品),这与PHP类似。位于高端的基于Java的应用程序服务器则提供了丰富的管理工具。
尽管Sun的Java 1.0 Community 版本的长处是免费的,而且非常适于JSP开发环境,但实际情况是,在JSP领域,开发工具通常很短缺。
对于企业级开发,我们相信,JSP技术尽管很新,但仍旧是正确的选择,因为它使用了Java,而且许多应用服务器产品都支持JSP。Microsoft ASP
在团队开发环境中,微软公司的ASP(active server pages)语言是众所周知而且非常好的Web脚本技术,这也意味着ASP开发人员非常容易发现。由于ASP是随Windows NT 服务器和Windows 2000 Web服务器安装自带的,所以这项技术也是非常流行的。
由于支持未定义类型变量(untyped),ASP使得编程很简单。而且通过支持Microsoft COM(Component Object Model:组件对象模型)标准,它提供了访问巨量Windows API集的简单方法。这也是一个双刃剑,在提供简单访问强大的COM对象同时,ASP代码也很复杂而且难于编写。微软公司的ADO(Active Data Objects)COM接口提供了全面数据库访问API。
微软同样投入大量资金在ASP的clustering技术上,并且即将到来的微软应用程序中心服务器将提供对ASP站点的clustering技术和内容管理功能
编写ASP时使用VBScript语言,我们希望它具有try/catch关键字。没有这些,编写错误处理逻辑程序是非常讨厌的,因为我们必须手工检查看看是否发生错误(ASP也支持Jscript,它具有try/catch关键字)。
ASP开发工具是很多的,而且通常是很成熟的。我们使用微软公司的Microsoft Script Editor(随Microsoft Office自带)编写页面,发现这个工具非常有价值,因为它具有一个方便的编辑环境以及一个完整的调试器。
我们的ASP站点是运行Windows 2000的服务器,速度大约是每秒43页。
另见:ASP与JSP的比较
PHP
Php做为首选的Linux Web脚本语言迅速浮现出来。随着今年PHP4的发布,它尤其具备了大量的新功能,其中包括一个新脚本引擎和语言的标准化关键字部分(比如HTTP会话管理),这在以前是以add-on模块的形式存在的。
PHP开发小组的PHP语言是开放式的,并且可以安按照源代码形式下载。适用于Windows的预编译二进制码也是可用的,而且PHP可以工作在许多Web服务器上,包括Apache和微软的IIS。
PHP确实是几种强大功能的混和物,包括Perl、C、Java,甚至某些ASP,并且支持未定义变量使得开发工作简化。PHP非常易于扩展,由于源代码可用,使得各种各样的模块扩展程序被一大群人开发并贡献出来,这些扩展程序包括:数据库链接、邮件应用、XML解析器等等。
丰富的扩展也导致了缺乏API方面的一致性。用户们必须努力约定他们使用的PHP组件,从而有效跟踪相关的改变。
我们重点关注PHP在标准数据库API上的匮乏:为了访问Oracle数据,我们就必须直接编写调用Oracle8 API的代码,这使得页面很不轻巧并且增加开发费用。在这个领域正在进行一些研究,其中包括将Micorsoft的ADO转向PHP。
同样,PHP缺乏完整的开发环境工具以及调试程序(我们只能找到一个,就是Ives Development 公司的Nexidion Designer,它还停留在1.0版本)。
在测试的Linux服务器上,PHP拥有大约每秒47页的速度。