欢迎光临BDM
一枚菜鸟码农的成仙之路

简述PHP与JAVA的主要区别

PHP与JAVA的主要区别

本总结中前后几点之间通常存在因果或者关联关系,因为想要描述语言之间的差距,总是由点概面的。希望能通过关键性质的几点,来描绘出PHP和JAVA这两种工具间基本的区别。

该总结内容结合自身经验得出,深度及广度取决于作者的水平,望能海涵!

1. 数据类型

  • PHP为弱类型语言,JAVA为强类型语言。
  • PHP所有数据类型采用同一种数据结构,该结构体中包含了“数据”,“数据的长度”,“数据引用”的信息。其中“数据”底层实现为一个联合体,包含了整形,长整型,字符串,对象,哈希表几种类型。字符串类型为一个结构体。

2. 应用场景

  • PHP为web开发而生,只能用于web开发。
  • PHP进行web开发时不依赖任何框架,但运用上框架也能达到JAVA框架的很多优点,诸如MVC,面向切面,依赖注入。
  • PHP内置模板引擎,JAVA需要依赖其他类库。

3. 语言类型

  • PHP为脚本语言,在执行时编译,JAVA为半编译语言,在执行前编译。
  • PHP实时热部署,部署速度取决于存储介质读写速度。
  • PHP底层为C语言,所有类库都是C实现,而JAVA是JAR包,仍然是JAVA。

4. 多线程

  • PHP每一个请求都是一个进程,JAVA每一个请求都是一个线程。
  • PHP能完美利用多核性能。

5. 数据库连接

  • PHP天然不支持连接池,除非运用到常驻内存以及进程间通讯等相关技术。
  • PHP数据库连接底层为C,效率更高,能弥补一定的IO成本。

6. 垃圾回收

  • PHP的运行时GC机制为当该数据没有被引用时回收,该标识符存储在数据本身之中,参考1.数据类型。
  • PHP在请求结束时释放该进程所占的空间,常驻内存空间基本为0。
  • PHP使用命令能随时随地释放对象所占的空间,JAVA即使使用命令也必须等待垃圾回收。

7. 面向对象

  • PHP支持面向过程和面向对象两种方式,执行HelloWorld只需要一条语句。
  • 基于PHP是弱类型语言,PHP的对象也是一种结构非常松散的对象,更像是静态方法的集合加上数据的集合。

8. 面向接口

  • PHP的面向接口因为弱类型而非常不严谨,无法定义接口的返回类型和参数类型,导致面向接口被PHP社区默认为保留特性。

9. 语言特性

  • PHP拥有文件包含- 机制,使用语句引入另一个文件之后可以识别并包含引入其中的内容。
  • PHP拥有析构函数,可以在对象释放时(被引用为0之前)执行。
  • PHP不支持重载,可使用可变参数的函数曲线救国。
  • PHP默认方法及变量的权限是public。

后记

这篇对比文章写于大半年前刚刚由 PHP 转 Java 的时候,从那之后就投身入 Java 的怀抱,很少继续想过这个问题,今天面试很意外地被问到了这个问题,一时间竟然有点语无伦次。要放在半年前,这个问题我或许有清晰的答案,也能侃侃而谈谁是世界上最好的语言。但对于现在的我来说,再度思考这个问题,却有着许多不同的角度。

语言终归都是一门工具,对于普通开发者来说,工具只要能知道如何使用,方便使用,便能成为开发者实现自身价值的利器。放到这个问题来说,这篇文章里列出的语言特性所展现的差异,仿佛就无足轻重了。对于一个架构设计者来说,或许市场上是否已有成型的技术生态,是否流通着丰富的技术从业者,更影响对技术选型的判断。对于开发者来说,是否能快速掌握这门工具的使用,是否有足够的途径来支撑学习的过程,可能更为关键。

我们无法否认 PHP 简单易上手、快速构建应用的优点,也无法忽略 Java 在大型企业级服务构建中几十年来积累的丰富的经验,还是得参照各方面的因素进行抉择。

人生苦短,我选 PHP Python

本文遵守知识共享署名-相同方式共享 4.0 国际许可协议,未经允许不得转载暂时没有标题 » 简述PHP与JAVA的主要区别

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

联系我们GitHub