千锋教育-做有情怀、有良心、有品质的IT职业教育机构

你所在的位置:首页 > 常见问题

php和java的一些比较

时间:2017-12-08 15:29:46 来源:千锋教育  作者:千锋

   现在市场上的电子商务软件基本上可归结为两大阵营,即PHP阵营和Java阵营。但对接触电子商务不久的用户来说,看到的往往只是它们的表相,只是明显的价格差异,却很难看出它们之间的实际差异。其实,PHP+ MySQL的开发、品质优良的特性,已经让风靡大学校园的Java变的越来越难堪。而作为PHP+ MySQL为什么在历史的进程中,后来居上,独领风骚呢?为什么基于Java架构的的电子商务除了高额的开发成本,而变的前途暗淡呢?首先得明白PHP和Java之间的差异才行。

  1、 出身

  Java本来的设计初衷是为了家用消费电子产品开发一个分布式代码系统。

  PHP就是为了互联网的应用而生的。

  2、系统的技术架构比较

  分层是将系统进行有效组织的方式,分而治之的思想是计算机领域中非常重要的思想。在好的分层思想引导下,便能实现“高内聚、低耦合”,也能将具体的问题割 裂开来,易于控制、易于延展,易于分配资源。从PHP5版本之后,PHP对于系统架构方面也有了质的飞跃。ShopNC 采用PHP语言开发,可以的实现多层架构分布。运用MVC的设计模式,可使电子商务软件具有加、合理的系统架构。使得系统在可拓展性、需求应变性上与Java编写的电子商务软件系统的毫不逊色。

  Gutmans 在前年发表过一篇文章,其中也阐述了多核环境中多线程(JVM)与多进程(LAMP)的比较。其中就提到了多核系统非常适合LAMP架构的多进程方式。随着芯片业现在把主要精力都放在了多核而不是超线程技术上,JVM这样的多线程环境的优点在今天的硬件上将无法充分发挥。而多进程方式将提供多稳定性和可靠性。

  这一回合,PHP旗开得胜。

  3、数据库访问比较

  PHP可编译成具有与许多数据库相连接的函数。 将自己编写外围的函数去间接存取数据库。通过这样的途径当换使用的数据库时,可以轻松地修改编码以适应这样的变化。同时现在的PHP提供了数据库统一接 口PDO,对Oracle,MySQL,SQL2000等不同数据库的访问都可以通过桥来完成,而不用考虑数据库接口方面问题。同时为了好支持 MYSQL数据库,PHP还推出了MySQLi的数据库连接,加,安全。而Java是通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库 驱动访问数据库。而没有特别的针对性优化。如果同样是将开发的web应用从MYSQL数据数转到ORACLE数据,PHP通过PDO的接口,几乎不用做程序方 面的修改(ShopNC中已经通过自主研发的封装数据库层,已经可以很好的完成对多种数据库的支持,甚至无需通过PDO)。而Java开发的需要一定的的 改才能实现。数据库访问方式的差异,奠定了PHP开发出的电子商务软件和Java开发出来的电子商务软件是2个时代的差距,Java是传统的一 代,PHP却是新科技发展的成果,PHP不仅能够包容万物而且速度上稳步提升,效率比Java强悍的多。这一回合,Java稍逊风骚。

  4、安全性对比

  开源是安全的大优势,LIUNX 就是一个非常成功的佐证。PHP的开发程序在别人拿到代码后,可以很容易的进行修改。而Java开发的程序由于无法看到完整的源代码,只能看到一些编译好的类文件.class,所以底层架构的诸多隐患都无法提前预知,一旦发生灾难性的错误,后果必将及其严重。而PHP如果想要加密代码,也可以使用Zend 公司的权威产品zend guard 进行加密,以产品的知识产权。如果非要将PHP和Java在安全性上做个比较的话,只能说伯仲之间,如果出差距,也是由开发程序员的水平来决定的。这一回合,两者依旧平分秋色。

  5、互联网应用方向上的前瞻性和拓展性

  从整体来说,PHP适用于互联网应用,而Java语言设计之初,并不是以WEB为中心,而是以通用服务为中心。PHP能够将互联网的应用发挥到淋漓尽致,Java在通过标准的或者非标准的一些框架在迎合WEB应用的需求。

  为什么说PHP适合互联网的应用呢?

  首先,PHP对于大型系统负载方面,可以采用分布式部署。将数据库、应用逻辑层和表示逻辑层彼此分开,并将同层的根据流量分开。PHP在这个方面做的非常优异。

  其次,PHP提供的数据库接口众多且还有统一的接口,要将多个不同的数据库数据统一,不需要花费很大的力气。而Java也可以通过Class和EJB 获得规模支持,通过EJB/CORBA以及众多厂商的ApplicationServer获得结构支持。而与即有老的Java或者.NET 应用程序通讯方面,PHP可以通过即有的API接口进行通讯。至于数据的通讯所使用的数据无非也都是XML,JSON等。

  如果将PHP比作互联网中的佳表现奖,具备独挡一方的能力。那么Java应该获得的是没有创新奖,就如同欧洲中世纪武士,唯有沉重的框架,笨重的效率。

  难怪连当年的SUN也在其J2EE方案上支持了JRuby及Jython。而IBM Websphere意识到J2EE在WEB方面的不适应而开启了Project Zero项目。 结果呢? Project Zero 的首席架构师也是很无奈的公开承认“Java现在可以认为只是一种系统语言而不适合构建Web应用”。

  其实Java已经在企业级E化和关键业务应用中根深叶茂,但是在Web应用上,Java语言市场份额急剧下降,颓势尽显。

  所以这一回合,Java输的哑口无言。

  6、产品化程度

  用Java做开发,几乎没有一个程序员会从底层写起,因为都是即有封装的类。这其实是导致Java很难产品化的一个重要原因。因为几乎所有的程序员可以做 的都是比较浅层的应用开发。而就Java的类而言,放到互联网上,那只有一个沉重可以形容。而唯一让Java一直宣称的跨平台的优越性,其实那也是对于初 学程序者的一种宣传,对于资深程序员那就是一个笑话,一条鸡肋。经历了很多大项目的资深开发者都知道,开发伊始,程序需要跑在什么平台上,都是确定的了。 越是大型项目,越是确定的明确,而且轻易不会考虑平台的移植。即便需要在其他平台架设新服务,也是在新平台上进行增项的开发,与即有产品之间也可以通过 Webservice解决。而数据库是无所谓的。我想不会有人用ACCESS来做大型商业程序的开发吧!

  随着大多数业务应用程序包括CRM、ERP、报表、文档管理等等也都转向了Web,放眼望去,PHP的产品,琳琅满目,在互联网应用方面,可以负责的说, 涵盖率在99%以上。虽然众多产品的质量也是参差不齐,但是每个方向及领域都是有那么一些代表产品的。能举出范例的有Wordpress, Drupal, mediaWiki, osCommerce, SugarCRM,Discuz, QeePHP,ShopNC等等。

  产品化程度是直接佐证了工业化程度的一个重要数据。不能工业化的工具,其实其本身是有着非常大的悲哀的。

  这一回合,Java输的体无完肤。

  7、开发及后续维护成本比较

  既然PHP在互联网应用诸多方面都强于Java,那么Java开发出的电子商务产品何以与PHP产品竞争呢?这在于Java阵营普遍走的是政府路线, 而PHP阵营走的是全民路线。Java在互联网方面靠的是大学老师的言传身教,才得以在互联网世界狺狺狂啸,而PHP是靠得是自身品质而得民心,所以才一 路赞歌。

  软件价格的高低很大程度上和自身成本和功能相挂钩。PHP的入门门槛较低,但是任何方面成为高手,都是万里挑一。绝大多数学过c的程序员都很容易转型为PHP程序员,这使得PHP程序员如同国球一样普及,同样是高手如云,高质量的PHP软件产品也层出不穷。

  服务器成本方面,PHP经典的组合PHP+ MySQL + Apache,Java也是经常与MySQL + Tomcat、JBoss等软件配合。所有软件都是开源的,所以服务器端的投入都并不高。

  而Java程序员的学习成 本却是PHP成本的几倍,原因也很晴朗,本身Java就不是专门给WEB开发用的。所以,Java开发电子商务的成本要远远高于PHP开发出来的同类软件 产品。但也正由于Java开发的成本较高,所以往往也是做一个同样的产品,达到同样的效果,Java需要付出比PHP开发多出N倍的时间及经济成本。直接的造成了巨大的时间及成本浪费。

  后一回合,Java在WEB之战中,输的干干净净。

  通过以上数据也可以让读者非常清楚的意识到,采购了Java类的电子商务商品,你将来后续的维护期带来多么昂贵的经济成本,及付出多少宝贵的时间。商机是稍纵即逝的,如果商业上的运作永远需要在等待漫长的技术实现后才可以施展,那恐怕真的是黄花菜都凉了。

  不怕不识货,就怕货比货。PHP开发出来的产品应用普及,口碑良好,但是Java开发出来的产品,很难形成规模,直接导致产品化的少,项目类型的多。正因 为PHP开发的产品整体性能经历了万千使用者的检验与完善。Java与之相比则相去甚远,所以Java只有走政府路线,以价格落差来平衡采购方的心态,也 就不足为奇了。

  总结所有一切,PHP才是的电子商务软件发展的有力推动者,也将必然成为大势所趋,是不可逆转的,是不可被质疑的。

  作为程序员,无论PHP还是Java。高度这个问题上,其实对于我们而言都一样的。在这个高度上的战争其实是各大厂商之间的事情,和我们无关。但是例如WEB方面。我还是要为自己的阵营摇旗呐喊!

