月光博客

青青子衿, 悠悠我心, 但为君故, 沉吟至今

« 深圳人均GDP之谜Java开发环境的配置心得 »

Perl、PHP、ASP、JSP技术比较

  本文将对目前最常用的四种动态网页语言Perl(Practical Extraction and Report Language)、PHP(Hypertext Preprocessor)、ASP(Active Server Pages)、JSP(JavaServer Pages)进行一些技术性的比较。

  Perl

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

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

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

  Perl开发的成功案例:

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

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

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

  PHP

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

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

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

  PHP开发的成功案例:

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

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

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

  ASP

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

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

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

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

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

  JSP

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

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

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

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

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



原创文章如转载,请注明:转载自月光博客 [ http://www.williamlong.info/ ]

本文链接地址:http://www.williamlong.info/archives/460.html
  • 文章排行:
  • 2.大锅
  • 写得好。对于企业级应用,asp/jsp 是唯一的选择。相对于其他的技术,asp/jsp 在数据库的支持做得出类拔萃。
  • 2006-4-3 23:14:03
  • 4.百运隆
  • 我正要入门,还不知道学什么,看起来jsp最有前途,呵呵
    才看到这个文章,真是好地方。
    普通的购物网站BtoC的哪种。用jsp合适吗?
    jsp一般配哪种数据库呢?PHP+MYSQL,但好像没有写jsp,是不是配access啊?

    各位老师能帮回答下吗,衷心感谢!
  • 2006-4-30 4:31:15
  • 5.网络游侠
  • 本文看似有点水平,其实是不了解技术的根本。ASP早就过时了,JSP对于商业网站开发是可以,也就是愿意花钱,而对于一般的网站根本没有必要使用,因为(1)开发有相当的难度;(2)服务器配置不容易;(3)不懂java就别学jsp。所以我个人认为入门最好学PHP,PHP不象本文所说的那样,我已经开发了6年了,非常好使。
  • 2006-5-7 17:50:53
  • 6.williamlong
  • http://www.williamlong.info
  • 你说的我不赞同。正如我文中说的,ASP有COM技术,JSP有javaBean和EJB技术,而PHP没有对应的技术,因此用PHP进行中大型项目的开发会比JSP甚至ASP困难。我使用PHP的过程中也感觉其代码较JSP和ASP难以维护。
  • 2006-5-7 18:48:34
  • 7.uu
  • 1、正如文中所说,ASP不能跨平台是致命的,不是重视版权的人的首选,国外多数选PHP就是例证,国内为什么ASP用得多一点,文中已经说得很清楚了;
    2、ASP的COM有多少人能用上,做网站的人一般只用到一些基本的东东,许多功能强大一点的CMS系统都同时送一个*.dll的文件给你,服务商可不是随便就同意给你安装的;
    3、中小型应用PHP是首选;大型商业应用JSP是首选;那么ASP只能是鸡肋了。
  • 2006-5-8 23:34:55
  • 8.uu
  • 前面只是针对前面一些过激说法而已。
    下面发表本人意见:
    用哪种语言开发都无所谓,看你自己的基础和你的工作相关。
    你学过C,那么PHP很容易上手;你学过VB,那么ASP是首选;如果你想从事电子商务和大型商业应用的开发,不管多难也要上JSP,也不管微软怎么挤压JAVA,到国外看看就知道了。
    最后一句,干嘛要争论这种东东呢?
  • 2006-5-8 23:47:22
  • 9.robortluo
  • 博主这篇文章要是2004年发表的话价值会高一点,可惜2年以来,web开发特别是 Java web 框架和思路已经改朝换代好几次,现在还在用 jsp 来作为 java web框架的主流学习那真是太浪费时间了。新进入 java web编程的程序员可以参考:
    *所谓企业级技术的ejb和as基本没有用。现在大家的认识是轻量级的容器是最好的,请参考 springframework 和 hibernate。
    *jsp中的控制结构、直接内嵌代码等东东最好别碰。目前最好的开发框架包括 tapestry/webwork(xwork)都是基本不用jsp的。即使 jsf, struts等框架也是只建议使用 tag library,程序框架是mvc模式,jsp即使使用也仅仅限于显示层。
    *如果想要快速开发的话,ruby on rails 应该是最快的方法,而且也相当酷。
    *即使是 php 目前也已经过渡到 mvc 模式为主,比传统混一式写法要清楚和容易维护很多。
    * 用perl这样的语言来写 cgi 进行web开发,一般仅仅在某些特定 perl语言(比如字符处理)领域进行,从技术选择上远远不能和其他 web 开发方法相比。
  • 2006-5-22 5:35:09
  • 10.偏激
  • 观点陈旧了。

    用C语言也能开发出面向对象的程序来,只是耗费更多的时间。
    用PHP也可以写成组件的模式,关键是你能懂得整套体系架构。

    没有任何技术是所有SP,OOP,AOP,只有懂得技术的人才是这样子的。所以,关键是人,而不是技术。

  • 2006-5-26 12:26:03
  • 11.mjsam
  • asp.net 2.0是非常强大的,可惜国内高手太少。

    PHP+MYSQL是很适合小型网站使用的,但如果你的网站流量增大到一定程度,他的弊端就会显现。PHP的开发入门虽然容易,但以后扩展起来不方便。
  • 2006-6-21 11:16:25
  • 12.peterzhang
  • 楼主的文章想必不是原创吧。我在很多地方看到这个东西。

    说asp+com如何如何好的人,还生活在上个世纪。试想一下,如果真有那么好,微软为什么还要搞.net?asp在2000年之后就没有做过任何升级,漏洞百出,安全性极差,用com还存在dll陷阱的严重问题。看看有几个空间商愿意让你装dll?

    现在的PHP绝对是asp的最佳接班人,上面对PHP的那些指责,早在PHP4.2版本之后就不存在了。php现在的运行速度比asp快很多,安全型很搞。php可以支持组件,不但可以支持com,甚至可以支持更优秀的javabean。搞个中小型的专业项目比asp强多了。

    搞大型项目只有J2EE可以选择。

    asp+com根本就算不上档次,已经过时了!
  • 2006-8-4 10:17:12
  • 14.hellworld
  • ASP+COM成熟,安全性不太好,但PHP的安全性也未必就能好到哪里去吧,例如phpBB漏洞不是也很多,另外你在其他地方看到的都是未标明出处的转载我的文章。

    phpbb == php 吗?
  • 2006-8-31 17:05:05
  • 18.fidy
  • 语法冗余我的理解就是同样一个表达式可以有多种写法,这样开发的灵活性虽然大,但是也令代码看起来不太规范,perl的这个特性使项目维护起来比较费劲,而且程序看起来歪歪扭扭,如果使用框架开发如Sledge效果会好一些。

    如果william了解PHP5和Zend FrameWork(或者其他框架)的话,就不会这样评价php了,任何技术都是在不断发展的,何况php是开源的,"开源"比"免费"更有价值,他令php的变化日新月异。可惜大部人是死脑筋,只会按照人家圈定的框框思考和做事,并且乐此不疲,唉~
  • 2006-10-4 1:51:16
  • 20.linux
  • 初学者用asp也没什么不好的,确实从难易程度上来说asp最容易,其次php,java最难。
    而一般的网站用那种语言都可以做的很好,访问量不大到一定程度都差不多。就开发速度上说asp最快也最容易理解。 其实.net则是更好的选择,不过现在更流行linux + apache + java
  • 2006-12-8 15:51:36
  • 21.sagittaquas
  • 呵呵,楼主在误导人了.
    这种文章的意义估计就在于让学各个语言的人多了解一些其他语言的有点,哈哈。
    不过,现实是残酷的,看看各个公司在用啥吧,去人才招聘网查查,有几个像样的公司专门招asp的?perl的?asp的只能是维护旧产品了。很多人转了.net,这个还是很多公司用的,所以学asp?入门可以,吃饭就免了。hoho。
    php,我用的这个,不过如果继续编码,也要学学其他语言了,虽然不一定完全放下它,尽管淘宝,新浪,chinaren在用它。不为别的,多点机会,多点money,多点知识。固步自封,没啥好处。
    java,虽然没学过,没用过,但也和同事讨论过,上面有人说轻型化,比较赞同。实际的需求才是决定一切的关键,而实际的需求都是比较固定的,没必要支持一切,hoho。可以任意剪裁又能够无缝接合且没有损失的积木才是最好的选择。java在这方面确实很强,而且近年的发展、大量的支持使java有了很大的发展,一些弊端、缺陷也得到了很大的改善,应该是很成熟了:P

    如果新人要学web开发,如果你对自己有较高的期望,学java是一种趋势(太多人竞争也是个弊端),但是有个忠告,学啥最好都要学精!~
    再说,这些仅仅是编程语言,实在是冰山一角。岂不闻大名鼎鼎的dba,系统分析师,系统架构师,等等等等。。。。。。

    上面有人说php不易维护,这个东西没啥实际意义。如果我给你两套不同语言开发的同一个系统,一个是java的,一个是php的,java的没有设计文档,php的有完整设计文档。那么,哪个更容易维护?都有文档,都有良好的编码规范,风格,架构的,其实也差不多,当然,php要比java差些,但是你的各种设计文档可以弥补到足以让你感觉不到。

    想进这个门的人,基础知识最好补一补,c语言是必看的,它会让你的代码不会被别人骂成垃圾,让你有机会了解更多东西;java,大家都赞它的架构、思想,这么多人赞,仔细看看没错的;相关的基础课程书最好也都通读一下,觉得主要的就深入一下,一点不了解这些基础知识你就只能混日子。

    当然,如果仅仅个人兴趣,想自己做点东西的,初学php会让你快速得到成果,而且没必要太深入,广、泛是比较好的选择。

    如果是喜欢研究,那什么语言都无所谓了,仅仅因为那是个人爱好:P哈哈
  • 2007-2-1 10:50:16
  • 22.我也说一下
  • 大哥们,先别争了,先到baidu上搜索一下index.asp,再搜一下index.php,再搜一下index.jsp 看看使用数量。

    再到google上搜一下index.asp,index.php,index.jsp 绝对和百度不一样。你们看看结果,再慢慢争吧。
  • 2007-4-10 8:39:18
  • 23.我也说一下
  • 千万别说php哪哪哪不好,你看看实际使用数量后再争,不要以自己观念来约束别人,现在web使用量PHP绝对是最多。不信可以搜,搜国际的,可别只搜国内的。
  • 2007-4-10 8:41:20
  • 25.test
  • google
    801,000,000 php
    91,000,000 asp
    42,100,000 jsp
    4,780,000 aspx

    baidu
    3,670,000 asp
    830,000 jsp
    9,890,000 php
    879,000 aspx
  • 2007-4-25 9:27:36
  • 27.ggfgf
  • 昨天学了asp,今天asp被淘汰了,还得学asp.net,明天asp.net被淘汰了,又得学asp.php.net,微软的东西象流行歌曲一样,你总有精力去追流行吗?为什麽很多外国人都改学php了呢?快醒醒吧!愚昧的追行(流行)族.
  • 2007-5-15 15:53:13
  • 28.ss
  • 这个其实也没有什么好争辩的。适合最好。做一般的网站开发确实不需要Java或是ASP.NET。可是作为大型的商业应用来讲Java或是ASP.NET就是不二之选。现在国内对于正真软件架构设计的人确实不多。天天都在语言之争。
    至于在google上搜索PHP或是其他语言只证明现在某个语言的发展和流行。关键在于我们真的有站在高度看语言的人吗?有人不经过架构设计就盲目编程的吗?也许这就是商业和开源的区别。
  • 2007-6-23 18:53:59
  • 29.真理越辩越明
  • 我是做ASP编程的,日益感到压力,毫无疑问,ASP真的在慢慢的衰老.我现在想另学一门语言,一直不知道学JSP好还是PHP好,看了各位的争辩,我想我找到了答案,我不发表任何看法.因为我对别的语言都不清楚.但反对叫停争辩的,这样的争辩真的很有意义.
  • 2007-6-28 19:07:56
  • 31.xxx
  • 目前php用的最多
    当然这不代表将来一定最多

    php适合中小应用
    asp也同样适合,并且比php跟容易上手

    如果国内用asp都要花钱的话 显然大家都会去用php的

    至于。net和java,不应该拿来跟php、asp比
    应该用ruby、python
  • 2007-8-9 17:02:14
  • 32.火龙
  • 很高兴看到这篇文章,我也是为选LAMP中的P在烦恼。
    根据我的研究,如果你要做一个项目,成本低,php是最佳答案。
    另外,针对php的一些问题我提供如下资料:
    2007年7月php 6开始开发,会加入名称空间,直接帮助月光免除文章中的顾虑。另外,php是OO语言,执行方面php5可以生成字节码bytecode然后交由zend engine II执行,感觉类似java和.net的JIT。从历史上看,php 本身就是为处理超文件html设计的,运用广泛。
    下面是php6中将会进行的改进:
    * Namespace support will be added.
    * Native Unicode support will be added.
    * The magic_quotes option will be removed.
    * The HTTP_*_VARS global variables will be removed.
    * The register_globals option will be removed.
    * The safe_mode option will be removed.
    * Late static binding will be added.
    另外,jsp和asp.net(asp已经淘汰了),jsp我不太清楚。可以说说asp.net,asp.net有所有易用性的优势,但缺点也明显,用户完全绑定到微软的平台,具有所有微软的缺点和优点。
    我的选择,php可以满足绝大部分的要求。
  • 2007-9-7 22:08:27
  • 37.gino
  • 在学JSP 不过学校开了ASP 感觉ASP确实很容易上手 但是漏洞什么的都不说了 至于有人说在GOOGLE和BAIDU搜索 感觉没有实际意义 你数量再多也不一定有访问量 而且数量多的原因是什么 是因为没资金 而且网站比较小
    不需要用到更大的东西 虽然没看过PHP RUBY .NET方面的东西 但是任何东西存在是有它的理由的 不过什么时候会被淘汰或者怎么什么 但至少现在它还在 而且任何东西都不是一成不变的 10多年的JAVA有几个能看到它现在的境况 所以用发展的眼光看一下 学什么东西把握两点就好
    1,兴趣 是的 你没兴趣你学起来也没劲 而且你也学不到什么需要的东西 因为你根本没把心思放上面
    2,目的 如果只是玩玩 业余爱好 不是拿来当饭碗 那么虽然选吧 学的进去就学 学不进去那你估计也没那爱好了吧 所以要当饭碗就得看行情
    有人老说国外怎样怎样 那么你是住在国外么 不是 那么你为什么不说点符合中国国情的呢 你不知现在河蟹大兴其道 你不技术的进步不是一天两天 不是一人两人的事么 所以争论是没意思的
    好好把握现在吧 你懂了 你悟了 你的眼睛看到了未来 但是你和别人说别人能懂么 能悟么 能看到未来么 SO DO IT YOURSELF!
  • 2007-10-27 19:28:14
  • 38.koobar
  • http://www.sangsui.net
  • 偶看了心痛,用了asp三年了都,jsp学了个半瓶逛荡,混日子啊!
    偶是那种笨笨的人,但又赶上这趟车,没办法,学.net最直接觉得,没jsp发展的快,一会要学这一会要学那的!
  • 2007-12-28 17:56:08
  • 39.falcon
  • 24楼那种搜索方式存在问题吧,很明显的一个问题,jsp只是java Web开发的一部分,现在大部分使用Servlet的Web应用并不需要以jsp作后缀,我觉得要应该把java的Web开发技术综合在一起才有说服力,因此我对java的排名持怀疑态度
  • 2008-1-14 9:23:32
  • 42.wesnow
  • 只能说博主对PHP的了解还停留在PHP刚出现时的状态,十几年了,你真以为PHP还是那样的吗?
  • 2008-5-1 16:01:50

发表评论:

◎声明:转载本文时请务必以超链接形式标明文章原始出处和作者,本文严禁商业网站转载。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 通过Google订阅本站
  • 通过鲜果订阅本站
  • 通过抓虾订阅本站
  • 通过电子邮件订阅本站

站内搜索


热文排行

最新评论

最近发表

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.

This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.