Java和PHP在Web开发方面对比分析


Posted in PHP onMarch 01, 2015

比较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 秒。

Java和PHP在Web开发方面对比分析

综上所述,我个人认为,PHP适合于快速开发,中小型应用系统,开发成本低,能够对变动的需求作出快速的反应。而Java适合于开发大型的应用系统,应用的前景比较广阔,系统易维护、可复用性较好。还有,同样功能的系统用Java开发的系统要比PHP开发的系统的价格要高。

以上就是本文的全部内容了,希望对大家能够有所帮助。

PHP 相关文章推荐
打造计数器DIY三步曲(下)
Oct 09 PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
Oct 12 PHP
php构造函数实例讲解
Nov 13 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
PHP7.0安装笔记整理
Aug 28 PHP
php对文件夹进行相关操作(遍历、计算大小)
Nov 04 PHP
Zend Framework教程之模型Model用法简单实例
Mar 04 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 PHP
PHP面向对象程序设计组合模式与装饰模式详解
Dec 02 PHP
PHP开发之用微信远程遥控服务器
Jan 25 PHP
thinkPHP框架中layer.js的封装与使用方法示例
Jan 18 PHP
Yii框架通过请求组件处理get,post请求的方法分析
Sep 03 PHP
php中return的用法实例分析
Feb 28 #PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 #PHP
Windows7下的php环境配置教程
Feb 28 #PHP
php数组使用规则分析
Feb 27 #PHP
php中stdClass的用法分析
Feb 27 #PHP
php中explode的负数limit用法分析
Feb 27 #PHP
php数组键值用法实例分析
Feb 27 #PHP
You might like
基于PHP实现的事件机制实例分析
2015/06/18 PHP
php实现微信发红包
2015/12/05 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
js replace()去除代码中空格的实例
2017/02/14 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
2018/05/06 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
用matplotlib画等高线图详解
2017/12/14 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
什么是Rollback Segment
2013/04/22 面试题
师恩难忘教学反思
2014/04/27 职场文书
2014年校长工作总结
2014/12/11 职场文书
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
Java 关于String字符串原理上的问题
2022/04/07 Java/Android