月光博客

青青子衿, 悠悠我心, 但为君故, 沉吟至今

« 通过手机免费上传图片到Flickr网络入侵检测系统的主动响应技术 »

Java在Web开发语言上败给了PHP

  PHP的主要语言开发者之一、Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言。他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java已经输掉了Web开发语言的战争,PHP是事实上的标准和胜利者。

  Gutmans的这篇文章在技术界引发了强烈争议,很对人对此有不同的意见,我在这里就阐述一下我对PHP和Java两种语言的看法。

  我早先曾经在《Perl、PHP、ASP、JSP技术比较》一文中对比过PHP和Java的异同,简而言之,PHP是一种解释执行的脚本语言,语法和C语言类似,易学易用,不懂电脑的非专业人员稍经学习也能使用PHP.而Java要先编译成Class文件,然后在Java虚拟机上执行,Java开发需要熟悉Java语法以及一些核心的架构,从而实现一种可复用的、跨平台的软件,Java比PHP要难学的多。

  实际上,从技术架构来说,Java语言相比PHP有明显的优势,Java使用的是面向对象的系统设计方法,而PHP还是采用面向过程的开发方法。PHP只能实现简单的分布式两层或三层的架构,而JAVA可以实现多层架构。数据库层(持久化层)、应用(业务)逻辑层、表示逻辑层彼此分开,而且现在不同的层都已经有一些成熟的开发框架的支持。例如Struts就是利用Java的web开发技术实现了MVC的设计模式,而在业务逻辑层也有Spring框架,数据库持久化层有Hibernate等框架。这些框架可以方便开发者高效、合理、科学得架构多层的商业应用。从数学运算和数据库访问速度来讲,Java的性能也优于PHP.实际上,对于跨平台的大型的企业应用系统来讲,Java几乎已经成为唯一的选择(微软.NET不支持跨平台),但是在于Web网站应用开发来讲,Java却面临着被PHP边缘化的危险,几乎所有的虚拟主机都支持PHP+MySQL,而支持Java的却少之又少,在资源上,网上有不计其数的PHP资源,很多著名的大型网站(例如Facebook、Mediawiki等)都是基于PHP的,而成功的Java网站却寥寥无几,这又是什么原因呢?

  Java的理念是“一次编写,到处运行”,Java在应用框架底下的架构是无与伦比的,远胜过其他任何语言,Java的框架利于大型的协同编程开发,系统易维护、可复用性较好。而PHP很容易自学,让热备能快速简洁地编写代码,适合于快速开发,中小型应用系统,开发成本低。在调试、发布上,PHP也较Java简单。

  理念上的不同导致了Java和PHP在Web应用开发上显示了不同的结果,尽管Java的数学计算和数据库访问都有优势,架构也相当完美,但是PHP却可以简单轻松地支持高强度Web访问,能够快速开发应用,支持PHP的虚拟主机多如牛毛,使得用PHP开发一个网站比用Java开发一个网站要快得多,容易的多。Java所拥有的优点只适合传统的以软件项目为核心的开发模式,而PHP更适合于以客户为核心的SaaS的开发模式,因此,PHP目前在Web网站开发的优势完全是因为Web网站开发的特殊性而导致的,并非编程语言特性所决定。

  因此,PHP在Web网站开发语言的战争中已经慢慢将Java抛在了后面,Java要想在Web网站开发上奋起直追,的确应该多听听Andi Gutmans的意见,彻底改变一下思路才行,否则两者的差距只能是越来越远。

  另外,虽然在国际上LAMP(Linux+Apache+Mysql+Php)架构已经占领了统治地位,但是在中国国内还有一个怪胎,就是基于微软的Windows Server+IIS+SqlServer+ASP/ASP.NET的架构,从理论上说,微软的这一套架构也能实现不错的性能,只可惜Windows和SqlServer价格不菲,整个架构在性能上比起LAMP不仅没有什么优势,反而还有不少劣势,因此微软的这一套家伙在国际市场上吃不开。而国内使用微软盗版则可以忽略成本,而ASP的易学易用性不逊于PHP,甚至连IT外行都能够使用,因此在国内也有不小的市场。但是随着中国在保护知识产权方面的日趋完善,免费的LAMP依旧是未来的趋势。



