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架构几乎成为唯一的选择。

现在市场上的oa基本上可归结为两大阵营,即php阵营和java阵营。但对接触oa不久的用户来说,看到的往往只是它们的表相,只是明显的价格差异,却很难看出它们之间的实际差异。其实, PHP + MYSQL 不值钱不仅仅局限于oa软件,而是整体上PHP + MYSQL开发的软件都不如java开发的软件值钱。为什么PHP + MYSQL 的OA为什么不值钱呢?首先得明白php和java之间的差异才行。

1、系统的技术架构比较

分层是将系统进行有效组织的方式,分而治之的思想是计算机领域中非常重要的思想。在好的分层思想引导下,便能实现“高内聚、低耦合”,也能将具体的问题割裂开来,易于控制、易于延展,更易于分配资源。PHP只能实现简单的分布式两层或三层的架构,而JAVA在这方面就十分强大,可以实现多层的网络架构。运用MVC的设计模式,可使oa系统具有更加高效、合理的系统架构。技术架构的落后,使运用php编写的oa软件系统先天不足,而后天又无法补足其先天上的劣势。使得系统在可拓展性、需求应变性上与JAVA编写的oa软件系统的差距越来越大。架构的差距,注定了php做的oa充其量是个小家碧玉,始终无法和java这种大家闺秀同台竞技。

2、数据库访问比较

PHP可编译成具有与许多数据库相连接的函数。将自己编写外围的函数去间接存取数据库。通过这样的途径当更换使用的数据库时,可以轻松地修改编码以适应这样的变化。但PHP提供的数据库接口支持彼此不统一,比如对Oracle, MySQL,Sybase的接口,彼此都不一样。由于PHP对于不同的数据库采用不同的数据库访问接口,所以数据库访问代码的通用性不强。

而Java通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库,访问数据库的接口比较统一。如果同样是将开发的web应用从MYSQL数据数转到ORACLE数据,PHP需要做大量的修改工作,而且比较繁琐。但JAVA开发的便只需要很少的更改便能实现。

数据库访问方式的差异,奠定了php开发出的oa和java开发出来的oa是马车和火车的差距,前者只能亦步亦趋而且额度有限,后者却是工业化的结晶,不仅能够包容万物而且速度上稳步提升。

3、安全性对比

在同是开源和跨平台的java面前,php丢掉了很多的优势。在代码的安全性上尤为突出。php的开发程序在别人拿到代码后,可以很容易的进行修改。而java开发的程序由于无法看到完整的源代码,只能看到一些编译好的类文件,所以安全性较高。加之系统架构的优势,在安全性上php和java是相去甚远。

如果非要将php和java在安全性上做个比较的话,同一个小偷光顾php那是随便拿来随便改,想拿什么拿什么,拿的高兴还能大笔一辉某某到此一游。而光顾java的时候,便会发现警察把守,内设自动报警装置,即便突破重重阻扰后进入居室。那值钱的东西都放在加密后的保险柜中,只能望洋兴叹、铩羽而归。

4、前瞻性和拓展性

从整体来说,php适用于中小型系统,而java适用于大型系统。Php能够将单一的事件做好,但却不适合完成集成度较高的多项并发事件。为什么说php适合中小型系统而不适合做大系统呢?

首先, php缺乏多层结构支持。而对于大型的系统负荷站点,只能采用分布计算。将数据库、应用逻辑层和表示逻辑层彼此分开,并将同层的根据流量分开,组成二维数组。而php恰恰缺乏这种支持。

其次,PHP提供的数据库接口不统一,要将多个不同的数据库数据统一需要花费很大的力气。而JAVA则没有这种缺陷,可通过SUN Java的Java Class和EJB获得规模支持,通过EJB/CORBA以及众多厂商的Application Server获得结构支持。如IBM的E-business,它的核心是采用JSP/Servlet的Web Sphere,是通过CGI来提供支持的。

如果将Php比作将才,具备独挡一方的能力。那么java便是帅才,具有较好的前瞻性和拓展性,整体布局和协同能力强。能够指挥千军万马,最后逐鹿中原。

5、开发成本比较

既然php在诸多方面都不如java优异,那么php开发出的oa产品何以与java产品竞争呢?在于Php阵营普遍走的是低端路线,而java阵营走的是中高端路线。两者之间交*的区域较小。

软件价格的高低很大程度上和自身成本和功能相挂钩。php的入门门槛较低,绝大多数学过c的程序员都很容易转型为php程序员,这使得php程序员的泛滥成灾的同时,低成本的php软件产品也层出不穷。以PHP最经典的组合PHP + MySQL + Apache为例,由于所有软件都是开源免费的,所以投入并不高。

而java开发需要特定的环境,成长为一个合格的java程序员需要一定的时间,java程序员的成本也是php成本的几倍。Java的web应用服务器免费的有Tomcat、JBoss等,而要想具有很好的商业化服务便必须选用Web Sphere和 Web logic。这其中投入的成本无形中便超是php成本的N倍。所以,java开发oa的成本要远远高于php开发出来的同类软件产品。但也正由于java开发的成本较高,很难实现抄袭和短期内逾越的可能,也使得java用开发出的产品门槛更高。

不怕不识货,就怕货比货。Php开发出来的产品也能用,但是和java开出的同类产品是没法比较的。正因为php开发的产品整体性能和java开发的相去甚远,所以php运用低成本的低价优势和同类的java产品抗争,以价格落差来平衡购买者的心态。所以,PHP + MYSQL 的OA不值钱也就不足为怪了

第二种

比较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进行开发前期需要做大量的系统分析和设计的工作。

