目前市场上的电子商务软件基本上可以分为两个阵营,即,php阵营和java阵营。但是对于未在电子商务期间的用户来说,通常只看自己的外貌,但很难看到他们的实际差别。事实上,php+mysql的价值不局限于电子商务软件,php+mysql开发的软件整体上不值得java开发的软件。为什么php+mysql电子业务不是钱吗?首先要了解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方面。我还是要为自己的阵营摇旗呐喊!
更多php相关知识,请访问!
以上就是php和java差在哪里?的详细内容。