Java有能力抵挡LAMP的进攻吗?或是LAMP、.Net与Java将三分天下乎?难道昔日“酷毙了”的Java已经成为过时技术了吗……
随着互联网开源潮流的迅速发展,全球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和移动设备领域中也会获得巨大的成功。