PHP与J2EE的对比

网上有很多关于PHP与J2EE之间的对比,细观无非以下几点:

1.语言特征

PHP为脚本语言,解释型语言,弱类型,专为Web开发打造。Java为C语言系编程语言,编译型,强类型,有跨平台的特征。从语法简洁性来说,PHP比Java简洁,毕竟PHP诞生比Java晚,同样的逻辑在PHP中表达起来会简洁于Java,这一特性导致同样熟练度的PHPer与Javaer相比PHPer编程速度要快于Javaer。

2.执行速度

语言特征决定了执行速度,在执行速度上,网上也有很多对比,总结而言Java优于PHP,但事实上比较两者的执行速度意义不大,因为Web应用的效率瓶颈是在对数据库的相关操作上,需要强调的是PHP与Java同样是作为Web服务器开发语言,功能都是操作数据库服务器以及动态网页呈现而已,如果网站多数以静态页面的形式呈现给用户,那两者比较毫无意义。

3.部署方式

PHP典型的部署方式是LAMP,即Linux系统+Apache服务器 +MySQL数据库+PHP语言,而JavaEE的部署方式有Linux系统+Tomcat服务器+Mysql数据库+Java语言,不同之处只在于服务器与语言的选择,Tomcat与Apache都是开源免费的服务器,从部署上来讲两种语言都有可行的解决方案。但在这里重点讲的是虚拟机主机,国内的虚拟主机大多不支持Java,即便支持Java也贵于PHP,而且Java应用大多使用Tomcat服务器,而java虚拟主机是共享Tomcat进程,如果部署到该服务器的其它应用影响到了Tomcat进程会导致所有应用都无法使用Tomcat进程,因而主机服务商维护Java服务器成本高于PHP服务器,所以这也导致了PHP在Web端独大的现状。当然不用虚拟主机则完全没有这样的顾虑,如使用云服务器,云服务器可以自行配置相关环境,而自由是把双刃剑,安全但是价格高。

5.团队配合

在提倡前后端分离的互联网环境下,模板开发方式导致的前后端高耦合越来越遭人摒弃,如今,Web应用后端只需要提供相应的数据接口供前端调用即可,典型思想如RestFul。所以在团队前后端配合角度,PHP与Java并无太大的区别。若Web应用考虑SEO搜索引擎优化仍采用模板开发的模式,则PHP语言对前端的友好程度则高于Java。

5.系统架构

在系统架构这方面,Java毫无疑问完胜,Java拥有多种架构选择,常见的SSH框架即Struts+Spring+Hibernate、SSM即Spring MVC+Spring+Mybatis、SM即Spring boot+Mybatis都可以作为web应用的框架选型,这些框架能够很好的将后端模块进行分离,根据具体需求的不同选取不同的MVC层、业务层、持久层框架进行开发。有人说PHP也可以做到,说PHP有很多的框架也可以做到分层架构,ThinkPHP不就是国人开发的PHP MVC框架么?PHP有框架这点毋庸置疑,但是PHP从语言特性上来讲并不适合做框架,框架和面向对象编程思想有很强的联系,而PHP语言特性上对面向对象并不友好,这也就导致了PHP在框架这条路上其天花板与Java相去甚远。在这里有些PHPer毫无疑问会义愤填膺,但事实如此,PHP的语言特性偏向与面向过程,其旨在开发特定的业务逻辑,这也是PHP适合Web开发的原因。又有人会说,PHP5.0之后也支持面向对象,但事实上PHP也是不得已而为之。

技术选型 到底用PHP还是J2EE?

涉及到这个问题,作为应用拥有者,考虑问题无非从以下几点:

1.人力成本

与Java相比,PHP作为后起只秀,在人才库上少于Java乃是不争之实,其实这也跟当今教育有关。当今教育系统多半以学院派编程语言作为入手语言即C语言系,如C/C++、C#、Java,所以学历教育下的Web编程语言以Java居多。而PHP语言的学习大多在职业教育下,也不乏一些在社会教育中自行学习的。这一现状也导致了PHP人才在社会中的稀缺。供求关系决定了人力资源价值,PHP人才价格高于Java人才由此也由此得到体现。

