谈谈自己对于php和java的感受

背景:由于三年多的工作经验中,一大半时间在做人力外包,编程语言也就不像一些同学那样专注于一种。在某些方面这是优势,但是对于不会言谈表现的自己来说,接触到更多的反而是一些负面的境遇。比如在面试的时候,好几次面试官计算工作经验都会说:“你的java语言没有3年啊,中间还做了php开发啊”,或者“你的php语言没有3年啊,中间还做了java项目的”。中间有段时间,想过放掉一种语言,安安心心的做一个方面,但是来来回回的进入的公司还是做人力外包的,开发的语言也就又是各样的了。

谈了很多自己的经验感受,吐吐苦水吧。转入正题,说说我工作经历里的php和java吧。

刚毕业那会在学校学的是java语言,主要是j2ee方向的。那个时候的开发模式:导入jar包、配置xml文件、搭建ssh框架,然后在ssh框架下面进行自己的页面开发。只有一种语言,也就没有所谓的比较了。毕业后进入的第一家公司是做人力外包的,项目用的是php语言,然后突然发现php写项目的时候,原来是那么方便啊。不需要定义Bean层,json数据的传递,json_encode和json_decode解决;不需要声明变量的类型,判断值相等的时候也就不需要转换变量类型了;开始的时候在有了这些感受后,总结一句话就是同样开发一个web项目,php写的代码会比java少很多。刚毕业那会,有了这些优势后,自然的慢慢偏向了php做web开发。

之后做了一段时间的php后,项目结束了,人力外包到客户那边的自己自然也就需要听从公司安排,重新进入项目组了。搞笑的是这次进入的是j2ee项目,然后重温了一把导jar包、写xml配置文件、基于ssh框架开发web的流程。然后感觉不想做人力外包了,跳槽进了一家自己产品开发的公司,项目开发语言php。对于有了经验的自己,日常开发任务是按时按质完成了,然后,在这家公司我的技术眼界开始开阔了。不再是以前的那种只知道基于框架写if for这类的,知道了全文搜索引擎shinx和solr,知道了数据缓存memcache,消息队列rabbitMq,知道了图片搜索框架Lire,知道了Lucene等等。我开始去学这些我从leader那里听到的技术关键字,然后谷歌百度,再然后就应用到项目中进行开发。遇到问题谷歌百度,有时还会用这些技术关键字查找qq群,加进去,然后和群里的朋友进行问题请教。到了现在,自认为技术虽然还不够牛叉,但是关于技术眼界是有了一点小的收获了,关于应用一个新的技术,应该怎么快速掌握也算小有体会了。

然后,到了现在再谈php和java给我的技术印象的时候,我开始有了不同的看法了,也不会想着一定要放弃其中一个了。

总结起来看:在做数据展示一层的时候,毫无疑问的没有变量声明,没有bean层构建,没有json数据解析麻烦的php开发起来是快速而且让人愉悦的。而j2ee相较的就不那么舒坦了。但是的话,在数据收集,处理一层的时候,php多线程的薄弱,无疑也是没有之前那么舒坦的,就像我前面写的用php抓取数据项目。而相较于java的jar包和php的扩展库,我个人还是倾向于jar包,毕竟在服务器上安装扩展,作为非专业运维人员的自己每次总有那么些忐忑不安。但是,需要清楚的是,在有些开发场景里,不安装php扩展的话,去手写一个相同功能的php代码出来估计也并不是所有人都可以做到的。就像,我所接触到的,依照相似图片确定相似款商品的场景。在php里这里需要安装一个phash的扩展,悲催的是这个扩展还不是那么好安装的。而相对的如果用基于Lucene的Lire做图片对比搜索的话,就要简单的多了,添加jar包,定时创建图片索引库,需要查找图片的时候调用Lire的函数在图片库里进行匹配。

当然,到了这里的话,对于我这种不能创造轮子,只能使用轮子的悲剧程序员而言,也总结了一个属于自己的方式。在php处理薄弱的块用java去写,如果是数据收集或者定时处理大批量数据的case那就用j2ee去写,存入数据库,或者创建索引库。然后用php去查询数据库或者索引,按照逻辑找到自己需要的数据展示。如果是一些php没有支持或者扩展库安装维护很繁琐的case也用j2ee去写处理过程,处理的触发和结果返回以http请求方式进行。struts2接受php收集到的条件参数,然后由指定的action进行业务处理,最终将返回结果设为json格式给php,php再做相应的展示处理。当然,这中间会因为http请求导致性能会慢,但是像这种case毕竟不会很多,而且也可以通过优化其他方式来达到性能的提升的。比如:在php端进行memcache或者rabbitmq的条件数据存储,j2ee端收集条件数据处理,然后将结果和特定key对应存回memcache或者rabbitmq,php端再依照key取出结果这种。

最后,个人认为,其实真的没必要去比较php或者j2ee,因为技术人员到最后想要做自己的产品的时候,肯定是什么样的语言在哪个阶段能给自己带来方便就用哪种语言了。装一点的说法就是,没有最好的语言只有最适合的语言。 

补:对于数据抓取java的模式httpclient+jsoup可以满足。也听群里的朋友谈了java的大数据量收集时模式:Nutch抓取数据+Lucene创建索引+Hadoop集群运算,对于低学历没有辉煌过去,进不了BAT之类大公司的自己,大数据量下的那些处理模式还是太遥远了。这里补充上来是为了给有条件的朋友提供个眼界,留个技术印象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值