原创文章如转载,请注明:转载自月光博客 [ http://www.williamlong.info/ ]

本文链接地址:http://www.williamlong.info/archives/1314.html
  • 文章排行:
  • 5.自由天空
  • http://www.52freelancer.com
  • PHP只不过在快速开发方面有优势而已,而且还有一点:开源,这两点在web开发方面吸引了大量的新手,所以才有如此优势。在代码架构和设计思想上还远不如java来的经典。不同的场合应用不同而已。
  • 2008-4-22 1:06:23
  • 7.49degree
  • http://blog.hunan2s.com
  • PHP同样也在向面向对象发展 PHP5已经能大部份支持OOP
    PHP是解释执行的,Java是编译执行的,看起来效率Java要好很多
    但是PHP却因为一切都是免费的,在国外的普及程序非常高
    一些成熟的大型应用为PHP这些缺点做出了很好的弥补,比如Zend.

    Java和PHP的应用方向都不一样了。
  • 2008-4-22 1:30:30
  • 9.reg112331
  • 放× 你学了几天程序设计哇
    有本事你让工行 移动网站都用PHP去
    企业级的支持PHP有么?有漏洞出来有人在第一时间解决么?
    简直放×
    PHP服务大众 小众语言
    JSP服务高端客户 贵族语言
  • 2008-4-22 1:54:01
  • 10.reg112331
  • Y的 写博客赚你的钱 又没人说你
    大论这个语言如何不好啦 这呀那呀的
    关你鸟事
    中国的blogger就认准了google当他爷爷
    google网页CSS更换都能发现 闲扯上一堆吹捧的话
    有意思没意思
  • 2008-4-22 1:57:54
  • 11.reg112331
  • 看你那标题就知道你半斤八两了
    你怎么不说败给了.NET
    你Y的能说出败给“JVVA”这句就和第二局一样白痴
    JAVA是啥 大哥 搞清楚哇
  • 2008-4-22 2:00:51
  • 25.jock
  • 1、你没有说出来java在哪里败给了PHP
    2、你不知道什么是SaaS
    3、微软的.Net是基于组件,我想你对于软件开发了解的也不多吧?
    4、PHP支持分布式事务吗?
    5、知道EJB是什么吗?
    6、Facebook只用到PHP吗?服务器端的语言你看得到吗?你只看到了他的视图层用的什么
  • 2008-4-22 10:26:41
  • 26.Anatorian
  • 没想到月光也回来评论这事。
    其实,Andi Gutmans只是说java在web开发方面败给php,并没有说java在所有方面败给php。Java已经在100件事上做得很好,完全胜过php,在一件事上败给php也没什么。
    java适合于做企业内部使用的业务密集型的网站,php适合于做对外的展示密集和交互密集型的网站,各有各的适用领域。从这个角度来说,java并没有输掉,还占据着自己的地盘。
    java界已经发现了java在web开发上的许多不足,正在努力学习进步。一方面,java开发者们将各种善于做web开发的动态语言移植到java平台上,比如 ruby -> jruby, python -> jython, 甚至于php都可以在jvm上运行。Jruby目前运行效率比原生的C ruby 还要高。另一方面java也在创造着自己的原生动态语言来提高开发效率,比如groovy。最后,jvm本身在前年彻底开源后,也在酝酿着变革。 新版jvm将会更苗条,更有序的管理jar包,对动态语言提供更好的支持。我相信不久的将来,用java做web开发会像php一样快速。
    楼上的reg112331 骂人太不应该了,你可以不喜欢别人,但是伤害别人就不应该。
  • 2008-4-22 10:29:16
  • 29.dowei
  • java php都做过。
    某些人不用急着跳,只是说在web开发上而已。大家都有擅长,如果我说java没有黄鼠狼放的×臭,java的fans是不是也要争一下java的更臭?

    web强调快速灵活,而在这方面,java过于复杂。之前有个经验是oracle + websphere的应用,ejb等部署完毕之后,两台小型机上跑也只能支持几十人的同时在线。但是php轻松的达到上百。但是如果是更大更密集的情况,通过增加服务器数量,java平台上的性能提升比php要大,稳定性也更好。

    另一点是,厂商针对的市场和对市场的欺骗。java变成了厂商骗钱的工具。有人暴利少销,有人薄利多销。而web市场,大部分是薄利多销。
  • 2008-4-22 10:59:34
  • 30.Sunxc
  • http://www.qbencao.com
  • java 相对于php在开发一些小的网站博客之类的 肯定不如php简单易用,但java只要是开发企业级的项目的 在一些大型群集服务器中部署java项目 部署也麻烦 因此java 并不适合开发小东西 并不能说败给了php!!!只能说各有千秋
  • 2008-4-22 11:21:12
  • 32.Sunxc
  • http://www.qbencao.com
  • @dowei 但是在大型项目 跨平台的项目 我想没有几个用php实现的
    你去看看所有银行的系统 好像没有用php的 一般都是java 和.net 实现
    java的本身也是开原的 如果哪一天php也和java一样可以做这样的大型项目 我想支持php的那些开发工具也未必都是免费的了
  • 2008-4-22 11:32:33
  • 36.流星雨
  • http://blog.jmxxw.com
  • 说java有什么什么功能,这是不具有说服力的,的确一些大型项目都用java,但我个人觉得商业原因是占主要的,当然我们不能完全否定java,java当然还有他的特色,要不也不会存在,但我仍然支持php打败了java。
  • 2008-4-22 12:12:41
  • 37.Loveyuki
  • 如果硬要说 Windows + IIS + SQLServer 部署成本比 LAMP 高的话,我只能说月光你应该再仔细调查一下他们的部署成本。而不是想当然的认为 LAMP 每个组件都免费就认为他的部属成本低。
  • 2008-4-22 12:15:11
  • 38.12star
  • 我同意Loveyuki的意见。

    那个reg什么的,你可以不认同别人的想法,但满嘴喷粪就是不应该了。
  • 2008-4-22 12:52:22
  • 39.snmyj
  • PHP其实也面向对象的,但是两个语言在重量级上有差距。不过PHP5以后的趋势是越来越重量化,不知道会怎么样。不过从Ruby/Pyhon的成功来看,动态语言是趋势

    Java也在试图动态化,象Groovy之类的。WISP和LAMP的比较一直以来都有不同意见。

    月光的技术文章还是应该再小心点。技术社区不那么好惹。也别给满嘴喷粪的人留机会
  • 2008-4-22 13:29:20
  • 45.david
  • 看看书店java方面的书的特点和php的书籍的差别也能感觉得到,java对大型商业企业的项目开发模式可能更好,貌似java开发的灵活的小web程序不多
  • 2008-4-23 14:14:28
  • 46.pandaren
  • 都是jsp 和 php
    我说asp.net两点吧

    1 说windows那套成本高肯定错
    2 NET也跨平台,之所以不怎么有雷声是因为目前的形势微软认为不需要。
  • 2008-4-23 16:08:50
  • 49.mapabc
  • 认为LAMP的成本低的人,大部分是没有真正用PHP自己开发过网站的人,都是些拿到别人开源的php代码就挂网站(例如phpBB,wordpress)改改样式的人,后期维护的成本不是一般人能想象的啊~~~

    而Windows Server+IIS+SqlServer+ASP/ASP.NET的架构,其实除了MSSqlServer之外,其他对于一个公司来说都是能接受的,我们就使用MySQL来代替MSSSQLServer的,而win2003也就几千一套,长期消耗的成本比起每个月花几千请一个Linux高手强多咯。

    ps;我不是ms的枪手,只是结合自己的工作经验说说自己的情况给大家参考而已。
  • 2008-4-24 2:24:30
  • 53.jake
  • 引自 reg112331
    放× 你学了几天程序设计哇
    有本事你让工行 移动网站都用PHP去
    企业级的支持PHP有么?有漏洞出来有人在第一时间解决么?
    简直放×
    PHP服务大众 小众语言
    JSP服务高端客户 贵族语言


    那贵族还是少啊,大众才多人呢用,月光说的就是这个意思
  • 2008-4-27 12:56:41
  • 55.netwjx
  • 等着瞧吧
    php后来的升级太牵强了 很明显的让自己比asp复杂了 目前仅仅是比java简单 但是java和dotnet是同一个级别的 他们的优势领取不同的

    不过python这个对php的威胁很大 很大,看看google appengine(python的作者都加入google了 python不发飙才怪),整个就是python字节码虚拟主机(目前能编译成python字节码的就是python 以后会有其它语言)

    python拥有可以和java dotnet抗衡的类库规模 但是使用上要简单 python可以很容易写出多进程 多线程的高性能程序,php在额外功能上感觉除了内部提供函数 就是类似asp的COM组件方式 基础类库不强大阿
    语法可以说比php还简单 关键字也少 特别的规则也少的多 运算符更接近C(比php还接近C)

    至于面向对象 面向过程这类东西,只是一种风格,无所谓谁先进 谁落后,掌握这种风格才是重要的,python还从FP语言里面汲取了一些特性/风格
  • 2008-5-1 15:51:22
  • 56.wesnow
  • 应用的地方不同而已。B/S应用分为互联网应用和企业应用,在互联网应用方面是PHP的天下,但是在企业应用方面是j2ee和.net的天下,有必要争么?另外,我觉得包括博主在内的很多人对PHP的了解可以说还停留在2000年以前,很多问题PHP已经很好得解决了,可是那些说PHP简单,干不了什么大事的人真的了解吗?我自己是搞j2ee开发的,因为我是从事企业开发,没办法,但是我自己的网站决不会去应用j2ee,在那方面PHP已经很好地解决问题了。
  • 2008-5-1 15:58:20
  • 57.netwjx
  • java被大型厂商支持 主要是他们控制着java 而php则不同
    IBM Sun BEA Oracle....
    JCP里面或多或少都有这些个厂商的人

    java的周边基本也都有这些厂商的参与,最明显的就是Apache
  • 2008-5-1 15:58:25
  • 59.hino
  • http://hino.free-web-hosting.biz/
  • 有一点我想说一下,目前国内的银行啊,大型的网站,不敢用php,非要用java/.net,我想是因为万一出了问题,用php的话,是没人来买单的。但用java/.net,可能心理上会好一点,放心一点。但实际上,是因为这些人对开源的东西不够理解。同样的问题,发生在apache身上,因为apache的源代码也是公开的。
  • 2008-5-2 21:36:18

发表评论:

◎声明:转载本文时请务必以超链接形式标明文章原始出处和作者,本文严禁商业网站转载。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 通过Google订阅本站
  • 通过鲜果订阅本站
  • 通过抓虾订阅本站
  • 通过电子邮件订阅本站

站内搜索


热文排行

最新评论

最近发表

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.

This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.