Perl、PHP、ASP、JSP技术比较

PerlPHPASPJSP技术比较

本文将对目前最常用的四种动态网页语言PerlPractical Extraction and Report Language)、PHPHypertext Preprocessor)、ASPActive Server Pages)、JSPJavaServer Pages)进行一些技术性的比较。

  Perl

  PerlPractical Extraction and Report Language)是一种很古老的脚本语言。最初的Web应用大多是用Perl编写的,Perl很像C语言,使用非常灵活,对于文件操作和处理具有和C语言一样的方便快捷。

  也正是因为Perl的灵活性和“过度”的冗余语法,也因此导致许多Perl程序的代码令人难以阅读和维护,因此使用的人在逐渐减少,并且目前有被Python替代的可能。

  另外Perl对于CPU的消耗似乎较高,效率似乎有一些不足。

  Perl开发的成功案例:

  Movable Type — 世界上使用最多的Blog系统之一,功能强大的足以和一个CMS系统相比拟。

  Awstats — 非常经典的日志系统,速度极快,功能也非常强大。

  结论:Perl在部分应用中能发挥很大优势,但其维护性差使得其普及变得很困难。

  PHP

  PHPHypertext Preprocessor)是一种嵌入HTML页面中的脚本语言。它大量地借用CPerl语言的语法, 并结合PHP自己的特性,使Web开发者能够快速地写出动态产生页面。

  PHP是完全免费的开源产品,不用花钱,ApacheMYSQL也是用样免费开源,在国外非常流行,PHPMYSQL搭配使用,可以非常快速的搭建一套不错的动态网站系统,因此国外大多数主机系统都配有免费的APACHEPHPMYSQL。通常认为这种搭配的执行效率比IISASPACCESS要高,而后者的使用还必须另外交钱给微软。

  PHP的语法和Perl很相似,但是PHP所包含的函数却远远多于PerlPHP没有命名空间,编程时候必须努力避免模块的名称冲突。一个开源的语言虽然需要简单的语法和丰富的函数,但PHP内部结构的天生缺陷导致了PHP不适合于编写比中小型业余网站更大的网站。

  PHP开发的成功案例:

  MediaWiki — 著名的维基百科(Wiki)程序,如此庞大的条目居然只用PHPMYSQL就能够支持,真是不可思议。

  WordPress — 著名的Blog系统,功能上丝毫不输于Movable Type,不少用户都纷纷从Movable Type转移到了WordPress

  结论:PHP语法简单,非常易学易用,很利于快速开发各种功能不同的定制网站,PHP因为结构上的缺陷,使的PHP在复杂的大型项目上的开发和维护都比较困难。

  ASP

   ASPActive Server Pages)微软的Windows IIS系统自带的脚本语言,利用它可以执行动态的Web服务应用程序。ASP的语法非常类似Visual BASIC,学过VB的人可以很快上手,ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。

  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。

  ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASPCOMSQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHEMYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。

  不过,正因为ASP很简单,所以单纯使用ASP所能完成的功能也是有限的,好在COMComponent Object Model)技术拯救了ASP,微软提供了COM/DCOM技术,极大拓宽了ASP的应用范围,使得ASP几乎具有无限可扩充性。

  结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOMMTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。

  JSP

  JSPJavaServer Pages)是Sun公司推出的一种动态网页技术。JSP技术是以Java语言作为脚本语言的,熟悉JAVA语言的人可以很快上手。

  JSP本身虽然也是脚本语言,但是却和PHPASP有着本质的区别。PHPASP都是由语言引擎解释执行程序代码,而JSP代码却被编译成Servlet并由Java虚拟机执行,这种编译操作仅在对JSP页面的第一次请求时发生。因此普遍认为JSP的执行效率比PHPASP都高。

  JSP是一种服务器端的脚本语言,最大的好处就是开发效率较高,JSP可以使用JavaBeans或者EJBEnterprise JavaBeans)来执行应用程序所要求的更为复杂的处理,但是这种网站架构因为其业务规则代码与页面代码混为一团,不利于维护,因此并不适应大型应用的要求,取而代之的是基于MVCWeb架构。MVC的核心思想是将应用分为模型、视图和控制器三部分。模型是指应用程序的数据,以及对这些数据的操作;视图是指用户界面;控制器负责用户界面和程序数据之间的同步。通过MVCWeb架构,可以弱化各个部分的耦合关系,并将业务逻辑处理与页面以及数据分离开来,这样当其中一个模块的代码发生改变时,并不影响其他模块的正常运行,所以基于MVCWeb架构更适应于大型应用开发的潮流。

  因此,不少国外的大型企业系统和商务系统都使用以上的MVC架构,能够支持高度复杂的基于Web的大型应用。

结论:JSP对于网站开发来讲不像PHPASP那样易学易用,支持JAVA的主机也少于支持PHP的主机,这从一定程度上限制了Java技术在网站上的发展,不过在企业软件应用上来讲,MVC还是拥有相当大的优势的,虽然其配置和部署相对其他脚本语言来说要复杂一些,但对于跨平台的中大型企业应用系统来讲,基于JAVA技术的MVC架构几乎成为唯一的选择。

 

 

asp,php jsp 比较 之我见

 

