應(yīng)IT168寫的專稿:http://tech.it168.com/j/2007-08-14/200708140636415.shtml
Java有能力抵擋LAMP的進(jìn)攻嗎?
sterning
隨著互聯(lián)網(wǎng)開源潮流的迅速發(fā)展,全球IT業(yè)正迎來一個(gè)新的發(fā)展格局成長期。對全球的開源體系——LAMP(Linux、Apache、MYSQL、PHP)而言,其所代表的開源軟件及應(yīng)用,以其開放性、低成本、安全性、適用性以及可靠性能,正對傳統(tǒng)軟件、硬件和系統(tǒng)集成商產(chǎn)生巨大的沖擊,同時(shí),也給創(chuàng)新型IT企業(yè)、程序開發(fā)者創(chuàng)造了前所未有的機(jī)遇。作為軟件行業(yè)風(fēng)尖浪口的Java,幾多褒貶,幾多稱贊。Java有能力抵擋LAMP的進(jìn)攻嗎?或是LAMP、.Net與Java將三分天下乎?難道昔日”酷斃了”的Java已經(jīng)成為過時(shí)技術(shù)了嗎?
LAMP宣稱,在Linux系統(tǒng)下開發(fā)軟件不再需要層的概念了,Java不再是唯一的選擇了。在本文中,筆者將對LAMP和Java這兩種語言進(jìn)行詳細(xì)的比較。比較將涉及到這兩種語言的起源、特點(diǎn)及各自的優(yōu)劣勢等方面的內(nèi)容。希望通過這樣的比較,讓讀者了解這兩種語言各自的特點(diǎn),以便于在自己的項(xiàng)目中,根據(jù)實(shí)際情況,盡快的看清軟件語言的發(fā)展趨勢。
一、 引言
1998年,Michael Kunze為德國計(jì)算機(jī)雜志c't寫了一篇關(guān)于Free 軟件如何成為商業(yè)軟件替代品的文章時(shí),創(chuàng)建了LAMP這個(gè)名詞,Linux 操作系統(tǒng)、Apache網(wǎng)絡(luò)服務(wù)器、MySQL數(shù)據(jù)庫和PHP (Perl或Python)腳本語言組合而成的——LAMP (四種技術(shù)的開頭字母組成),隨之LAMP技術(shù)成為了自由軟件業(yè)的一盞真正的明燈。
LAMP 在英語中是“燈”的意思,但是在 IT 行業(yè)當(dāng)然不是那么簡單的一個(gè)意思。這個(gè)術(shù)語在德國十分流行。代表了 Linux 平臺上的 Apache 網(wǎng)站服務(wù)器; MySQL 數(shù)據(jù)庫以及 Perl 、Python 或者 PHP 編程語言的結(jié)合。筆者相信,這個(gè)術(shù)語也會在我們中國的開放源代碼界,乃至整個(gè)網(wǎng)絡(luò)界開始流行,LAMP 不僅會成為企業(yè)上網(wǎng),政府上網(wǎng)的“明燈”,也應(yīng)該會在企業(yè)內(nèi)部實(shí)施的 Intranet 大有作為。
LAMP開源軟件——包括Linux 操作系統(tǒng)、Apache網(wǎng)絡(luò)服務(wù)器、MySQL 數(shù)據(jù)庫和PHP ——正在進(jìn)軍主流計(jì)算市場。
Java與.Net 工具一統(tǒng)商業(yè)軟件開發(fā)領(lǐng)域已數(shù)年,但是具有易于開發(fā)、更新速度快、成本低的特點(diǎn),LAMP被許多開發(fā)者視為“黃金組合”,在近幾年中由LAMP集體開源廠家,或者確切的說LAMP開源自由社區(qū)吹響向主流計(jì)算市場發(fā)起進(jìn)攻的號角。甚至在2005年的TechEd大會上,微軟總裁鮑爾默以“微軟有能力抵擋LAMP的進(jìn)攻”的用詞,將LAMP列為Windows 和它的.Net 開發(fā)軟件的競爭者。IBM、Intel、HP、SUN等眾多廠家提出開源貢獻(xiàn)口號,收購開源公司;Intel、SAP投資PHP公司Zend科技;LAMP的開源和發(fā)展?jié)摿梢婏L(fēng)頭正盛。
LAMP 所代表的不僅僅是開放源碼,它更是開發(fā)和實(shí)施高性能 Web 應(yīng)用的重要平臺。如果說 Apache 能代表 LAMP 的占有率的話,那么,采用 LAMP 的站點(diǎn)幾乎就已經(jīng)是占據(jù)了主要的市場,看看 Netcraft 每月的調(diào)查就可以知道 Apache 的流行程度。國外的開放源碼站點(diǎn),例如 Apacheweek、MySQL.com、Perl.com 等自不必說,現(xiàn)在國內(nèi)的很多站點(diǎn)也開始撲向 LAMP。
LAMP 無論是性能、質(zhì)量,還是價(jià)格都應(yīng)該是企業(yè)/政府部門上網(wǎng)所必須考慮的平臺,LAMP 更應(yīng)該是 IT 行業(yè),特別是系統(tǒng)集成商所必須選擇和比較的平臺。
二、 Java的反應(yīng)
人生的經(jīng)驗(yàn)告訴我們,任何一種處于支配地們的主流技術(shù),只要它顯露出一點(diǎn)點(diǎn)的進(jìn)展緩慢時(shí),就有可能出現(xiàn)一種新概念或是技術(shù),來一個(gè)落井下石。筆者認(rèn)為,Java經(jīng)歷了一場場的良性競爭,并取得了良好的效果。同時(shí),在一些其它領(lǐng)域如高性能的計(jì)算機(jī)上,Java正在發(fā)揮它的優(yōu)勢,而在某些方面如J2ME,Java正在快速的發(fā)展。
Java具有良好的開源社區(qū)支持,是如此的靈活。看一看Sourceforge,就會明白,沒有任何一種語言像Java一樣,有如此多的開源組件與軟件可以利用。那么Java沒有LAMP所宣稱的優(yōu)勢嗎?我們可以一一分析一下。
L——Java可以更加優(yōu)秀的運(yùn)行在Linux系統(tǒng)上。A——Java社區(qū)的Tomcat是最優(yōu)秀的應(yīng)用服務(wù)器之一。M——Java有非常高效的MySQL驅(qū)動(dòng)。P——Java支持許多腳本語言,并且正處于快速的發(fā)展之中。同時(shí),Java緊密整合與支持LAMP的堆棧。
也許有很多Java的反對者聲稱,Java使用的容易性向來是Java普及的最大障礙。而Java的應(yīng)變之道不是改變語言本身使它變簡單,因?yàn)槿绻阉兒唵瘟耍幚砀唠A事務(wù)的能力也就被削弱了。Java把重點(diǎn)放在工具的簡單性上。如果用Java Studio Creator,就可以用拖放(drag and drop)來寫成AJAX元件和資料庫存取等內(nèi)容,訂制網(wǎng)頁也相當(dāng)快。這樣做的好處是工具把復(fù)雜的東西都做掉了,開發(fā)人員把應(yīng)用部署在一個(gè)具有錯(cuò)誤轉(zhuǎn)移(failover)、遠(yuǎn)端管理的集成系統(tǒng)上,然后就無需做一大堆事情,很多事都省掉。
有太多的人說,Java寫某些東西很好,但Web開發(fā)方面就沒那么好,反而是其它開發(fā)語言及框架則比較強(qiáng)。很多開發(fā)人員采用PHP 來制作網(wǎng)頁。PHP這類語言是完全用在Web開發(fā)上,如果想產(chǎn)生一個(gè)網(wǎng)頁,PHP真的很好用,它簡直就是JSP (Java Serer Page)的雙胞胎。
但是,開發(fā)人員不可能只有做網(wǎng)頁而已。一旦開始做大量分析或與其它系統(tǒng)整合,需要涉及到底層的數(shù)據(jù)分析時(shí),光用PHP之類的東西就很難了,則需要采用Java代碼來完成。通常的情況并不是一種技術(shù)替代另外一種技術(shù),而是一種技術(shù)補(bǔ)充另外一種技術(shù),發(fā)揮相乘相加效果。最常看到的是在網(wǎng)頁上用PHP,在后端資料分析上用的是Java。
Java正在失去發(fā)展動(dòng)力嗎?筆者絕對不能同意Java正在走下坡路的觀點(diǎn)。Java到生命盡頭了嗎?不!Java的火爆才剛剛開始。在大型、復(fù)雜的企業(yè)級應(yīng)用領(lǐng)域,Java仍是主流的開發(fā)工具,此外,Java在手機(jī)平臺上越來越受到歡迎。據(jù)悉,目前全球有600多款手機(jī)運(yùn)行Java虛擬機(jī),全球10大手機(jī)游戲中有7款是采用Java開發(fā)。同時(shí),Java已經(jīng)成為多數(shù)科學(xué)研究和計(jì)算使用的首選語言。在大學(xué)中有越來越多的人在使用Java語言,越來越多的尖端學(xué)術(shù)研究完全使用Java語言;各個(gè)行業(yè)的公司都有很多的Java程序員在開發(fā)他們的項(xiàng)目。
三、 Java不倒的原因
為什么說Java在LAMP、.NET及ROR的圍攻下而能處于不敗呢?筆者主認(rèn)為主要有以下原因:
首先,其它的語言是特定領(lǐng)域的語言,尤其有些只是Web應(yīng)用。而Java的應(yīng)用范圍更加的寬廣。可以開發(fā)桌面程序,手機(jī)游戲、DVD播放器及應(yīng)用服務(wù)器等。Java與某些軟件有著天然的內(nèi)在聯(lián)系,如Database,ERP等。
其次,Java有大量的開源社區(qū)支持,看看Apache的Portfolio或SourceForge就明白這一點(diǎn)。這是Java發(fā)展快速的主要原因之一。采用Java作為平臺而開發(fā)的軟件,穩(wěn)定的運(yùn)行在各種操作系統(tǒng)上,相對競爭對手其它語言,如C++或C語言,極大的提高了人們的生產(chǎn)力。
第三,Java開發(fā)平臺的多樣性。有多種JDK可以供選擇,包括Sun、IBM、Bea及開源的JDK。同時(shí),有大量的應(yīng)用服務(wù)器可供選擇,如開源陣營的JBoss應(yīng)用服務(wù)器、Apache的Geronimo、Sun的Glassfish等等。除此之外,還有大量的商業(yè)服務(wù)器平臺。
第四,和Java相比,PHP 和Python等腳本語言更容易學(xué)習(xí),它們在開發(fā)人員當(dāng)中相當(dāng)?shù)牧餍校绕涫悄切┚W(wǎng)頁開發(fā)者。很多人,包括一些前Java語言的擁護(hù)者都認(rèn)為,腳本語言和所謂的LAMP開源部件正在蓬勃發(fā)展,而這種發(fā)展減弱了Java的影響。但是,有一點(diǎn)經(jīng)常被人遺忘,那就是,Java是一種兩種層面上的語言:它既是一種虛擬機(jī),同時(shí)它也是一種ASCII 語言。很多人看不到Java作為虛擬機(jī)的神奇之處,因?yàn)榉浅6嗟哪_本語言就是建立在這種虛擬機(jī)之上的。
最后,Java會是一種通用型語言及平臺呢,還是專門發(fā)展在行動(dòng)或服務(wù)器平臺上的東西呢?這里就存在一些似非而是道理。一方面開發(fā)人員得要把東西整合在一起、讓環(huán)境可以在很多地方使用力量才會大,對Java來說,這正是它最強(qiáng)的地方之一。另一方面是開發(fā)人員也想專注在某一領(lǐng)域上。但如果專注在開發(fā)人員的技術(shù)上,Java社群最厲害的地方是可以把它用在應(yīng)用服務(wù)器、交易服務(wù)器、一種網(wǎng)絡(luò)協(xié)議、手機(jī)應(yīng)用程序以及工廠自動(dòng)化的控制程序或是智能型手機(jī)上。最后開發(fā)人員學(xué)到的是可攜式的技能,而不只是一項(xiàng)技術(shù)。如果同CIO、CTO談時(shí),就會知道這相當(dāng)重要。
四、 LAMP組合利弊談
LAMP組合正在逐漸獲得市場認(rèn)可,但是它已經(jīng)具有追上非開源競爭者的實(shí)力嗎?生活中最好的東西真的是免費(fèi)的嗎?開源支持者們當(dāng)然原意讓我們相信這一點(diǎn)。多年以來,他們已經(jīng)將不斷改進(jìn)的LAMP組合作為構(gòu)建商業(yè)系統(tǒng)并使之運(yùn)轉(zhuǎn)的一條免費(fèi)之路。
但是LAMP組合也有一些潛在的缺點(diǎn)。開源組合和私有軟件的一個(gè)明顯區(qū)別在于新特性。私有軟件提供商的發(fā)展依賴于增長率,也就是說需要不斷增加銷售額。這就使得他們要不斷開發(fā)新品。另一方面,開源開發(fā)沒有這樣的環(huán)境,就是說創(chuàng)新的步伐經(jīng)常要慢許多。你很少看到走在前沿的創(chuàng)新是開源產(chǎn)品。例如,在微軟在SQL Server中開發(fā)XML作為一個(gè)本地?cái)?shù)據(jù)類型的時(shí)候,開源MySQL數(shù)據(jù)庫才剛剛將存儲程序作為一個(gè)新’特性,這比它的競爭對手落后了好幾代。
同時(shí)擴(kuò)展可能是對LAMP用戶的一個(gè)挑戰(zhàn)。使用集群計(jì)算機(jī)或刀片服務(wù)器和諸如Red Hat Linux這樣的企業(yè)級系統(tǒng)擴(kuò)展到LAMP系統(tǒng)是可能的,但是這并不容易。
在許多公司,LAMP仍然沒有得到正式認(rèn)可。但是在開源開發(fā)模式中,人人都可以做出貢獻(xiàn),這將推動(dòng)LAMP比Java或.Net 更快的前進(jìn)。不過,LAMP也不可能把現(xiàn)有的Java和.Net兩大陣營消滅,因?yàn)榇蟮墓究蛻舳疾粫徊捎靡惶总浖?/span>
應(yīng)用促進(jìn)開源發(fā)展,理念走向務(wù)實(shí)應(yīng)用。與歐美相比,國內(nèi)的LAMP架構(gòu)在企業(yè)關(guān)鍵應(yīng)用中的應(yīng)用還有待提高。目前我國LAMP應(yīng)用存在的問題:國內(nèi)開源數(shù)據(jù)庫的應(yīng)用已經(jīng)開始起步了,但是開發(fā)還沒有和開源技術(shù)掛鉤。LAMP要發(fā)展,能否做出商業(yè)軟件是關(guān)鍵。
LAMP的商業(yè)化過程存在嚴(yán)重的問題。例如,PHP的產(chǎn)品給人留下的似乎就是,技術(shù)很好,但是客戶體驗(yàn)服務(wù)沒跟上,包括安裝提示,升級以及Bug反饋等等服務(wù)都很粗糙,客戶寧愿去選中商業(yè)化更濃的Java 或.Net。
五、 五、結(jié)論
毫無疑問的是,LAMP組合擁有其自身的價(jià)值,但是要小心地使用它。它是為新興商業(yè)系統(tǒng)和概念業(yè)務(wù)系統(tǒng)的可行性尋找證據(jù)的優(yōu)秀工具,但是它也需要適當(dāng)?shù)年P(guān)心和關(guān)注以變得更加高效。
在企業(yè)級開發(fā),Java毫無疑問是完全占據(jù)優(yōu)勢的。Dyanimics 和Groovy 是Java 可以較大提升的一個(gè)地方,這使得Java更加動(dòng)態(tài),更適應(yīng)小型應(yīng)用。而EJB這些,就更不用說了,LAMP和.Net,基本上是不適用了。PHP很受歡迎,只是證明了PHP在很多簡單應(yīng)用上,開發(fā)者上手比較快而已。最關(guān)鍵的是,PHP和JAVA也不是一個(gè)層面比較的東西,如果要比較,那么就是MODE-1的JSP和PHP比較。特別是O/R、 AOP、MVC、 Patterns、XML config files、Tag libraries 等,在PHP中要實(shí)現(xiàn)還是要很長一段時(shí)間。
套用一句俗話“只要努力,就會更好”。Java有潛力成為從PDA到服務(wù)器任何領(lǐng)域都非常成功的平臺。Java可以繼續(xù)在其占優(yōu)勢的服務(wù)器端發(fā)展下去。還可以通過優(yōu)化客戶端程序的發(fā)布及安裝使Java在客戶端開發(fā)方面一樣獲得成功。不管現(xiàn)在的情況如何,筆者相信Java有能力成為一個(gè)完美的平臺。通過不斷的完善,降低開發(fā)人員入門的難度,提供對所有的平臺和操作系統(tǒng)的支持,以及提供對更多語言的支持,Java平臺將可以適應(yīng)任何層次任何領(lǐng)域的開發(fā)。通過對客戶端平臺的優(yōu)化Java在PC和移動(dòng)設(shè)備領(lǐng)域中也會獲得巨大的成功。