四、 跨平台性

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 Model2的基础上实现的一个MVC(Model、View、Controler)框架。JSP Model2体系结构是一种联合使用JSP 与Servlet 来提供动态内容的方法。在Struts框架中,模型由实现业务逻辑的JavaBean或EJB组件构成,控制器由Servlet实现的,视图由一组JSP文件组成。采用Struts可以明确角色的定义和开发者与网页设计者的分工。而且项目越复杂,其优势越明显。

七、 源代码安全

PHP开发的程序的源代码都是公开的,他人拿到php开发的程序后都可以进行修改。

Java开发的程序,最后用户拿到的是只是一些编译好的class类,无法看到完整的源代码,安全性高。

八、性能比较

有人做过试验,对这两种种语言分别做回圈性能测试及存取Oracle数据库测试。

在循环性能测试中,JSP只用了令人吃惊的四秒钟就结束了20000*20000的回圈。而PHP测试的是2000*2000循环(少一个数量级),却分别用了63秒。

数据库测试中,二者分别对 Oracle 8 进行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒。

PHP、JSP、ASP简介与区别相关推荐

  1. java和asp.net core_.NET Core和ASP.NET Core简介与区别

    1..NET Core简介 .NET Core是适用于 windows.linux 和 macos 操作系统的免费.开源托管的计算机软件框架,是微软开发的第一个官方版本,具有跨平台 (Windows. ...

  2. .NET Core和ASP.NET Core简介与区别

    本文主要简单介绍一下.NET Core和ASP.NET Core,以及它们之前的联系和区别. 原文地址:.NET Core和ASP.NET Core简介与区别

  3. ASP,php,jsp,ASP.net四种web平台语言的区别与前景

    ASP,PHP,JSP,ASP.NET 这是当前比较流行的四种WEB网站编程语言 现在做网站大部分都是使用这几种语言中的其一 ASP是基于WINDOWS平台的,简单易用,由于是运行在WINDOWS平台 ...

  4. jsp和serverlet的区别

    开始找工作面试的第一家公司,爱思创新 面试题: 1.jsp和serverlet的区别 简单来说: jsp:是包含java程序片的html文件 servlet:是包含html的java文件 其实说白了J ...

  5. 【项目小知识】JSP和HTML的区别

    我是灼灼,一只初学Java的大一金渐层. 向往余秀华和狄兰·托马斯的疯狂,时常沉溺于将情感以诗相寄:追逐过王尔德.王小波的文字,后陷于毛姆和斯蒂芬·金不可自拔:热爱文学的浪潮,白日梦到底却总在现实里清 ...

  6. jsp与java的关系_jsp教程中:jsp与servlet的区别和关系

    jsp教程上:我们一定学了servlet,也学习了jsp,那么jsp与servlet的区别是什么呢,jsp与servlet又有什么关系呢?下面我们先创建一个demo.jsp的页面,然后tomcat运行 ...

  7. ASP与ASP.NET的区别

    师姐开始学习asp了,昨天问了我asp与asp.net的区别,结果没回答好....太丢人了... ASP(Active Server Pages)是Microsfot公司1996年11月推出的WEB应 ...

  8. PHP多台服务实现单点登录,如何在多台服务器上共享Session(PHP/JSP/ASP.NET)以及单点登录(SSO)...

    如何在多台服务器上共享Session(PHP/JSP/ASP.NET)以及单点登录(SSO) Apache Session复制: 使用Memcached来共享PHP Session: 使用Cohere ...

  9. Computer:路由器、交换机、猫Modem的简介、区别之详细攻略

    Computer:路由器.交换机.猫Modem的简介.区别之详细攻略 目录 路由器.交换机的简介 交换机 路由器 猫Modem 外置式Modem的软件安装 外置式Modem的硬件安装 路由器.交换机. ...

最新文章

  1. 基于Linux的集群系统(一)
  2. 单片机程序下载方式ISP、IAP
  3. python获取系统时间函数_python3中datetime库,time库以及pandas中的时间函数区别与详解...
  4. vue组件父子组件之间传递数据
  5. win下python环境搭建以及安装pip、django
  6. 七十四、滑动窗口最值问题
  7. 本题中的变量(不包括变量ID)进行z-score标准化
  8. Linux日志高频使用命令
  9. 【SCOI2005】【BZOJ1087】互不侵犯King(状压dp)
  10. ctl命令 usb_USB入门系列之六 —— USB设备的枚举过程
  11. Atom飞行手册翻译: 4.4 Atom中的序列化
  12. unity中的rigibody 和 collider 讲解
  13. 并发编程(6)基于锁的并发数据结构设计
  14. 商城口碑高的蓝牙耳机好用吗?十大高人气蓝牙耳机测评推荐
  15. java hevc和heif_什么是HEVC和HEIF?有什么优缺点?
  16. oracle jdbc流式读取,在 Oracle Database 适配器中流式传输大型对象数据类型 - BizTalk Server | Microsoft Docs...
  17. ks 曲线_ROC曲线与KS曲线的理解
  18. linux通讯录软件带头像,Ubuntu联系人应用已支持增强的头像功能
  19. 完全手册-MATLAB使用详解:基础、开发及工程应用
  20. Python小程序之倒计时

热门文章

  1. 记录python量化学习过程
  2. MIPS环境填坑指南
  3. matlab标量场作图
  4. Matlab代码转换为C重要步骤(Matlab coder (2021a))
  5. 透过散射介质的成像matlab,利用空间光调制器实现基于相位多样性的散射介质成像的制作方法...
  6. 如何鉴定电子合同的法律有效性?
  7. 需求ROI评估:B端产品经理怎么做需求优先级排序?
  8. 秒懂!基站,小区,扇区,载频之间到底是关系?!
  9. WCA验厂辅导,WCA验厂员工访谈哪些人是抽查重点
  10. python绿色版spider的idle_Python-Scrapy Spider没有收到spider_idle信号