PHP与Java的区别有:在运行机制上PHP是直接对文本代码进行解释编译而Java则先被编译成字节码再在虚拟机中进行二次编译;在处理并发上,Java是采取单进程多线程的方式,PHP是多进程

(1)运行机制

Java代码被编译成字节码后,会在虚拟机里由JIT进行二次编译成为本地码,据传言其执行速度可以和C++相媲美,经过我自己测试,用Java实现一个简单的Memcache协议的缓存服务器,在Java 1.6下运行,和memcache本身相比,同样数据量的存取时间比大概是3:2,虽然有差距,但是比想象的要好很多。Java 1.7在JIT方面做了大量的改进,性能比Java 1.6还要好。

PHP是直接对文本代码进行解释执行,即便有opcode缓存技术,仍然有不可逾越的性能鸿沟。PHP的opcode类似于java的class字节码,仍是解释执行。

(2)处理并发

Java在并发处理上采取单进程多线程的方式,web应用会随着web server的启动而启动,而来自web 浏览器的请求将被分配给线程池内的闲置线程处理,也就是说当有请求到达的时候,进程是准备好的,线程是准备好的,Java要做的仅仅是业务逻辑处理了。

PHP在并发处理上时采取多进程的方式,在web server里没有物理的web应用概念,每个请求都相当于一个独立的应用,而进程也随着请求的到达才启动,而随着请求的结束而消亡。在Fast CGI环境下,有类似于线程池的进程池技术,对性能提高有很大的帮助。然而一方面web server和Fast cgi通讯仍需要通过socket,多出了一定的IO损耗,另一方面进程池内的进程间也很难进行通讯,所以在并发处理上仍然无法和Java相比。

(3)数据库应用

Java可以采用数据库连接池技术,节省下数据库连接过程带来的时间损失。

PHP没有这个好处,原因来自上面的第二条。

在数据库接口上java有JDBC,PHP有PDO,这两个很类似。然而Java有非常多的ORM技术框架(如Hibernate)使数据库操作变得异常简单,而PHP的运行方式决定了它是ORM的禁区(当然也可以做ORM,只是做到什么程度是由你对ORM带来的性能损耗的忍受程度决定的)。

(4)缓存技术

Java是单进程,很多缓存可以直接在Java的heap中做,而无需借助外在的工具,当然也有很好的缓存框架,比如Ehcache,因为没有网络IO,所以性能非常高。

PHP多进程单线程决定了它只能借助外来的缓存服务器,比如Memcache.

(5)热部署

Java的热部署能力很弱,如果希望修个BUG而不停服是很难做到的。PHP天然热部署。

(6)开发成本

一个好Java程序员所需的知识储备更多,开发、调试所需的周期较长,好点的web server也都是收费的。PHP免费、web server也免费。

(7)安全性

这个要看你怎么来定义安全性,如果是代码安全,java class反编译很容易,这点上来说两者差不多。Java有安全配置机制可保证一些“非法操作”无法执行,这点上来说PHP较弱。然而Java很容易因为一个BUG导致整个应用宕掉,PHP就安全的多。