热帖推荐

  • 成都地址:成都市武侯区科华北路62号力宝大厦N(北楼)18楼
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 北京天丰利校区:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术广场服务楼2层、南区服务楼2层
    咨询电话:400-654-7778 010-82790226-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 深圳科技园校区:深圳市南山区科苑南路高新技术产业园R3-B栋5层
    深圳大学城校区:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    深圳西部硅谷校区:深圳市宝安区宝安大道5010号西部硅谷B座A605-619
    咨询电话:0755-86681178/9-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 上海地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-65025129-602
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、好程序员
  • 郑州地址:郑州市金水区纬五路21号河南教育综合楼(经纬中学楼)6/7/8层
    咨询电话:0371-55911950 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 广州地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 大连地址:大连市甘井子区软件园路2号B8座二楼
    咨询电话:0411-39026086 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 武汉地址:武汉市东新区光谷大道77号金融港B26栋9楼
    咨询电话:027-59905909 027-59905908 027-59905902
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 西安南二环校区:西安市二环南路西段60号永安大厦4层
    西安科技园校区:西安市雁塔区高新六路52号立人科技园C座西区4层
    咨询电话:029-85260160 029-85261030 029-85260960
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 杭州地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226-801
    面授课程:iOS课程培训、Android课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226-801
    面授课程:iOS课程培训、Android课程培训
  • 扫码匿名提建议
    直达CEO信箱