php和java在开源社区的活跃度严重超过了其他的语言,使用人数也都是相当之多;活跃的开发工程师们能够给我帮助,且这俩都能很好的跨平台,不用花费大量的人力物力去维护.php灵活,好学,上手快,容易修改,容易发布,关键是热部署.
Java的优点是稳定可靠、运行效率高(尤其是JIT的出现之后差距更大了)、不容易犯错(强类型、预编译、必须拦截异常等等),缺点是开发和发布的效率相对较低.尽管优秀的工程师能在一定程度上改变以上的问题,但通常而言,哪能到处都是高手多如狗的梦之队?
从MVC的层次结构上说,在一般网站项目的开发周期中,需求变更最频繁、调整最多的是View,其次是Controller,最后是Model.这非常好理解,没事干谁天天改数据结构?每次版本升级控制结构都要改的啦,或多或少而已.
再次是两者之间的通信,目前RPC技术已经足够成熟,无论是Web Service/Hessian/RESTful API都能够让开发人员专注在功能开发上,而不需要过多的考虑异构平台的差异和通讯的细节.这也就意味着在大公司里同时应用两种语言的方案并不会引入过多的复杂度和工作量.当然,文档量的下限倒是所以呢被拔高了不少,但事实上大部分团队对此其实都是喜闻乐见的:别每天说文档重要但没空了,你不写其他同事怎么配合?
靠近用户的前端,使用PHP能够更快的完成前端频繁而琐碎的更新,自如的应对各种需求的变化.页面的结构调整、用户输入内容的基本验证、仅只和用户交互有关的简单逻辑等都很适合使用PHP来开发,甚至可以通过类似Smarty等模板技术将其页面的变动迁移到前端团队.而基本的业务逻辑和数据的更新采用Java开发,可以有效的提高复用度、提升性能和吞吐能力、规避安全问题等.而开发效率稍有降低换来的是可维护性的提升,发布速度慢就更不是问题了,因为通常对于基础业务逻辑的调整往往都是整体修改,并层层测试确认才能发布的.
所以,大型网站前端采用PHP后端采用Java,既好招人又好维护、系统稳定还性能高、连安全性都大大增加.代码复用、文档完备度居然也都改善了.让你在以上这些好处触手可及时,对架构师知识谱系在广度上要求更高一些这事根本就不是个问题.
为什么不是仅用PHP或是仅用Java?
其实也有很多公司为了保证团队组织不至于过度复杂,会更倾向于采用单一语言,尤其是中小公司.
单一方案其实一样可以做良好的隔离,PHP同样可以提供Service,而性能问题其实很多时候是算法和架构的问题而不是语言差异的问题.如Velocity或JSTL等也是很优秀的隔离方案.
但这些方案在高压力下会暴露出很多问题而体现双语言的优势,这些在上面其实都提到,详细说明一些很难得到改变的点:
① PHP由于其动态脚本语言的特性,包括类、函数、常量在内都需要在每次请求周期中重复执行后才能建立运行环境;为了保证解析速度而牺牲编译质量;应用了FastCGI但仅仅只是复用进程处理请求减少fork成本而不是像其他语言,初始化完毕后通过FastCGI的接口获得数据并以对应接口返回数据等几个原因,基本上已经不可能在性能上追回当初更烂现在开着JIT牌跑车的Java了.
个人理解主要原因如下:
(1)PHP全开源,开发网站有完整的组合配套.LAMP是很好的低成本解决方案.
简单的说php的流行和实用性有关系,但不是绝对关系,导致大部分网站使用php的主要原因大概有以下几个点.
①php所需要的环境容易搭建,相对于java web,python等,php的环境搭建比较简单,甚至因为互联网上出现许多集成环境包,环境搭建已经是傻瓜式了.而其它的语言,一般都比较复杂,个人建站者,技术能力不足的时候,根本就不会搭建环境.
最后,php其实实用性没有想象的强,它只能作为web开发语言,而java,python却没有这方面的限制.另外,正因为php网站使用量巨大,也导致越来越多的的黑客学习针对php入侵,这也是个很尴尬的问题.所以简单的说,php能够众多人用的根本原因,是方便,好学,容易玩得转,这多亏了大部分辛苦钻研的开发者,而并不是实用.
因为php能做的,很多编程语言都可以,甚至比它更厉害.
很多系统应用站点是用java开发的,就网站部分而言,有jsp技术
java开发的很多很多代码在服务端,即使给你源码,很多时候让你配置都困难,普通用户上手不是很方便.
而PHP开发的程序的源代码网上有很多都是公开的,他人拿到php开发的程序后都可以进行修改.
开发快速,性能也不错.
所以就实际应用而言,php更简单快捷.
就如同我熟悉C◆◆ delphi java
但我如果接项目,一般是尽量用delphi,因为delphi开发快速方便.