如今市场上的电子商务软件基本上可归结为两大阵营。即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的开发程序在别人拿到代码后,能够非常easy的进行改动。

而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的程序猿都非常easy转型为PHP程序猿。这使得PHP程序猿如同国球一样普及。相同更是高手如云。高质量的PHP软件产品也层出不穷。

server成本方面。PHP最经典的组合PHP+ MySQL + Apache。Java也是常常与MySQL + Tomcat、JBoss等软件配合。全部软件都是开源免费的,所以server端的投入都并不高。

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

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

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

不怕不识货,就怕货比货。PHP开发出来的产品应用普及。口碑良好,可是Java开发出来的产品,非常难形成规模。直接导致产品化的少。项目类型的多。

正由于PHP开发的产品总体性能经历了万千使用者的检验与完好。Java与之相比则相去甚远,所以Java仅仅有走政府路线。以价格落差来平衡採购方的心态。也就不足为奇了。

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

作为程序猿。不管PHP还是Java。

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

为PHP摇旗呐喊!的更多相关文章

  1. 用户反馈:对 Rafy 开发框架的一些个人建议

      这篇文章是去年 Rafy 框架发布后,许胜平先生为我提出的一些建议.他从用户群体分析.社区.商业模式.技术支持等方面对框架发展提出了建议,我觉得写得非常不错.此文不仅适用于 Rafy 框架,所以不 ...

  2. 给“.Net工资低”争论一个了结吧!

    昨天我写了一篇<工资低的.Net程序员,活该你工资低>,底下的支持.争吵.骂娘的评论依旧像之前几篇园友的博客一样繁荣.公说公有理,婆说婆有理,这样争吵下去永远没有尽头.数据没有情绪,是公正 ...

  3. php和java的一些比较

    现在市场上的电子商务软件基本上可归结为两大阵营,即PHP阵营和Java阵营.但对接触电子商务不久的用户来说,看到的往往只是它们的表相,只是明显的价格差异,却很难看出它们之间的实际差异.其实,PHP+ ...

  4. SAP一句话入门 .

    SD是Sales and Distribution的简称.在SAP系统中,销售与分销模块处在供应链下游,关注从客户订单到向客户收款的全过程. SD模块中的Sales好理解,而Distribution却 ...

  5. <转> 纸牌屋1-4集分析

    原文:http://blog.sina.com.cn/s/blog_b86c61490102v56t.html 第一季第一集 主人公弗兰克的出场,是以对待一只邻家将死之狗的态度展开的,充分显示了主人公 ...

  6. GNU/Linux与开源文化的那些人和事

     一.计算机的发明 世上本无路,走的人多了,就有了路.世上本无计算机,琢磨的人多了--没有计算机,一切无从谈起. 三个人对计算机的发明功不可没,居功至伟.阿兰·图灵(Alan Mathison Tur ...

  7. 长沙4月21日开发者大会暨.NET社区成立大会活动纪实

    活动总结 2019年4月21日是一个斜风细雨.微风和煦的美好日子,由长沙.NET技术社区.腾讯云云加社区.微软Azure云技术社区.中国.NET技术社区.长沙柳枝行动.长沙互联网活动基地(唐胡子俱乐部 ...

  8. Surging1.0发布在即,.NET开发者们,你们还在等什么?

    Surging1.0发布在即,.NET开发者们,你们还在等什么? 开源,是近三十年来互联网经久不衰的话题.它不仅仅是一种技术分享的形态,更是一种开放,包容,互利共赢的互联网精神. 不到30年前,大神林 ...

  9. [转帖]SAP一句话入门:Production Planning

    SAP一句话入门:Production Planning http://blog.vsharing.com/MilesForce/A617692.html SAP是庞大的,模块是多多的,功能是强大的, ...

随机推荐

  1. 使用PostgreSQL进行全文检索

    * { color: #3e3e3e } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans ...

  2. JavaScript sort() 方法详解

    定义和用法 sort() 方法用于对数组的元素进行排序. 语法 arrayObject.sort(sortby) 参数 描述 sortby 可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注 ...

  3. media query 单位

    使用em 判断的media query 在用户缩放的时候不会被破坏,使用em更加合适内容为王的页面趋势   内容的容器需要根据内容而按比例设置,就像line-height:1.14em,文字大小的1. ...

  4. 在.csproj文件中增加npm, bower, gulp, webpack的构建

    <Target Name="RunNpm" AfterTargets="AfterBuild">   <!-- As part of publ ...

  5. Git Submodules are not SVN Externals

    一直在寻找Git跟TFS里面类似SVN Externals的替代方案, 今天终于找到了GIT里面的替代方案,在此做个备注 http://alexking.org/blog/2012/03/05/git ...

  6. Nginx安装、平滑升级与虚拟机配置

    Nginx 高性能HTTP反向代理服务器,也是 LAMP/POP3/SMTP代理服务器 由内核和模块组成,内核通过找配置文件讲客户端请求映射到一个location(location是Nginx配置中的 ...

  7. Excel、Exchange 和 C# (摘要)

    Excel.Exchange 和 C#Eric GunnersonMicrosoft Corporation 2003年4月21日 摘要:Eric Gunnerson 将向您介绍如何使用 Outloo ...

  8. java中的内存溢出和内存泄漏

    内存溢出:对于整个应用程序来说,JVM内存空间,已经没有多余的空间分配给新的对象.所以就发生内存溢出. 内存泄露:在应用的整个生命周期内,某个对象一直存在,且对象占用的内存空间越来越大,最终导致JVM ...

  9. mysql数据库第一弹

    mysql(一) sql语句 sql是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言. 在使用它时,只需要 ...

  10. cgg之数据类型

    所有例子都在64为操作系统 Linux 2.6.30 x86_64 x86_64 x86_64 GNU/Linux 1.1整数 在stdint.h中定义一些看上去更明确的整数类型 #ifndef __ ...