做后端php和java区别,【后端开发】php和java有什么区别相关推荐

  1. Java中文编程开发,让Java编写更加容易

    Java中文编程开发,让Java编写更加容易 目录 创建Java项目 创建类 编写方法 调用方法 Tips:文件必须以UTF-8格式保存才能够运行 1.创建Java项目 项目创建完成后,创建一个资源包 ...

  2. java面向过程开发,刚接触java的体验

    1.理解面向过程和面向对象的概念以及区别: 2.掌握如何在需求中提取对象,会使用Java代码描述提取的对象: 3.了解对象在内存中的存在状态 4.理解类和对象的区别 5.掌握局部变量和成员变量的概念和 ...

  3. java注解的开发_使用Java注解开发自动生成SQL

    使用注解开发的好处就是减少配置文件的使用.在实际过程中,随着项目越来越复杂,功能越来越多,会产生非常多的配置文件.但是,当配置文件过多,实际维护过程中产生的问题就不容易定位,这样就会徒劳的增加工作量. ...

  4. java webservice接口开发_给Java新手的一些建议----Java知识点归纳(J2EE and Web 部分)

    J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号.但是其实 J2EE 里面 ...

  5. 小猿圈Java讲师分享开发9年Java进阶大全

    IT程序员每天都与代码拼死搏斗,加班已成为家常便饭,为了升职加薪还要夜以继日的学习,对于只会ctrl+c和ctrl+v的真的是很是惭愧呀,为了更好的引导正在学习java编程的小伙伴,今天我让小猿圈的J ...

  6. java层 android_Android开发实践:Java层与Jni层的数组传递

    Android开发中,经常会在Java代码与Jni层之间传递数组(byte[]),一个典型的应用是Java层把需要发送给客户端的数据流传递到Jni层,由Jni层的Socket代码发送出去,当然,Jni ...

  7. Java组件化开发教程!java工程师求职简历word模板

    什么是数据脱敏 先来看看什么是数据脱敏?数据脱敏也叫数据的去隐私化,在我们给定脱敏规则和策略的情况下,对敏感数据比如 手机号.银行卡号 等信息,进行转换或者修改的一种技术手段,防止敏感数据直接在不可靠 ...

  8. java office 集成开发_pageoffice for java(专业的集成)

    pageoffice for java(专业的集成)是一款卓效处理在线办公,轻松助力 OA,使在线办公迈向科技之巅,精彩尽在PageOffice,免费版实现了在线编辑保存Word.Excel.PPT. ...

  9. Java企业管理系统开发论文,基于JAVA的企业人事管理系统设计与实现.doc

    摘要:随着社会的进步以及计算机技术的发展,传统的人事管理方式已经不能满足人们的需求,企业人事管理系统的开发是必然的趋势,企业人事系统采用Java Web开发,本系统采用Eclipse +Tomcat作 ...

  10. java awt android_Android开发基础之Java 日期时间

    Java 日期时间 java.util 包提供了 Date 类来封装当前的日期和时间. Date 类提供两个构造函数来实例化 Date 对象. 第一个构造函数使用当前日期和时间来初始化对象. Date ...

最新文章

  1. php mysqli还原数据库,PHP mysqli操作数据库
  2. 三次握手和四次挥手图解_图解TCP三次握手和四次挥手
  3. 5.8-12 watch、which、whereis、locate、updatedb
  4. JAVA实现telnet代理,对输入命令拦截
  5. 直流电机调速c语言程序,分享一个51单片机直流电机调速源程序
  6. 编辑器统一 快捷键
  7. CSS:input输入框以及button按钮初始细节
  8. linux中可以使用-af含义,关于Windows中的linux:AF_UNIX
  9. [转] 常用Loss函数
  10. 读取肌电数据,构建模型训练数据
  11. python联合vrep_vrep-python 控制方法
  12. webstorm识别 ftl文件
  13. 颈椎前路caspar撑开器_Caspar撑开器和颈椎带锁钢板治疗下颈椎骨折脱位
  14. 嵌入式系统开发笔记16:CJ/T-188 冷热量表协议解析5
  15. 深入解析 | 如何设置关键词密度?
  16. 最全面计算机英语单词列表(二)
  17. jdbc连接mysql数据库,设置字符集编码
  18. 硬货专栏 |WebRTC SDP 详解和剖析
  19. iOS 权限提示语_iOS11权限变化,权限都要弹框提示,而且需要说出功能用途
  20. SD,TF,SD卡檢測腳

热门文章

  1. 蓝牙5 BR/EDR LMP层分析
  2. USACO16FEB:再探圆形谷仓(dp)
  3. discuzdiy图片模块_Discuz各类幻灯片的制作方法 - 完全支持DIY
  4. Uniapp 添加Iconfont
  5. 饥荒联机云服务器_饥荒steam联机版专用服务器搭建
  6. 时序违例的原因及其解决办法
  7. 计算机能玩什么游戏,《梦幻西游网页版》官网——网易官方正版出品
  8. 2017中国开发者调查报告-云栖社区
  9. 一点点读懂cpufreq(二)
  10. AWB(Auto White Banlance)——自动白平衡