几种流行的动态网页制作语言的比较
现在InterNet 越来越成为生活中不可或缺的一部分,制作网页的动态语言也越来越多,主要流行的有以下几种,ASP,PHP JSP,他们之间互有优缺点,笔者在工作实践中对他们作了一下比较浅显的比较。

ASP
由于其简单功能实用等方面受到广大朋友的喜欢,再加上MS的强有力支持,可以说是时下作站点最为流行的语言,他借助MSCom+ 技术,几乎可以实现在C/S 能够实现的所有功能,可以说确实具有相当的竞争力。ASp的代码实现也很简单,MS 提供的InterDev RAD 的基础上,使Asp 的开发一夜之间火遍了大江南北。但是他的缺点是,由于MS 长久以来的霸道作风,他只能运行在MS 的平台上,因此在关键性的应用上使人难以轻易接受。

PHP
则市秉承Linux GNU 风格,借助与源码公开,使他迅速成为世界上目前应用最为广泛的站点制作语言之一。借助与C++的形式,引用类的概念,使得代码的可重复性应用便的异常简单。加上他和Linux,Apache MySql 的紧密配合,关键性的应用也没有问题(有名的Sina就是采用Php)。但是他有一个比较大的麻烦,就是没有一个非常有实力的公司专门给他做支持,因此相关的学习资料比较少,目前在国内使用他的站点比较多,但是专门讲解他的站点就比较少。给初学者带来了很多的麻烦。

JSP
Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病--脚本级执行(据说PHP4 也已经在Zend 的支持下,实现编译运行).Sun 公司借助自己在Java 上的不凡造诣,将Java Java 应用程序 和 Java Applet 之外,又有新的硕果,就是Jsp--Java Server PageJsp 可以在ServerletJavaBean的支持下,完成功能强大的站点程序。 我在实际工作中,就这三种语言的性能进行了比较首先进行的是循环性能测试

首先测试的是Jsp
测试采用 20000*20000 次循环运算(有没有搞错,这么多),测试结果另人不可思议
,该程序只用了不到 4 秒的时间就运行结束了。(没有搞错吧),程序代码如下:

<jsp:useBean id=´clock´ scope=´page´ class=´dates.JspCalendar´ type="dates.JspCalendar"/>
<jsp:getProperty name="clock" property="time" />
<%
int i=0;
int j=0;
int k=0;
for(i=0;i<20000;i++){
for(j=0;j<20000;j++){

}
}
%>
<jsp:useBean id=´clock1´ scope=´page´ class=´dates.JspCalendar´ type="dates.JspCalendar"/>
<jsp:getProperty name="clock1" property="time" />

下一步测试的是 PHP,最初也准备测试 20000*20000次,但是不管把程序最大运行时间调的再大,
也无法运行结束,因此改为 2000*2000 ,运行时间竟然达到 84 秒,程序代码如下:

<?
$TTime=date("Y-n-d"). " " . date("H:i:s");
echo $TTime;
echo "<br>";
for($i=0;$i<1000;$i++){
for($j=0;$j<1000;$j++){
}
}
$TTime=date("Y-n-d"). " " . date("H:i:s");
echo $TTime;
?>

最后进行的是Asp 的测试,测试的循环也是 2000*2000(几个0可要看清楚),运行时间是 63 秒,程序代
码如下:

<%
response.write now
response.write "<br>"
for i=0 to 2000
for j=0 to 2000
next
next
response.write now
%>

另外,我也对数据库连接作了测试,由于Jsp 在连接数据库时需要通过 JDBC,因此必须专门为此作一个连
数据库的JavaBean,为了简单起见,我只把测试结果写出来,想要代码的朋友,和我联系!
Oracle 8 进行 1000 Insert,Update,Select,Delete
Jsp
需要 13
Php
需要 69
ASP
需要 73
以下为网有评论

我想是不是有人在故意抬高某语言的价值,2000*2000php里我只用了4秒钟而不是文章所说的84秒,我用的是98+apache1.3.14,机器配置是p2 400,也就是联想的奔月2000型。
2000*2000
asp里我也只用了4秒钟,有时只要3秒钟,但是20000*20000aspphp里就都超时了。
至于jsp我还没有这种环境,所以也就不好说了。
大家可以自己测试的。

macro

我想上面文章的测试只是个人测试,提供参考。应该不存在什么故意误导的成分。
另,上面文章 JSP 的测试应该是在JSP编译后做测试的,JSP第一次运行时间是很慢的。

amtd

我认为这样的测试耗无价值,还会误导。

随便想想都可以看出来,这么简单的语句

就算对phpasp来说,解释的时候并不是耗时的。

而读数据库的时间是起绝对作用的,现在的连接数据库的原理都差

不多,有能有什么差别呢?应该是时间一样,绝对不超过+(-)5%

我从来没有看过sun发表过关于这样的测试,而且这个测试我认为

是没有经过比较细致的设计的,单单从一个简单的循环就能有比较结果
简直是笑话!说个不负责任的话,谁闲着没事写个页面作这样?
况且,单线程的循环,能有这么大的差别?我的意思是说这样的测试结果对实际中有什么价值?就如同我们不会去sina排队打开网页一样。重要的是并行访问的效率!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值