php和java两者的对比与取舍
来源:互联网 发布:河南打车软件 编辑:程序博客网 时间:2024/05/01 02:00
这样从几个方面来看:
一、运行机制:
Java代码被编译成字节码后,会在虚拟机里由JIT进行二次编译成为本地码,据传言其执行速度可以和C++相媲美,经过我自己测试,用Java实现一个简单的Memcache协议的缓存服务器,在Java 1.6下运行,和memcache本身相比,同样数据量的存取时间比大概是3:2,虽然有差距,但是比想象的要好很多。Java 1.7在JIT方面做了大量的改进,性能比Java 1.6还要好。
PHP是直接对文本代码进行解释执行,即便有opcode缓存技术,仍然有不可逾越的性能鸿沟。PHP的opcode类似于java的class字节码,仍是解释执行。
二、处理并发:
Java在并发处理上采取单进程多线程的方式,web应用会随着web server的启动而启动,而来自web 浏览器的请求将被分配给线程池内的闲置线程处理,也就是说当有请求到达的时候,进程是准备好的,线程是准备好的,Java要做的仅仅是业务逻辑处理了。
PHP在并发处理上时采取多进程的方式,在web server里没有物理的web应用概念,每个请求都相当于一个独立的应用,而进程也随着请求的到达才启动,而随着请求的结束而消亡。在Fast CGI环境下,有类似于线程池的进程池技术,对性能提高有很大的帮助。然而一方面web server和Fast cgi通讯仍需要通过socket,多出了一定的IO损耗,另一方面进程池内的进程间也很难进行通讯,所以在并发处理上仍然无法和Java相比。
三、数据库应用:
Java可以采用数据库连接池技术,节省下数据库连接过程带来的时间损失。
PHP没有这个好处,原因来自上面的第二条。
在数据库接口上java有JDBC,PHP有PDO,这两个很类似。然而Java有非常多的ORM技术框架(如Hibernate)使数据库操作变得异常简单,而PHP的运行方式决定了它是ORM的禁区(当然也可以做ORM,只是做到什么程度是由你对ORM带来的性能损耗的忍受程度决定的)。
四、缓存技术
Java是单进程,很多缓存可以直接在Java的heap中做,而无需借助外在的工具,当然也有很好的缓存框架,比如Ehcache,因为没有网络IO,所以性能非常高。
PHP多进程单线程决定了它只能借助外来的缓存服务器,比如Memcache.
五、热部署
Java的热部署能力很弱,如果希望修个BUG而不停服是很难做到的。
PHP天然热部署。
六、开发成本
一个好Java程序员所需的知识储备更多,开发、调试所需的周期较长,好点的web server也都是收费的。
PHP免费、web server也免费。
七、安全性
这个要看你怎么来定义安全性,如果是代码安全,java class反编译很容易,这点上来说两者差不多。
Java有安全配置机制可保证一些“非法操作”无法执行,这点上来说PHP较弱。
然而Java很容易因为一个BUG导致整个应用宕掉,PHP就安全的多。
其实要说起来Java的好处多多,然而仅仅最后三条就可以让决策者取PHP而弃Java.
个人感觉php适合做复杂度不是特别高的网站或系统,如果拿一个小blog系统来讲,php肯定完胜与java。
- php和java两者的对比与取舍
- InnoBD 与 MyISAM 两者之间的对比
- 书写优雅的代码和快速交付软件两者间的艰难取舍
- Ajax和Flash的比较与取舍
- &&"与“&” 和 “||”与“|” 两者之间的区
- 异步串行通讯和同步串行通信两者的对比
- java抽象类和接口在设计时的取舍
- JExcelAPI与Apache POI两者对比
- in与exists的取舍
- Java学习疑惑(7)----网络编程, 详解TCP与UDP两者之间的共同点和差异
- Enumeration和Iterator的取舍
- 在Java中读取EXCEL文件 JExcelAPI与Apache POI两者对比
- ruby和php的比较,以及和java的对比
- jQuery Ajax 和 Struts2 渲染机制对比. 性能 取舍
- php安装模式mod_php和Fastcgi的选择与对比
- php安装模式mod_php和Fastcgi的选择与对比
- php安装模式mod_php和Fastcgi的选择与对比
- 关于c/c++中传统数组和动态分配内存两者的对比
- android4.0 编译报错的解决方法
- amcharts使用总结
- Ubuntu:MySQL数据库和相关工具的下载
- Could not instantiate class named NSLayoutConstraint
- Android命令am简介
- php和java两者的对比与取舍
- 简述类的三个基本特征
- 基本Dalvik VM调用
- 徐劳颁做生意--抽象工厂模式
- 使用在线的编辑器编辑表格
- 解决项目中hbm文件用maven运行没有拷贝到target里面的问题
- 做linux第四次实验,看错实验要求,花了一个下午自己模拟着实现一个ls命令。。。。
- ORCALE 创建用户\权限的分配
- Android内存泄露利器(内存统计篇)