比较PHP和JSP这两个Web开发技术 在目前的情况是其实是比较PHP和Java的Web开发 以下是我就几个主要方面进行的比较
一 语言比较
PHP是解释执行的服务器脚本语言 首先php有简单容易上手的特点 语法和c语言比较象 所以学过c语言的程序员可以很快的熟悉php的开发 而java需要先学好java的语法和熟悉一些核心的类库 懂得面向对象的程序设计方法 所以java不如php好学
Java首先要编译成字节码 class文件 然后在java虚拟机上解释执行 Java的Web开发首先最容易想到的就是JSP(现在已经到JSP ) 原来的java的Web开发都是用servlet来实现的 用servlet来开发需要程序员在java的源文件中嵌入大量的代码 所以后来就出现了JSP JSP可以方便的嵌入到文件当中 其实jsp文件在服务器上执行的时候首先会被应用服务器转换成servlet 然后再编译执行 Jsp可以通过servlet和JavaBean的支持产生强大的功能 JavaBean 是一种可复用的 跨平台的软件组件 使用javabean可以方便的实现java代码和的分离 能够增强系统的功能和软件的复用性
Java的Web开发属于SUN公司定义的J EE其中的规范 而且在J EE中包括了java的Web开发的所有方面 如 JSP Servlet JDBC JNDI JAVABEAN EJB等等 J EE就特别适合于做大型的企业级的应用
二 数据库访问比较
Java通过JDBC来访问数据库 通过不同的数据库厂商提供的数据库驱动方便地访问数据库 访问数据库的接口比较统一
PHP对于不同的数据库采用不同的数据库访问接口 所以数据库访问代码的通用性不强 例如 用Java开发的Web应用从MySQL数据库转到Oracle数据库只需要做很少的修改 而PHP则需要做大量的修改工作
三 系统设计架构比较
采用Java的Web开发技术 需要使用的是面向对象的系统设计方法 而PHP还是采用面向过程的开发方法 所以用Java进行开发前期需要做大量的系统分析和设计的工作
四 跨平台性
Java和PHP都有很好的跨平台的特性 几乎都可以在不作任何修改的情况下运行在Linux或者Windows等不同的操作系统上
五 开发成本比较
PHP最经典的组合就是 PHP + MySQL + Apache 非常适合开发中小型的Web应用 开发的速度比较快 而且所有的软件都是开源免费的 可以减少投入
Java的Web应用服务器有免费Tomcat JBoss等 如果需要更好的商业化的服务有 Web Sphere和 Web logic
六 分布式多层架构比较
PHP只能实现简单的分布式两层或三层的架构 而JAVA在这方面就比较强大 可以实现多层的网络架构 数据库层(持久化层) 应用(业务)逻辑层 表示逻辑层彼此分开 而且现在不同的层都已经有一些成熟的开发框架的支持 例如Struts就是利用java的Web开发技术实现了MVC的设计模式 而在业务逻辑层也有Spring框架 数据库持久化层有Hibernate等框架 这些框架可以方便开发者高效 合理 科学得架构多层的商业应用
下面简要的说一下Struts 它实质上是在JSP Model 的基础上实现的一个MVC(Model View Controler)框架 JSP Model 体系结构是一种联合使用JSP 与Servlet 来提供动态内容的方法 在Struts框架中 模型由实现业务逻辑的JavaBean或EJB组件构成 控制器由Servlet实现的 视图由一组JSP文件组成 采用Struts可以明确角色的定义和开发者与网页设计者的分工 而且项目越复杂 其优势越明显
七 源代码安全
PHP开发的程序的源代码都是公开的 他人拿到php开发的程序后都可以进行修改
Java开发的程序 最后用户拿到的是只是一些编译好的class类 无法看到完整的源代码 安全性高
八 性能比较
有人做过试验 对这两种种语言分别做回圈性能测试及存取Oracle数据库测试
在循环性能测试中 JSP只用了令人吃惊的四秒钟就结束了 * 的回圈 而PHP测试的是 * 循环(少一个数量级) 却分别用了 秒
数据库测试中 二者分别对 Oracle 进行 次 Insert Update Select和Delete JSP 需要 秒 PHP 需要 秒
项目
PHP
JAVA
可复用性
低
高
开发速度
快
慢
易维护性
差
优
可移植性
优- Linux
Windows Unix
安全性
低
高
开发费用
低
高
多层架构
差
优
数据库访问
接口不统一
接口统一
可扩展性
差
优
面向对象
差
优
lishixin/Article/program/PHP/201311/21447
② PHP与JSP
PHP:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,
主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,
PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
PHP的特性:
1、PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。
2、PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比。
PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。
3、PHP支持几乎所有流行的数据库以及操作系统。
4、最重要的是PHP可以用C、C++进行程序的扩展!
ThinkPHP是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,
在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。
PHP安全:
PHP其实不过是Web服务器的一个模块功能,所以首先要保证Web服务器的安全。当然Web服务器要安全又必须是先保证系统安全,这样就扯远了,无穷无尽。常见的web安全漏洞有:注入攻击,跨站攻击,服务器自身漏洞等。
PHP的优点学习过程和方法:
PHP的语法类似于C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来说,PHP太简单了。相反的,如果你对PHP了解较多,那么你对于其他几种语言的学习都很简单了。你只需要很短的时间内将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,
甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于PHP代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,你可以很轻松的加入PHP使得你的站点更加具有动态特性。
(2)jspphp性能扩展阅读:
PHP认证级别:
PHP课程由初级(IFE)、中级(IPE)和高级(IAE)三个部分。
1、IFE即Index Front-end Engineer的缩写,指数前端工程师的意思。
2、IPE即 Index PHP Engineer 的缩写,意思是指数PHP工程师。
3、IAE即 Index architecture/advanced engineer 的缩写,意思是:指数高级/架构工程师。
JSP-网络
③ ASP\JSP\PHP相比各有什么优缺点
ASP、JSP、和PHP的优点和缺点:
一、ASP
优点:
1、无需编译
2、易于生成
3、独立于浏览器
4、面向对象
5、与任何ActiveX scripting 语言兼容
6、源程序码不会外漏
缺点:
1、Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来。
2、ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于Windows NT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失。
3、由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况。
4、无法实现跨操作系统的应用。当然这也是微软的理由之一,只有这样才能发挥ASP最佳的能力。可是我却认为正是Windows限制了ASP,ASP的概念本就是为一个能让系统运行于一个大的多样化环境而设计的。
5、还无法完全实现一些企业级的功能:完全的集群、负载均横。
二、JSP
优点:
1、 一处编写随处运行。
2、 系统的多台平支持。
3、 强大的的可伸缩性。
4、 多样化和功能强大的开发工具支持。
缺点:
1、 与ASP一样,Java的一些优势正是它致命的问题所在。
2、 缺少系统性的资料。
3、 开发速度超慢
三、PHP
优点:
1、 一种能快速学习、跨平台、有良好数据库交互能力的开发语言。
2、 简单轻便,易学易用。
3、 与Apache及其它扩展库结合紧密。
4、 良好的安全性。
缺点:
1、 在windows平台运行的安全性和稳定性不如Linux/Unix。
ASP.NET也是常用的网站开发语言之一:
优点:
1. 简洁的设计和实施。
2. 语言灵活,并支持复杂的面向对象特性。
3. 开发环境。
缺点:
1.数据库的连接复杂。
2.不具有跨平台性,只支持windows平台。
④ PHP,JSP,ASP是什么干什么用的之间有什么关系吗
PHP,Hypertext Preprocessor,最初在95年问世(那时以前叫Personal Home Page)。PHP最初是制作动态网页的服务器端脚本语言,但现在PHP已经可以作为command line运行有GUI的standalone的程序。现在是PHP Group在开发和管理PHP的规则,功能等。但PHP大都用在dynamic webpage scripting上,好象没听过谁用它开发desktop application。
PHP使用率是制作动态网页的几种语言(JSP,ASP,ASP.NET, ColdFusion, Ruby, SHTML)中最高的。因为PHP在95年已经问世至今,以有相当数量的开发者。我们熟知的国际权威网络全书Wikipedia有90%用PHP写的,而且国外流行多年的“校内网”FaceBook 也全部用PHP写的,同时Yahoo, Sony官方,Pepsi百事官方这些网站都是用PHP的。根据维基网络(Wikipedia)的说法,PHP被超过20,000,000的网站所用,被超过1,000,000的网页服务器所用。目前到2008五月,PHP最新版本为5.2.6。
PHP不仅使用率高,而且能兼容各类平台。它可以在大多数网页服务器上运行(如:MS IIS,Apache),大多数操作系统上运行(如:Windows, UNIX, Linux)。而且PHP支持很大多数牌子的数据库:MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Gerneric ODBC等。
结构方面,虽比JSP,ASP.NET差点,PHP也有很多Framework可用。微软的ASP.NET结构是出名的,JSP的MVC结构也很厉害,所以开发大网站ASP.NET,JSP都很快。而PHP Group也为此付出很大努力,来开发自己特有的结构适应不同类型的大网站的需求。常见的PHP的Framework有:CakePHP, PRADO, Symfony, Zend等。
另外LAMP结构,是PHP最常用的开发模式,即是配合Linux, Apache, MySQL, PHP,合称LAMP。个人认为这种方式才是ASP.NET,PHP,JSP中最简单的。
3. 说说JSP。(本人工作中用的最多的就是JSP)
JSP, JavaServer Pages 是Java技术的一部分,可以说是Java Platform Enterprise Edition的一部分(JAVA主要3个大技术,Java SE, Java EE, Java ME)。软件开发者可以用JSP来动态生成HTML,XML或者其他的文档。然后把文档response给网页用户。这项技术,可以用Java里的所有定义过的library来支持它的功能,所以JSP的API和普通Java EE的API一样。
JSP里还有很多有功能的XML tag(如:<jsp:include>,<jsp:useBean)。这些都是JAVA内置功能,不需要导入新的外置 library。这些XML tag,可以在很多Web Server里使用(如:Apache, Apache TomCat, WebLogic等)。
JSP在编译后就完全和Servlet一样了。JSP页面在第一次被用户访问的时候,首先被JAVA 编译器,编译成Java Servlet Class。然后编译后Servlet Class,在以后被用户访问时,直接在JVM里运行,由JSP Web Container来输出HTML给用户。JSP这种“首次访问-预编译”的运行方式比传统PHP(PHP 4和PHP以前版本),过时的ASP(所有版本的ASP),要快很多。(网络一位网友作过一个1万次For Loop,循环的测试,结果发现JSP比传统PHP,ASP快尽10被的速度就完成运算)。预编译的运行方式后来被PHP5效仿,ASP.NET也是预编译的。当然JSP还有一个好处,就是可以直接用纯Java (无HTML),来写一个Servlet,直接在JVM运行后,由JSP Web Container输出HTML给用户。只是Servlet有的时候写一些presentation tier的东西很麻烦,因为它不能融合XML和输出逻辑在一起。所以一般Servlet用于纯Java的business logic逻辑。
JSP的tag还可以由用户自己来创造和使用,这个和ASP.NET里的user-defined controls差不多。
MVC, Model-View-Controller,是JSP的普遍开发架构,用来把JSP技术中的presentation, business logic, data storage三层清楚的分开。这样使开发过程更佳清楚明了,便于开发,维护。常用的MVB架构有:Barracuda, Apache Struts和Spring。JSF,JavaServer Faces是一个由SUN官方开发的Framework,是模仿ASP.NET的event-driven开发模式,和ASP.NET非常相似。但SUN 并没有让JSF替代JSP,相反JSF的开发者少之又少,但是据说现在JSF或JSP配合RAD(AJAX)开发很流行(校内网就是这样,而且结合Struts)。
4. ASP(Active Server Pages), ASP.NET 两个分别是 动态网页开发语言,动态网页开发语言和结构
(1) 关于ASP的淘汰
ASP, Active Server Pages已经过时了, 但因为其出现的早,96年就有了,所以现在有些中小网站还用(但,使用最多最广的是PHP,最初于95年现世。ASP是微软第一代动态网页开发语言,只能在Windows系统 + MS IIS服务器平台下运行。
Wikipedia, Facebook, 网络等都用PHP,PHP学习的简单度和ASP差不多;JSP稍微难点,JSP用的一般都是银行,购物等安全性较高的网站,Google也用JSP)。但随着开发者的各种需求,ASP以后可以被ASP.NET取代,因为微软停止对其的一切技术维护与功能更新。ASP.NET是革新版本的ASP(注意是“革新版本”,而非“改进版本”),或者说是完全新一代的Dynamic Web Scripting。
ASP代表着传统的dynamic web scripting,与ASP.NET没什么关系,学了确实也没用。因为ASP不象CGI(Common Gateway Interface),CGI是动态网站制作的始祖,所有ASP,JSP,PHP什么的都根据CGI演化而来,而且ASP,PHP,JSP都包含了些 CGI的东西;而ASP却没有被衍生出任何新技术,ASP.NET也不算基于ASP,只能说ASP.NET开发理念,library,功能完全是基于.NET的其它组件。
其实PHP,JSP,ASP明白其中一种,其它的都很容易学会了。如果非要学学传统的dynamic web scripting,那就学学PHP吧,不比ASP难,但比ASP功能多,稳定性好,PHP5运行速度也比ASP快很多(JSP稍难因为要学点 Java)。学了PHP或JSP什么的,对学ASP.NET有好处,而且还可以直接用PHP,JSP进行开发。去google差差英文资源,有评价PHP 最好的,有评价JSP最好的,还从没有听谁说过ASP最好。
ASP.NET毕竟在.NET中,所以ASP.NET还是有相当地位的。
(2). 关于ASP.NET的优势
ASP.NET是微软.NET Framework的一部分。伴随.NET 1.0在2002的问世,ASP.NET也出现在动态网页开发语言的家族中(与PHP,JSP,ColdFusion, Ruby, SHTML等并行了)。
功能上,ASP.NET比ASP有更强大的library, 更好的稳定性。 ASP.NET可以使用.NET Framework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现),功能上显然强大于传统功能单调的ASP。最强的技术支持Web Service, 而且有.NET的所有library做后盾。而且ASP.NET 在.NET 3.5中还有微软专门为AJAX开发的功能--ASP.NET AJAX。
结构上,传统的ASP把所有代码混为一团,简单的用<%%>把HTML和VBScript(或JScript)分开,实现动态输出 HTML。因为ASP.NET模仿JSP的MVC网页结构,微软为ASP.NET开发了自己的Code-Behind结构,将 presentation(文件拓展名:.aspx)和business logic(文件拓展名:.cs或.vb等)分离。同时Code-Behind模式也实现了让ASP.NET开发者用.NET中最普通Winform的开发模式来开发网站,方便非网页开发者制作动态网站。所以ASP.NET更容易维护,比ASP更适合于Enterprise Level 的大网站开发。
由于ASP.NET比JSP,PHP等更接近于.NET Winform的开发。如Tree View, Datagrid View(即高级Table)等高级UI,都可以直接用ASP.NET中的Web Control来实现,这比传统的使用JavaScript + XTHML + CSS的DHTML开发方式简单不少,也更好维护。同时ASP.NET开发这可以定义自己的User Control,制作自己特别的一种UI(如网站LOGO,版权等部分),而且此User Control可以被存为.ascx文件,方便让每一页(.aspx)来使用。
运行速度上,ASP.NET模仿了JSP的预编译机制(Pre-Compile)。使编译好的代码(MSIL语言)在网页服务器上运行。这样比传统的ASP,传统PHP(PHP4以前版本)更快,因为传统的ASP是直接运行开发者写的Script,相当于每运行一次,就得编译一次那么慢。 ASP.NET可以用VB, C#, J#等所有.NET Framework的语言开发.(但其实每种语言做的东西都一样... 就象山东话, 东北话, 写出来都是中文:)
不过ASP.NET对出学者可能有点难. 因为它其实在模拟desktop application development,即Winforms开发的模式, 不象传统的JSP,PHP, ASP这样容易明白。传统的Dynamic Server Scripting, 象PHP 5, 这是现在最简单的, 最有效的了。( 那个JSP也不难. 如果有钱还可以考虑下Adobe ColdFusion。)
ASP.NET的新潮的Dynamic Server Scripting, 在其带动下SUN也推出自己的JavaServer Faces (其实是拓展JSP,但JSF无法取代JSP), 和ASP.NET很象, 也有很多Web Control(JTable, JTree),同时JSF也曾强了对WEB SERVCIE的支持, 也很适合ENTERPRISE LEVEL 的网站。
(3). ASP与ASP.NET的优劣总结:
-- ASP已经被微软停止更新;ASP.NET却在.NET(1.0, 2.0, 3.0, 3.5)中突飞猛进;
-- ASP在96年出现,并没有引领一个潮流,PHP,ColdFusion都出现于95年,引领了整个潮流;ASP.NET引领新的动态网站开发潮流,SUN的JSF(JavaServer Faces)就是与ASP.NET极其相似;
-- ASP大多被用在是中小网站;PHP被Wikipedia, Facebook, 网络所用,JSP被GOOGLE所用;
-- ASP不支持Web Service; ASP.NET支持Web Service。要是了解.NET中的Web Service在大组织系统中的重要性,就能立杆见影的看出差距
-- ASP开发AJAX比较麻烦;而ASP.NET专门用AJAX控件,更方便。要是了解Web 2.0,那么AJAX是什么地位,就不用我说了吧。
-- ASP.NET模仿JSP,是pre-compile的;ASP不compile,直接运行Script的速度显然没有compile之后的快。
-- ASP.NET的唯一缺点,就是开发用的IDE--Visual Studio Professional比较贵(express版免费的功能太少);ASP的唯一优点是,其
学起来最简单,跟PHP一样简单,比JSP简单,更比ASP.NET简单几倍。