随着互联网开源潮流的迅速发展,全球it业正迎来一个新的发展格局成长期。对全球的开源体系――lamp(linux、apache、mysql、php)而言,其所代表的开源软件及应用,以其开放性、低成本、安全性、适用性以及可靠性能,正对传统软件、硬件和系统集成商产生巨大的冲击,同时,也给创新型it企业、程序开发者创造了前所未有的机遇。作为软件行业风尖浪口的java,几多褒贬,几多称赞。java有能力抵挡lamp的进攻吗?或是lamp、。net与java将三分天下乎?难道昔日“酷毙了”的java已经成为过时技术了吗?
lamp宣称,在linux系统下开发软件不再需要层的概念了,java不再是唯一的选择了。在本文中,笔者将对lamp和java这两种语言进行详细的比较。比较将涉及到这两种语言的起源、特点及各自的优劣势等方面的内容。希望通过这样的比较,让读者了解这两种语言各自的特点,以便于在自己的项目中,根据实际情况,尽快的看清软件语言的发展趋势。
一、引言
1998年,michael kunze为德国计算机杂志c't写了一篇关于free 软件如何成为商业软件替代品的文章时,创建了lamp这个名词,linux 操作系统、apache网络服务器、mysql数据库和php (perl或python)脚本语言组合而成的――lamp (四种技术的开头字母组成),随之lamp技术成为了自由软件业的一盏真正的明灯。
lamp 在英语中是“灯”的意思,但是在 it 行业当然不是那么简单的一个意思。这个术语在德国十分流行。代表了 linux 平台上的 apache 网站服务器; mysql 数据库以及 perl 、python 或者 php 编程语言的结合。笔者相信,这个术语也会在我们中国的开放源代码界,乃至整个网络界开始流行,lamp 不仅会成为企业上网,政府上网的“明灯”,也应该会在企业内部实施的 intranet 大有作为。
lamp开源软件――包括linux 操作系统、apache网络服务器、mysql 数据库和php ――正在进军主流计算市场。
java与。net 工具一统商业软件开发领域已数年,但是具有易于开发、更新速度快、成本低的特点,lamp被许多开发者视为“黄金组合”,在近几年中由lamp集体开源厂家,或者确切的说lamp开源自由社区吹响向主流计算市场发起进攻的号角。甚至在2005年的teched大会上,微软总裁鲍尔默以“微软有能力抵挡lamp的进攻”的用词,将lamp列为windows 和它的。net 开发软件的竞争者。ibm、intel、hp、sun等众多厂家提出开源贡献口号,收购开源公司;intel、sap投资php公司zend科技;lamp的开源和发展潜力可见风头正盛。
lamp 所代表的不仅仅是开放源码,它更是开发和实施高性能 web 应用的重要平台。如果说 apache 能代表 lamp 的占有率的话,那么,采用 lamp 的站点几乎就已经是占据了主要的市场,看看 netcraft 每月的调查就可以知道 apache 的流行程度。国外的开放源码站点,例如 apacheweek、mysql.com、perl.com 等自不必说,现在国内的很多站点也开始扑向 lamp.
lamp 无论是性能、质量,还是价格都应该是企业/政府部门上网所必须考虑的平台,lamp 更应该是 it 行业,特别是系统集成商所必须选择和比较的平台。
二、java的反应
人生的经验告诉我们,任何一种处于支配地们的主流技术,只要它显露出一点点的进展缓慢时,就有可能出现一种新概念或是技术,来一个落井下石。笔者认为,java经历了一场场的良性竞争,并取得了良好的效果。同时,在一些其它领域如高性能的计算机上,java正在发挥它的优势,而在某些方面如j2me,java正在快速的发展。
java具有良好的开源社区支持,是如此的灵活。看一看sourceforge,就会明白,没有任何一种语言像java一样,有如此多的开源组件与软件可以利用。那么java没有lamp所宣称的优势吗?我们可以一一分析一下。
l――java可以更加优秀的运行在linux系统上。a――java社区的tomcat是最优秀的应用服务器之一。m――java有非常高效的mysql驱动。p――java支持许多脚本语言,并且正处于快速的发展之中。同时,java紧密整合与支持lamp的堆栈。
也许有很多java的反对者声称,java使用的容易性向来是java普及的最大障碍。而java的应变之道不是改变语言本身使它变简单,因为如果把它变简单了,它处理高阶事务的能力也就被削弱了。java把重点放在工具的简单性上。如果用java studio creator,就可以用拖放(drag and drop)来写成ajax元件和资料库存取等内容,订制网页也相当快。这样做的好处是工具把复杂的东西都做掉了,开发人员把应用部署在一个具有错误转移(failover)、远端管理的集成系统上,然后就无需做一大堆事情,很多事都省掉。
有太多的人说,java写某些东西很好,但web开发方面就没那么好,反而是其它开发语言及框架则比较强。很多开发人员采用php 来制作网页。php这类语言是完全用在web开发上,如果想产生一个网页,php真的很好用,它简直就是jsp (java serer page)的双胞胎。
但是,开发人员不可能只有做网页而已。一旦开始做大量分析或与其它系统整合,需要涉及到底层的数据分析时,光用php之类的东西就很难了,则需要采用java代码来完成。通常的情况并不是一种技术替代另外一种技术,而是一种技术补充另外一种技术,发挥相乘相加效果。最常看到的是在网页上用php,在后端资料分析上用的是java.
java正在失去发展动力吗?笔者绝对不能同意java正在走下坡路的观点。java到生命尽头了吗?不!java的火爆才刚刚开始。在大型、复杂的企业级应用领域,java仍是主流的开发工具,此外,java在手机平台上越来越受到欢迎。据悉,目前全球有600多款手机运行java虚拟机,全球10大手机游戏中有7款是采用java开发。同时,java已经成为多数科学研究和计算使用的首选语言。在大学中有越来越多的人在使用java语言,越来越多的尖端学术研究完全使用java语言;各个行业的公司都有很多的java程序员在开发他们的项目。
三、java不倒的原因
为什么说java在lamp、。net及ror的围攻下而能处于不败呢?笔者主认为主要有以下原因:
首先,其它的语言是特定领域的语言,尤其有些只是web应用。而java的应用范围更加的宽广。可以开发桌面程序,手机游戏、dvd播放器及应用服务器等。java与某些软件有着天然的内在联系,如database,erp等。
其次,java有大量的开源社区支持,看看apache的portfolio或sourceforge就明白这一点。这是java发展快速的主要原因之一。采用java作为平台而开发的软件,稳定的运行在各种操作系统上,相对竞争对手其它语言,如c++或c语言,极大的提高了人们的生产力。
第三,java开发平台的多样性。有多种jdk可以供选择,包括sun、ibm、bea及开源的jdk.同时,有大量的应用服务器可供选择,如开源阵营的jboss应用服务器、apache的geronimo、sun的glassfish等等。除此之外,还有大量的商业服务器平台。
第四,和java相比,php 和python等脚本语言更容易学习,它们在开发人员当中相当的流行,尤其是那些网页开发者。很多人,包括一些前java语言的拥护者都认为,脚本语言和所谓的lamp开源部件正在蓬勃发展,而这种发展减弱了java的影响。但是,有一点经常被人遗忘,那就是,java是一种两种层面上的语言:它既是一种虚拟机,同时它也是一种ascii 语言。很多人看不到java作为虚拟机的神奇之处,因为非常多的脚本语言就是建立在这种虚拟机之上的。
最后,java会是一种通用型语言及平台呢,还是专门发展在行动或服务器平台上的东西呢?这里就存在一些似非而是道理。一方面开发人员得要把东西整合在一起、让环境可以在很多地方使用力量才会大,对java来说,这正是它最强的地方之一。另一方面是开发人员也想专注在某一领域上。但如果专注在开发人员的技术上,java社群最厉害的地方是可以把它用在应用服务器、交易服务器、一种网络协议、手机应用程序以及工厂自动化的控制程序或是智能型手机上。最后开发人员学到的是可携式的技能,而不只是一项技术。如果同cio、cto谈时,就会知道这相当重要。
四、lamp组合利弊谈
lamp组合正在逐渐获得市场认可,但是它已经具有追上非开源竞争者的实力吗?生活中最好的东西真的是免费的吗?开源支持者们当然原意让我们相信这一点。多年以来,他们已经将不断改进的lamp组合作为构建商业系统并使之运转的一条免费之路。
但是lamp组合也有一些潜在的缺点。开源组合和私有软件的一个明显区别在于新特性。私有软件提供商的发展依赖于增长率,也就是说需要不断增加销售额。这就使得他们要不断开发新品。另一方面,开源开发没有这样的环境,就是说创新的步伐经常要慢许多。你很少看到走在前沿的创新是开源产品。例如,在微软在sql server中开发xml作为一个本地数据类型的时候,开源mysql数据库才刚刚将存储程序作为一个新‘特性,这比它的竞争对手落后了好几代。
同时扩展可能是对lamp用户的一个挑战。使用集群计算机或刀片服务器和诸如red hat linux这样的企业级系统扩展到lamp系统是可能的,但是这并不容易。
在许多公司,lamp仍然没有得到正式认可。但是在开源开发模式中,人人都可以做出贡献,这将推动lamp比java或。net 更快的前进。不过,lamp也不可能把现有的java和。net两大阵营消灭,因为大的公司客户都不会只采用一套软件。
应用促进开源发展,理念走向务实应用。与欧美相比,国内的lamp架构在企业关键应用中的应用还有待提高。目前我国lamp应用存在的问题:国内开源数据库的应用已经开始起步了,但是开发还没有和开源技术挂钩。lamp要发展,能否做出商业软件是关键。
lamp的商业化过程存在严重的问题。例如,php的产品给人留下的似乎就是,技术很好,但是客户体验服务没跟上,包括安装提示,升级以及bug反馈等等服务都很粗糙,客户宁愿去选中商业化更浓的java 或。net.
五、结论
毫无疑问的是,lamp组合拥有其自身的价值,但是要小心地使用它。它是为新兴商业系统和概念业务系统的可行性寻找证据的优秀工具,但是它也需要适当的关心和关注以变得更加高效。
在企业级开发,java毫无疑问是完全占据优势的。dyanimics 和groovy 是java 可以较大提升的一个地方,这使得java更加动态,更适应小型应用。而ejb这些,就更不用说了,lamp和。net,基本上是不适用了。php很受欢迎,只是证明了php在很多简单应用上,开发者上手比较快而已。最关键的是,php和java也不是一个层面比较的东西,如果要比较,那么就是mode-1的jsp和php比较。特别是o/r、 aop、mvc、 patterns、xml config files、tag libraries 等,在php中要实现还是要很长一段时间。
套用一句俗话“只要努力,就会更好”。java有潜力成为从pda到服务器任何领域都非常成功的平台。java可以继续在其占优势的服务器端发展下去。还可以通过优化客户端程序的发布及安装使java在客户端开发方面一样获得成功。不管现在的情况如何,笔者相信java有能力成为一个完美的平台。通过不断的完善,降低开发人员入门的难度,提供对所有的平台和操作系统的支持,以及提供对更多语言的支持,java平台将可以适应任何层次任何领域的开发。通过对客户端平台的优化java在pc和移动设备领域中也会获得巨大的成功。
闽公网安备 35060202000074号