比较PHP和JSP这两个Web开发技术.docx
《比较PHP和JSP这两个Web开发技术.docx》由会员分享,可在线阅读,更多相关《比较PHP和JSP这两个Web开发技术.docx(25页珍藏版)》请在冰点文库上搜索。
比较PHP和JSP这两个Web开发技术
比较PHP和JSP这两个Web开发技术,在目前的情况是其实是比较PHP和Java的Web开发。
以下是我就几个主要方面进行的比较:
一、语言比较
PHP是解释执行的服务器脚本语言,首先php有简单容易上手的特点。
语法和c语言比较象,所以学过c语言的程序员可以很快的熟悉php的开发。
而java需要先学好java的语法和熟悉一些核心的类库,懂得面向对象的程序设计方法。
所以java不如php好学。
Java首先要编译成字节码.class文件,然后在java虚拟机上解释执行。
Java的Web开发首先最容易想到的就是JSP(现在已经到JSP2.0),原来的java的Web开发都是用servlet来实现的,用servlet来开发需要程序员在java的源文件中嵌入大量的html代码。
所以后来就出现了JSP,JSP可以方便的嵌入到html文件当中,其实jsp文件在服务器上执行的时候首先会被应用服务器转换成servlet,然后再编译执行。
Jsp可以通过servlet和JavaBean的支持产生强大的功能。
JavaBean是一种可复用的、跨平台的软件组件。
使用javabean可以方便的实现java代码和html的分离,能够增强系统的功能和软件的复用性。
Java的Web开发属于SUN公司定义的J2EE其中的规范。
而且在J2EE中包括了java的Web开发的所有方面,如:
JSP、Servlet、JDBC、JNDI、JAVABEAN、EJB等等。
J2EE就特别适合于做大型的企业级的应用。
二、数据库访问比较
Java通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库。
访问数据库的接口比较统一。
PHP对于不同的数据库采用不同的数据库访问接口,所以数据库访问代码的通用性不强。
例如:
用Java开发的Web应用从MySQL数据库转到Oracle数据库只需要做很少的修改。
而PHP则需要做大量的修改工作。
三、系统设计架构比较
采用Java的Web开发技术,需要使用的是面向对象的系统设计方法,而PHP还是采用面向过程的开发方法。
所以用Java进行开发前期需要做大量的系统分析和设计的工作。
PHP只能实现简单的分布式两层或三层的架构,而JAVA在这方面就比较强大,可以实现多层的网络架构。
数据库层(持久化层)、应用(业务)逻辑层、表示逻辑层彼此分开,而且现在不同的层都已经有一些成熟的开发框架的支持。
例如Struts就是利用java的Web开发技术实现了MVC的设计模式,而在业务逻辑层也有Spring框架,数据库持久化层有Hibernate等框架。
这些框架可以方便开发者高效、合理、科学得架构多层的商业应用。
分层是将系统进行有效组织的方式,分而治之的思想是计算机领域中非常重要的思想。
在好的分层思想引导下,便能实现“高内聚、低耦合”,也能将具体的问题割裂开来,易于控制、易于延展,更易于分配资源。
PHP只能实现简单的分布式两层或三层的架构,而JAVA在这方面就十分强大,可以实现多层的网络架构。
运用MVC的设计模式,可具有更加高效、合理的系统架构。
使得系统在可拓展性、需求应变性上更好的适应,而且项目越复杂,其优势越明显。
四、跨平台性
Java和PHP都有很好的跨平台的特性。
几乎都可以在不作任何修改的情况下运行在Linux或者Windows等不同的操作系统上。
五、开发成本比较
PHP最经典的组合就是:
PHP+MySQL+Apache。
非常适合开发中小型的Web应用,开发的速度比较快。
而且所有的软件都是开源免费的,可以减少投入。
Java的Web应用服务器有免费Tomcat、JBoss等,如果需要更好的商业化的服务有:
WebSphere和Weblogic。
六、源代码安全
PHP开发的程序的源代码都是公开的,他人拿到php开发的程序后都可以进行修改。
Java开发的程序,最后用户拿到的是只是一些编译好的class类,无法看到完整的源代码,安全性高。
如果非要将PHP和JAVA在安全性上做个比较的话,同一个小偷光顾PHP那是随便拿来随便改,想拿什么拿什么,拿的高兴还能大笔一辉某某到此一游。
而光顾JAVA的时候,便会发现警察把守,内设自动报警装置,即便突破重重阻扰后进入居室。
那值钱的东西都放在加密后的保险柜中,只能望洋兴叹、铩羽而归。
七、性能比较
有人做过试验,对这两种种语言分别做回圈性能测试及存取Oracle数据库测试。
在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了20000*20000的回圈。
而PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒。
数据库测试中,二者分别对Oracle8进行1000次Insert,Update,Select和Delete:
JSP需要13秒,PHP需要69秒。
项目
PHP
JAVA
可复用性
低
高
开发速度
快
慢
易维护性
差
优
可移植性
优-Linux
Windows、Unix
安全性
低
高
开发费用
低
高
多层架构
差
优
数据库访问
接口不统一
接口统一
可扩展性
差
优
面向对象
差
优
八、网站数量:
世界有70%以上网站都是用PHP开发的。
安全性保密性较高的大型商用企业主用JAVA。
Java开发分布式大型系统:
l金融机构大系统
l工商银行
l手机软件
l阿里巴巴
l支付宝
l易趣(java为主)等
PHP开发网站:
l淘宝网
l前程无忧(51job)
lMySQL官方网()
lPHP官方网()l等
多语言混合使用的网站:
l搜狐(JAVA、PHP)
l新浪(JAVA、PHP和CGI)等
从整体来说,PHP适用于中小型系统,而JAVA适用于大型系统。
PHP能够将单一的事件做好,但却不适合完成集成度较高的多项并发事件。
为什么说PHP适合中小型系统而不适合做大系统呢?
首先,PHP缺乏多层结构支持。
而对于大型的系统负荷站点,只能采用分布计算。
将数据库、应用逻辑层和表示逻辑层彼此分开,并将同层的根据流量分开,而PHP恰恰缺乏这种支持。
其次,PHP提供的数据库接口不统一,要将多个不同的数据库数据统一需要花费很大的力气。
而JAVA则没有这种缺陷,可通过SUNJAVA的JAVAClass和EJB获得规模支持,通过EJB/CORBA以及众多厂商的ApplicationServer获得结构支持。
如ProBIZ的Merchantone电子商务软件产品系列。
如果将PHP比作将才,具备独挡一方的能力。
那么JAVA便是帅才,具有较好的前瞻性和拓展性,整体布局和协同能力强。
综上所述,PHP适合于快速开发,中小型应用系统,开发成本低,能够对变动的需求作出快速的反应。
而Java适合于开发大型的应用系统,应用的前景比较广阔,系统易维护、可复用性较好。
还有,同样功能的系统用Java开发的系统要比PHP开发的系统的价格要高。
PHP是一种解释执行的脚本语言,语法和C语言类似,易学易用,不懂电脑的非专业人员稍经学习也能使用PHP.而Java要先编译成Class文件,然后在Java虚拟机上执行,Java开发需要熟悉Java语法以及一些核心的架构,从而实现一种可复用的、跨平台的软件,Java比PHP要难学的多。
实际上,从技术架构来说,Java语言相比PHP有明显的优势,Java使用的是面向对象的系统设计方法,而PHP还是采用面向过程的开发方法。
PHP只能实现简单的分布式两层或三层的架构,而JAVA可以实现多层架构。
数据库层(持久化层)、应用(业务)逻辑层、表示逻辑层彼此分开,而且现在不同的层都已经有一些成熟的开发框架的支持。
例如Struts就是利用Java的web开发技术实现了MVC的设计模式,而在业务逻辑层也有Spring框架,数据库持久化层有Hibernate等框架。
这些框架可以方便开发者高效、合理、科学得架构多层的商业应用。
从数学运算和数据库访问速度来讲,Java的性能也优于PHP.实际上,对于跨平台的大型的企业应用系统来讲,Java几乎已经成为唯一的选择(微软.NET不支持跨平台),但是在于Web网站应用开发来讲,Java却面临着被PHP边缘化的危险,几乎所有的虚拟主机都支持PHP+MySQL,而支持Java的却少之又少,在资源上,网上有不计其数的PHP资源,很多著名的大型网站(例如Facebook、Mediawiki等)都是基于PHP的,而成功的Java网站却寥寥无几,这又是什么原因呢?
Java的理念是“一次编写,到处运行”,Java在应用框架底下的架构是无与伦比的,远胜过其他任何语言,Java的框架利于大型的协同编程开发,系统易维护、可复用性较好。
而PHP很容易自学,让热备能快速简洁地编写代码,适合于快速开发,中小型应用系统,开发成本低。
在调试、发布上,PHP也较Java简单。
理念上的不同导致了Java和PHP在Web应用开发上显示了不同的结果,尽管Java的数学计算和数据库访问都有优势,架构也相当完美,但是PHP却可以简单轻松地支持高强度Web访问,能够快速开发应用,支持PHP的虚拟主机多如牛毛,使得用PHP开发一个网站比用Java开发一个网站要快得多,容易的多。
Java所拥有的优点只适合传统的以软件项目为核心的开发模式,而PHP更适合于以客户为核心的SaaS的开发模式,因此,PHP目前在Web网站开发的优势完全是因为Web网站开发的特殊性而导致的,并非编程语言特性所决定。
-------------------------------------------------------------------------------
大家现在有一个误区应该走出来,到今天了别把php,jsp,asp混为一谈。
web程序的发展第一阶段是
静态的html,由于静态画面维护起来特别不方便,更新也非常麻烦,页面的表现力估计比txt强也强不多少。
于是为了动态表示html出现了cgi
也就是说cgi是web发展的第二阶段。
cgi的问题是所用的语言不是面向web开发的,如c等。
cgi无非就是运行在服务器的一个程序与网络传输关系不大。
这种cgi对于每个请求都会启动一个进程,很容易就把服务器搞崩溃。
于是cgi淡出了历史舞台于是乎web进入了asp,jsp,php时代,asp,jsp,php争了这么多年,说实在的都是一个熊样,基于http协议的动态网页,其实就是写法不同都是一个意思。
效率也分不出谁高谁低。
asp,jsp,php时代暴露出的问题就是,用此类语言很难开发大型的商业网站,由于结构不分明造成了无法分散开发,只能做一些小规模的项目。
对于现在10000人月以上的项目几乎没法顺利进行。
于是jsp,asp分别靠j2ee,.net变成了针对企业级应用开发的技术。
而php依然走其老路线~
发展到今天的这种局面,可谓这三种生命力极强的语言有着各自的特色。
j2ee提出了一个伟大的构想吸引了大批的java爱好者开发出了各种开源资源,使开发越来越方便。
asp有微软用.net框架支撑着。
php则很有趣,你可以选择很好的一个模板然后用php稍加改造就成了一个应用,也就是说php继续沿袭着jsp,asp时代的老路把它发扬光大。
说到这儿来比较吧,有人说jsp不就是来做web的吗,是啊!
是来做web的,你用10年前的技术做web很有趣吗?
有了j2ee,.net可以说jsp,asp已经给php让路了,在这个级别上谁也斗不过php。
但是如果用到企业级应用,及业务流,工作流复杂的大型商网的开发,没有那个公司会投资几千万去用php做的。
明白了么,这就是php的死穴。
再说我为啥不喜欢.net尽管我做了3年,在我职业生涯中使用最长的技术我却始终对之不屑。
因为首先开发工具就要钱,然后插件要钱,相配套的db大多用sqlserver吧要钱,服务器用windowsserver版吧,操作系统超级贵。
谁愿意吹捧这种自私的技术呢。
回头看看j2ee和php尤其是j2ee他是由喜欢技术喜欢java的人来支持的,几乎都是开源,你想学习就学习,你想商用就商用,一切都是哥为你服务的态度。
为啥不喜欢java呢?
php也大多数都是开源的,我下一步就要研究一下这个为百姓造福的语言。
据说cakephp不错,我准备做点儿东西。
说的太多了,言多必失,本人工作仅5年多一点,没有那么多的经验和阅历,自己写写体会而已。
我只想说,现在流行的技术一定有它的道理,比较本身就没啥意义。
最简洁的答案就是各有千秋~
但每个人心里都有一杆失准的秤,偏向某一方。
但是我觉得单纯的asp,jsp可以退休了,原因是没用!
要比较请比较php,j2ee,
随着所谓WEB2.0时代来临,程序员从来没有象今天那样受人注意,很多程序员对于语言的争论也从来没有象今天这样剧烈,Java、C++、PHP、ASP等等,最近又出来一个Ruby,加上Python。
无数的FANS在中间进行争论不休,也就是在internet上,如果是在现实生活中,大概会象《倚天屠龙记》里描述的那样,会决战光明顶来定一个胜负,或者说定出天下第一大门派。
人民群众是很爱戴PHP的。
至少在我看来。
没接触过PHP项目,但是身边的PHP项目越来越多,虽然都是小公司,还听说PHP很火,500W招高级PHP程序员--不知道是不是那CEO前一天晚上洗澡脑子进了水,或者薪水是越南盾之类的~
偶在GoogleGroups上转,想找到说服自己的答案,找了很多developer问,PHP、ASP与Java,他们之间谁更好?
Generallyspeaking,theywouldsay,ASPout,Microsoft出的垃圾,PHPandJavaaregoodchoice,Java适合做大项目,PHP适合做一些短平快的东西。
的确,世界上最大的C2CeBAY,就是用Java的,中国最大的社区ChinaRen校友录也是Java---而很多小的网站,初期都是PHP,后来各种原因都必须改到Java上面去。
这种感觉就是像说,如果你想学武功以便出去砍人,或者说在江湖扬名立万,那么军体拳你就不用练啦,这个东西是GOV拿出来强身键体的,五虎断门刀这个东西你用来对付一般的流氓是绰绰有余,但是碰到绝顶高手你就歇了。
而Java有点象太极拳,当今武林最大的门派之一SUN的首推武功,是对负高手的不二选择,于是很多人就认定:
PHP是低等武功,练到最好的结果也就是给赌场看看场子,只有练就Java才能做武林盟主。
看网上说,很多人都有这种心理,他是使用Java的,而你如果让他写PHP,,很多人会有一种受到侮辱的感觉,不是觉得经理不重视他,就是在想自己什么时候得罪了经理,竟然被发配到PHP这种偏远的小地方去了。
越是大公司,PHP的项目越难开展起来,这个让很多技术leaders很是郁闷,但也很是奇怪。
所以,下面,咱们一起分析一下形成这种被人民群众认可,却不被很多开发人员看好的语言——PHP。
PHP进入中国是98,99年,进入的时候,初期应用的典型是Chinaren校友录,还有很多的互动应用,它以开发方便,容错性好,迅速成为很多网站的选择。
到了00,01年,互联网泡沫的时候,很多都是PHP完成对网站的开发,它的流行有以下几个原因:
∙兼容C的语法,容易掌握
就这一点来说,它保证了开发人员的稳定来源,基本上说,每个学计算机的人员,没有不学习C语言的,所以都能在一到两周左右快掌握这个新的语言,然后经过简单的指导,就能开始初期的开发工作。
单从程序本身的开发而言,写了三年以上的程序员,和开发了半年以上的PHP程序员差别不是太大。
∙运行的快速
在网路上面,速度是很重要的问题,这一点来说及时是对PHP非常不屑的人也不得不承认PHP得运行速度还是比较令人满意的,只不过由于没有很实际的数据,只是很多人感觉,所以这一点来说,没有非常有力的证据证明。
∙非常强的容错,很好的鲁棒性能(鲁棒性要强调下,前几天同学问我什么是鲁棒性,因为人脸识别这块很多这个词,我想破头都没想出来,后来才知道是robustness,郁闷至极,这是经常碰到的单词,但没想到是这样翻译)
很多写PHP的人员应该有这个感觉,举个例子,你申请一个PHP中的变量,做数字也行,做数组也行,做字符串也可以。
我有时候都在想,这么随意的风格,他是如何保证效率的,只能说写这个语言编译器的人实在太不可思议了。
∙丰富的函数和简单的操作
能想到的一些操作,如果不是太罕见,你基本都能找到函数库来解决,典型的就是读文件的内容读到一个变量,到现在为止,我知道的好像只有PHP提供一个专门的函数来解决这个问题
以上四个特点,用PHP开发程序非常得普遍,但作为程序来说,这些看起来非常不错的特征也形成PHP的一些问题,造成在很多资深的程序员对其评价很低。
首先第一条,也是让很多资深的程序员对其尴尬不已的,做了3年以上的PHP程序员,当一个初学者问其一些技巧的时候,他们突然发现,PHP这种语言实在是没有好说的,看它的帮助就能解决问题或者看一下教程。
不像Java,一个仅仅写了半年左右的Java开发人员和3年以上的Java开发人员可以说有本质的区别,后者可以讲很多JAVA的开发架构和分布问题,讲的那个菜鸟满脑浆糊,满脸崇拜。
第二条还是效率的问题。
市面上对于WEB语言的效率,PHP快只是感觉,并没有一个非常有力的测试证明它比别的语言快很多,而JAVA和ASP却有一个非常有名的一个测试性能比较。
有人做过试验,对这三种语言分别做循环性能测试。
在循环性能测试,JSP用了20000*20000的循环?
共四秒钟。
而ASP、PHP测试的是2000*2000循环(少一个数量级),分别用了63秒。
PHP测试的是2000*2000循环84秒。
一个有意思的测试,说明一个问题,对于大量的运算,PHP看起来不是一个太成功的语言,这个也是很多高手不是很看好PHP的一个实际例证明,然而实际是这个仅仅是一个有点BT的测试,谁会在互联网上写一个循环400万次循环以上的一次请求应用。
实际上,在WEB应用中这种循环或者说密集的运算非常罕见,如果有,首先该考虑的也是算法的优化,减少循环的次数,然后才是考虑语言本身。
并且就算是必要的,也不是Java、PHP和ASP能够解决的,这个时候,如果用的比较多,C会粉墨登场,再多一点,可以使用汇编,非常多的情况下,芯片的设计我想是比较好的选择,怎么样都不会轮到Java这种语言,所以用这种方法来评价PHP是非常不妥的。
而对于PHP开发中较好的鲁棒性(再次寒一下),你怎么写它都能运行,并且很稳定,从而也造成PHP程序员的散漫,程序的开发非常随意,又加上中国互联网产品开发的紧急性,几乎都没有很好的文档,从而后期PHP程序的维护成为无数项目经理的噩梦。
这一点也是很多高手或者说资深程序员对于PHP评价很低的地方,而当很多项目经理需要要规范开发的时候,却又发现无从规范起,Java有Struts、MVC……而PHP却缺乏成体系的开发架构,从而也成为PHP很难成为企业应用系统的选择。
至于丰富的函数操作,这个大概是唯一没有被人诟病的地方,但是Java、ASP以及Perl都有很丰富的函数,PHP在这一点没有非常大的优势,所以只是成为人们选择它的一个不是很重要的理由。
本测试数据真实,但只做为参考。
欢迎大家讨论。
除做比较外,也可供PHP,JSP程序员参考,以便优化自己的程序。
一.算术运算
a.测试标准
循环N次,并做整型自加运算。
b.测试
测试代码:
测试类型
JSPint整型
JSPlong整型
JSPlong整型2
PHP
PHP2
测试代码
inti=0;
while(i{
i++;
}
longl=0;
while(l{
l++;
}
longl=0;
while(l{
l=l+1;
}
$i=0;
while($i{
$i++;
}
$i=0;
while($i{
$i=$i+1;
}
测试结果(单位:
毫秒)
测试结果说明:
m-n表示主要波动范围介于m和n之间;n表示出现次数非常之多的数值或平均值,m(x,y)表示偶尔会出现x,y。
以下相同。
XXXX取值
JSPint整型
JSPlong整型
JSPlong整型2
PHP
PHP2
1000
0
0
0
0-1
0-1
10000
0
0
0
3-4
6-7
100000
0
0
0(16,32)
34-35
51-52
1000000
0(10)
0(16,32)
0(16,32)
348-368
527-534
10000000
0(13)
16-32
32-78
3547-3585
5239-5390
100000000
0(16)
266-281
265-281
35309-35486
1000000000
0(16,743)
2625-2676
2203-3687
c.结论
Java的算术运算,优化得很好,估计是直接的对应CPU的指令,数值再大,算术运算性能都很平稳。
需要注意的是,long的运算时间要比int的运算时间要长一些(毕竟是32位的系统),所以,在无需用到long时,尽量不要用long,而用int.
PHP是弱类型的变量,算术运算很不尽人意,估计不是直接对应机器码的算术运算。
PHP算术运算的过程猜测如下,在运算前需要检测变量是否是数值,并要将非数值转换成数值,比如,PHP可以做这样的运算:
100+"zhoutang",结果等于100.正是因为是弱类型语言,加上运算前的检测和转换,所以才导致算术运算的性能低下。
PHP的单次运算时间比较稳定,大概每10000次算术加运算花费的时间约为3.5ms
不同的运算方法,也对性能有影响。
二.字符串运算
a.测试标准
字符串连接运算对比。
b.测试
测试代码:
测试类型
JSP
PHP
测试代码
Stringstr="";
while(str.length(){
str+="a";
}
$str="";
while(strlen($str){
$str.="a";
}
测试结果(单位:
毫秒)
XXXX取值
JSP
PHP
1000
0-16
1
10000
656-703
9-10
100000
105078-105235
95-103
c.结论
Java的字符串是用对象处理,很明显,在字符串的比较过程中,Java比PHP差很远。
(因为字符串操作,很大部分要做连接,这里只比较连接运算,另外粗略比较了一下substring,两者的差别不是很大)
PHP的字符串运算,估计很多是直接调用C的字符串函数,所以效率会高很多。
在做WEB开发中,字符串的连接操作还是很频繁的(包括很多时候生成SQL字符串),所以,在算术运算和字符串运算两个方面,Java(