如今市场上的电子商务软件基本上可归结为两大阵营。即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. 使用Apache Commons Email 发生邮件

    Apache Commons Email的Maven依赖 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-e ...

  2. 【翻译】.Net Core的意义

    想要了解.Net Core的意义,就必须要了解拥有很长历史的.Net Framework,.Net Framework1.0于2002年发布.从那开始,每隔两年就会有一个主版本推出.伴随着Visual ...

  3. 移动端车牌识别sdk开发包(可下载)

    移动端车牌识别是一项基于OCR识别的应用技术.移动端车牌识别过程主要包含五个步骤,其中包括图像采集.图像预处理.车牌定位.字符分割.字符识别.输出结果等一系列计算机算法运算, 第一步[图像采集]:此步 ...

  4. centos6.5安装rabbitmq3.6.14

    The minimum version of Erlang/OTP required to run RabbitMQ server 3.6.0 through 3.6.14 is R16B03. St ...

  5. Python源码分析

  6. SpringBoot之简单日志配置

    我的目的指定一个文件夹输出:(不采用指定文件的原因是一个文件的大小时间长了会很大,不利于处理) logging: level: root: INFO org.sselab: controller: I ...

  7. JAVA提高十三:Hashtable&Properties深入分析

    最近因为一些琐碎的事情,导致一直没时间写博客,正好今天需求开发完的早,所以趁早写下本文,本文主要学习的是Hashtable的分析,因为上面一篇文章研究的是HashMap,而Hashtable和Hash ...

  8. IDEA安装步骤详解

    IDEA开发工具是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.各类版本工具(git.svn.github ...

  9. 《java.util.concurrent 包源码阅读》15 线程池系列之ScheduledThreadPoolExecutor 第二部分

    这篇文章主要说说DelayedWorkQueue. 在ScheduledThreadPoolExecutor使用DelayedWorkQueue来存放要执行的任务,因为这些任务是带有延迟的,而每次执行 ...

  10. CCF认证考试——折点计数

    描述:简单题 #include<iostream> using namespace std; int main() { ], n, count = ; cin >> n; ; ...