过一阵需要做一个php的项目,最近在学习php,因为以前做过j2ee的项目,使用到了jsp和servlet,所以在学习php的过程中不自觉的对这两种技术做了一些对比,有了一些自己的想法,在这里做一下纪录,因为刚开始接触php,理解还不深入,所以要有什么谬误,希望大家海涵,同时可以给我指出来,在这里先谢谢了!
首先谈谈它们的相似之处,php和jsp都是后端技术,运行在服务器端,当用户(浏览器)请求服务器端页面时,它们都负责在服务器端产生静态内容(html,css,java script)返回给用户(浏览器),以此来支持动态web网站的构建。同时,jsp和php都与html集成在一起,即一个jsp或者php文件中同时包含html等静态元素和jsp或者php代码。这样做导致了view层与contorler层的耦合,不太符合mvc模型各组件相分离的思想,为了解决这个问题,jsp技术后来衍生出了servlet技术,这样可以实现mvc模式,另外也可以说jsp是一种特殊的servlet。php中,貌似可以通过使用框架来实现mvc模式,但是本身语言特性中没有相应的处理机制。
各种后端技术(jsp,php,asp,python等)能实现的功能基本相同,下面主要关注php和jsp的不同之处。jsp技术基于java环境,好处是如果已经掌握了java语言,学习成本会明显下降,坏处是要使用jsp技术,服务器端需要安装jdk,同时要运行jsp/sevlet还需要一个容器,例如tomcat或者jboss,另外,搭建jsp技术的网站有可能(不是必须)需要一个web服务器,例如apache或者nginx。相比较而言,要搭建基于php的网站,只需要一个web服务器即可,一般是apache,只需要为apache添加一个模块就可以使apache支持php。另外,php是脚本语言,是解释执行的,而java语言是需要编译的,这样一来,php可以在写完后直接放到服务器上查看运行结果,而jsp需要先编译一下再放到服务器上,这样来说php相对于jsp而言开发速度更快,更简便。至于执行速度的话,php是解释执行的,jsp是编译的,但是编译目标代码是字节码,还要经过虚拟机,这样的话,它们的速度差别我也不知道了,有知道的大神请指导一下。
以上就是目前为止我对于php和jsp差别的理解了,都是很粗略的表面上的理解,因为还在学习中,后续还会就学习到的内容继续做笔记,有兴趣的朋友们可以一起研究下!