2.项目需求

在基于B/S架构的Web应用中,项目需求复杂程度跨度比较大,从企业展示网站、个人博客搭建,到电商平台、CRM系统,再到金融平台、银行系统,项目需求复杂程度以指数级递增。再加上Web应用运营阶段时版本更迭对项目需求的影响,Web应用在开发之初就需要建立起一个完整的系统设计。与国家5年计划类似,系统设计在最初版本一定有着一定的空间与时间假定,例如一个最初设计为企业展示网站的Web应用,在一定时间与一定发展程度的影响下也绝不会跳出企业展示需求而变成银行系统。这样一个系统设计的假定与技术选型息息相关,而PHP和Java在Web领域的也有着不同应用场景。简单的系统设计PHP完全可以胜任, 而复杂的系统设计意味着后端代码需要模块化,要低内聚/高耦合以及代码重用,无疑面向对象的Java语言更适合这种复杂的场景。

3.运营成本

一个Web应用总归是要部署在网络中供其用户浏览使用的,而PHP与Java对运营成本的影响也会影响到其技术选型。对于Web应用的运营而言,无非部署与维护两大块。部署考虑的是服务器价格,维护考虑的是人员开支。

部署方面,PHP Web与Java Web在网络中的部署方式通常有三种,一种是镜像部署,一种是虚拟主机,还有一种是云服务器。镜像部署只需要一台连接到网络的电脑,虚拟主机需要向主机商租用,云服务器类似与虚拟主机也需要向主机服务商租用,三者对于不同的应用场景各有优劣,其区别就在于服务器负载、稳定性与安全性等方面,详细区别读者可以自行百度,价格方面,无一例外,Web服务器对PHP这个脚本语言特别友好,所以PHP服务器统一的要比Java服务器便宜;

维护方面,PHP Web与Java Web的维护有两个方向,一个是应用异常,还有一个是服务器异常,应用异常让开发人员去调试,服务器异常如果是镜像部署让网络管理员与开发人员协同调试,而虚拟主机与云服务器则找相应的服务器提供商即可。运营成本经过部署与维护的综合考量:维护成本在人力成本中可以归算到人力成本这块,而部署成本除镜像部署不需要考虑PHP与Java的差别,虚拟主机与云服务器部署PHP则较低于Java。

综上所述

对于一个普通的Web应用而言,如企业展示网站、个人博客搭建、微商平台、小型ERP、CRM系统,技术角度PHP完全足够,价格角度PHP也便宜于Java,开发速度PHP略优于Java。对于一个复杂的Web应用而言,面向对象的Java将会是不二的选择,虽说费用高,但贵只有贵的一个缺点,便宜则只有便宜一个优点。需要特别提出的是,内网应用,也就是基于B/S架构但不挂入互联网的Web应用,我推荐Java。

作者:Bool_Eason
链接:https://www.jianshu.com/p/90257a757884
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

