php 的主要语言开发者之一、zend公司的创始人之一andi gutmans最近在blog中直言不讳地批评了 java 语言。他指出,目前 java 厂商试图在jvm上提供动态语言实现的路子根本不对, java 已经输掉了web开发语言的战争, php 是事实上的标准和胜利者。 gutmans的这
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依旧是未来的趋势。