为PHP摇旗呐喊!
如今市场上的电子商务软件基本上可归结为两大阵营。即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摇旗呐喊!的更多相关文章
- 用户反馈:对 Rafy 开发框架的一些个人建议
这篇文章是去年 Rafy 框架发布后,许胜平先生为我提出的一些建议.他从用户群体分析.社区.商业模式.技术支持等方面对框架发展提出了建议,我觉得写得非常不错.此文不仅适用于 Rafy 框架,所以不 ...
- 给“.Net工资低”争论一个了结吧!
昨天我写了一篇<工资低的.Net程序员,活该你工资低>,底下的支持.争吵.骂娘的评论依旧像之前几篇园友的博客一样繁荣.公说公有理,婆说婆有理,这样争吵下去永远没有尽头.数据没有情绪,是公正 ...
- php和java的一些比较
现在市场上的电子商务软件基本上可归结为两大阵营,即PHP阵营和Java阵营.但对接触电子商务不久的用户来说,看到的往往只是它们的表相,只是明显的价格差异,却很难看出它们之间的实际差异.其实,PHP+ ...
- SAP一句话入门 .
SD是Sales and Distribution的简称.在SAP系统中,销售与分销模块处在供应链下游,关注从客户订单到向客户收款的全过程. SD模块中的Sales好理解,而Distribution却 ...
- <转> 纸牌屋1-4集分析
原文:http://blog.sina.com.cn/s/blog_b86c61490102v56t.html 第一季第一集 主人公弗兰克的出场,是以对待一只邻家将死之狗的态度展开的,充分显示了主人公 ...
- GNU/Linux与开源文化的那些人和事
一.计算机的发明 世上本无路,走的人多了,就有了路.世上本无计算机,琢磨的人多了--没有计算机,一切无从谈起. 三个人对计算机的发明功不可没,居功至伟.阿兰·图灵(Alan Mathison Tur ...
- 长沙4月21日开发者大会暨.NET社区成立大会活动纪实
活动总结 2019年4月21日是一个斜风细雨.微风和煦的美好日子,由长沙.NET技术社区.腾讯云云加社区.微软Azure云技术社区.中国.NET技术社区.长沙柳枝行动.长沙互联网活动基地(唐胡子俱乐部 ...
- Surging1.0发布在即,.NET开发者们,你们还在等什么?
Surging1.0发布在即,.NET开发者们,你们还在等什么? 开源,是近三十年来互联网经久不衰的话题.它不仅仅是一种技术分享的形态,更是一种开放,包容,互利共赢的互联网精神. 不到30年前,大神林 ...
- [转帖]SAP一句话入门:Production Planning
SAP一句话入门:Production Planning http://blog.vsharing.com/MilesForce/A617692.html SAP是庞大的,模块是多多的,功能是强大的, ...
随机推荐
- Robotframework-Appium系列:安装配置
1. Robotframework-android系列:安装配置 1.1. 安装环境 64位win10家庭中文版 1.1. 安装说明 网上robotframework-appium安装资料也不少, ...
- LNMP架构部署
第1章 部署LNMP架构步骤 1.1 ①部署Linux系统(OK) 基本优化完成(ip地址设置 yum源更新 字符集设置) 安全优化完成(iptables关闭 selinux关闭 /tmp/ 1777 ...
- Python实现翻译功能
初入Python,一开始就被她简介的语法所吸引,代码简洁优雅,之前在C#里面打开文件写入文件等操作相比Python复杂多了,而Python打开.修改和保存文件显得简单得多. 1.打开文件的例子: fi ...
- #UnityTips# 2017.11.14
hi,all.最近比较忙,所以更新也比较慢了. 今天就来和大家分享一个小Tip,它是关于UGUI的坑的. 使用过UGUI的朋友们都知道,Canvas的渲染方式有三种: Screen Space Ove ...
- Python 3.X 调用多线程C模块,并在C模块中回调python函数的示例
由于最近在做一个C++面向Python的API封装项目,因此需要用到C扩展Python的相关知识.在此进行简要的总结. 此篇示例分为三部分.第一部分展示了如何用C在Windows中进行多线程编程:第二 ...
- [认证授权] 5.OIDC(OpenId Connect)身份认证授权(扩展部分)
在上一篇[认证授权] 4.OIDC(OpenId Connect)身份认证授权(核心部分)中解释了OIDC的核心部分的功能,即OIDC如何提供id token来用于认证.由于OIDC是一个协议族,如果 ...
- 多少牛逼的程序员毁在low逼的英文发音上(JAVA)
最最常用的关键词及音标 数据类型:boolean.byte.short.int.long.double.char.float.double. 包引入和包声明:import.package. 用于类和接 ...
- [转载] 运维角度浅谈:MySQL数据库优化
一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善. 作者:zhenliang8,本文转自51CTO博客,http://lizhenliang. ...
- tmux frequently asked questions
tmux frequently asked questions How is tmux different from GNU screen? tmux and GNU screen have ...
- ionic开发环境搭建之android及问题
1. 准备工作: a) 配置java开发环境 b) 配置安卓开发环境 注:下载android-studio后,可能会出现android一直在编译,出现这种情况,关掉你的as ,找到你的路 ...