php转java知乎_php程序员来谈谈php和java

本人一直以来从事PHP互联网开发,之前用过Thinkphp,不过最近几年一直用Yii2。最近由于公司要开发一套OA系统,所以开始用JAVA在做(php开源的工作流引擎真的太烂,自己开发一套又没时间),这里就说说最近几天使用JAVA的一些感悟吧。

首先讨论一下理论上PHP和JAVA各自的优势。

PHP:开发效率非常高

JAVA:

(1),纯粹的面向对象,面向接口编程,各种设计模式让你玩得不亦乐乎。

(2),运行效率吊打PHP

(3),javaee开发的web项目,对象可以常驻内存,有真正的mysql和redis连接池

(4),强类型语言,保证代码规范

(5),有完善的开源社区支持,各种开源包让你玩得不亦乐乎

(6),做大数据开发,还是得用java,java对hadoop的支持比php好太多。

看到JAVA那么多好处,我也非常激动,怀着无限的憧憬,我用maven创建了我的第一个项目,框架用的是springboot + hibernate。可能有人要问我为什么不用mybatis,好像现在很多互联网项目都是用mybatis来实现。这个我是因为我之前只看过一本javase基础的书,没有做过javaee开发,所以我懂不起任何的java orm框架,后来一个qq群里面的哥们告诉我用hibernate,他告诉我OA系统并发不大,对效率要求不高的项目用hibernate很方便,所以我就去下载了一本hibernate的电子书来看。到后来我必须开始编码了,因为时间不够了,所以到现在为止我还用不来mybatis.

回归正题,吐槽一下我使用java崩溃的感觉:

(1),纯粹的面向对象感觉很有问题,比如一些对字符串处理和验证的公共方法。我定义一堆函数就完了的,现在用java,新建一个包,然后建立一堆类,然后用静态方法去实现

(2),配置太复杂,虽然说,现在springboot帮我们做了大量的默认配置,但是,对于一个写了7年php的程序员来说,这些配置还是让我非常崩溃的

(3),说到java的运行效率高于php,我承认。不过在实际的项目中呢,php提供了大量的函数,这些函数直接调用C语言编写的扩展,效率非常高。比如web开发中最常用的json操作,java还得去引入一个包,要不你自己写代码实现。java在这方面效率不如php

(4),说到对象可以常驻内存,这个有好处也有坏处吧,好处上面都说了,坏处就是代码如果编写不好,可能会造成内存溢出。但是php每次请求上来创建对象,完成请求之后所有资源全部回收的方式,基本不会出现内存溢出的问题

(5),强类型的语言,可以让我们代码很规范,不过,我却在无休止的类型转换中感觉到崩溃,特别是数字和字符串的转换。还有数字字符串没办法做四则运算,太繁琐了。

(6),太过于繁琐的开发,比如数据封装到javabean。大量的javaBean的定义,感觉特别奔溃,php开发中压根就不需要定义这样的对象,因为弱类型语言,就算对象没有定义某个属性,也可以动态加上。

(7),真正的连接池,这个是java的一大特色,在php中长连接是有问题的,因为每个php-fpm会长期持有一个连接,不管使用到没有。但是php的短连接非常强悍,直接调用C语言扩展,速度极快。我用php的短连接和jdbc的短连接对比,第一次连数据库php快30倍,之后也要快18到20倍左右。当然,php的短连接和java的连接池比起来就逊色很多了。然后这里说一下php也有连接池,php-cp扩展就是很好的连接池,不过由于php-cp也需要单独开启一个进程所以php-fpm进程和连接池的通信走的是进程信号的方式,这种方式效率依然比不上java的连接池,人家的对象就在内存中,拿过来就用。不过php-cp已经达到很好的效率了。我们要知道,和数据库和redis等需要走网络,和网络开销对比,php-cp比java连接池慢的那一点点效率完全可以忽略不计。

总结一下:

java纵使有高大上的设计思路,纵使高效的运行效率,纵使有那么多的优点。不过在实际开发中,我还是建议如果不是非得要使用java,用php来快速实现是一种很好的方式。然后,我之前听过有人告诉过我同样的代码运行起来php的cpu消耗比java高很多。这里说一下,opcache真的很重要,线上环境真的要努力的去配置好,劲量关闭opcache自动刷新,项目发布之后去手动刷新(不是真的手动,你可以写个脚本)是不错的选择。然后切记php在把源代码编译成opcode的时候,不会做代码优化,java是要做代码优化的(所以知道为什么php的编译那么快,java很慢了吧,人家要做编译优化的)。所以大家写代码的时候一定要保持良好的习惯。

我的疑问:

话说为什么php那么好,但是目前的工作岗位比起java少那么多呢?java那么难用,为什么大量的公司要用它做web开发,或者api开发呢?我是真没明白,因为真的觉得一点都不好用啊。

开个玩笑:

我也面试过很多php的人,说句实话,很多做php的人是学不懂java所以来做php的。因为java学习的东西太多,太复杂。不过这样的人就算是来学php,也不会学得有多好的,因为到后面来深入了之后,其实语言都大同小异的。我学习javaee然后整合各个框架开发项目一共用了10天时间。其实真的不难,沉下心去学习,所以技术都很简单。说真的我很难接受因为大量的php程序员水平不行(可能这也是很多公司不用php用java的原因吧),而让这门世界上最优秀的语言没落。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值