PHP与Java对比相关推荐

  1. java对比俩个word文件内容差异

    java对比俩个word文件内容差异 添加依赖: <dependency><groupId>e-iceblue</groupId><artifactId> ...

  2. golang设计模式介绍(内含各个模式的java对比)代码解读

    golang设计模式介绍 设计模式是面向对象软件的经验,是通常设计问题的解决方案,每一种设计模式系统的命名,解释和评价了面向对象中一个重要的和重复出现的设计. 以下一一介绍这些设计模式 1.1工厂设计 ...

  3. smali基本语法简介(与java对比)

    smali基本语法简介(与java对比) 1.smali和java基本数据类型对比 smali java B byte S short I int J long F float D double C ...

  4. Java对比两张Excel表的数据,java对比两个excel或者一张excel和数据库的一张表的数据是否相同,两张excel表格匹配相同的数据库...

    excel自动从数据库匹配相应的数据 vlookup函数:vlookup(lookup_value,table_array,col_index_num,[range_lookup]) 第一个:look ...

  5. ubuntu java对比win_Ubuntu PK Vista Java性能大比拼

    [IT168 评测]又一次Linux和Windows两大系统的对决.这次的考察对象是Java性能,而参与测试的两套系统是Ubuntu 8.10和Windows Vista Premium SP1. 测 ...

  6. Java对比GO的优劣势

    笔者最近因为有个需求,二次开发了微信三方管理平台的go项目,也是借此机会聊一下使用go后的一些感受 性能对比 Java Go 优势 最低运行内存 70M 20M Java面向对象语言就注定一个实例的内 ...

  7. java 对比两个表的字段的差异_Joolun小程序商城 2.2.2版本上线了——Java微信快速开发平台...

    Joolun是一款基于spring-boot的微信快速开发平台,目前拥有公众号基础版和小程序商城版两个版本.Joolun采用目前流行的前后端分离技术所写,是一款高效.易用的java微信开发框架平台,二 ...

  8. java对比python的优势_Java相比Python3有哪些优势?

    这是一个非常好的问题,作为一名IT从业者,同时也是一名计算机专业的教育工作者,我来回答一下. 首先,Java语言与Python语言都是非常流行的全场景编程语言,在很多开发场景下,既可以使用Java语言 ...

  9. kotlin与java对比

    为什么80%的码农都做不了架构师?>>>    kotlin作为一个现代的适用于多平台的静态类型语言越来越受到java开发同学的喜爱,尤其是android开发同学的喜爱,下面从几个方 ...

最新文章

  1. 分布式系统性能监控工具,初探Pinpoint Agent启动源码
  2. oracle 查询无限开始,Oracle无限分级下查询指定分类下所有子分类Sql
  3. python字符串find函数实现_python中实现查找字符串的find函数
  4. 【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | native 函数查询 | dalvik_system_DexFile.cpp#defineClassNative 函数 )
  5. Python一些特殊用法(map、reduce、filter、lambda、列表推导式等)
  6. 移动机器人传感器---IMU
  7. 为什么要做稀疏编码_为什么我每天都要编码一年,所以我也学到了什么,以及如何做。...
  8. matlab读取时间数据,Matlab有关数据库读取及时间项的设定
  9. CSS3 Flex布局子元素的属性
  10. 企业域名备案流程_2021境外投资备案申报流程(办理企业境外投资证书注意事项)...
  11. SAP License:如何获得成为SAP顾问能力?
  12. 基于java WebDriver +TestNG 框架环境设置
  13. Node.js 指南(入门指南)
  14. python生成随机密码串
  15. Matlab求拉普拉斯变换和拉普拉斯反变换
  16. 第一个计算机病毒出现在哪个年代,计算机病毒最早是由什么提出的
  17. 美国计算机编程竞赛,USACO美国计算机竞赛
  18. Longhorn 云原生容器分布式存储 - 故障排除指南
  19. 基于关联规则的气象服务智能推荐
  20. Python问题:UnboundLocalError: local variable 'xxx' referenced before assignment

热门文章

  1. SpringMVC工作流程(详-小白版)
  2. matlab svd降维测试数据集,SVD降维
  3. 关于ACCESS下OleDbParameter的使用
  4. TextBox文本框常用属性与事件
  5. 安装教程rtx2080ti_Ubuntu 18.04安装NVIDIA(英伟达) RTX2080Ti显卡-Go语言中文社区
  6. 2D射影儿何和变换——柱面投影,图像拼接柱面投影
  7. html和css中input输入的样式调整
  8. 自然语言处理数据集集锦(持续更新ing...)
  9. W的图像处理之圆检测(2)一圆形标记点的粗定位算法
  10. 百度爬虫:如何提高百度蜘蛛对网站的抓取量