ITBear旗下自媒體矩陣:

PHP語言教父Gutmans炮轟Java:已經(jīng)輸?shù)鬢eb之戰(zhàn)

   時(shí)間:2008-04-15 19:04:55 來源:互聯(lián)網(wǎng)編輯:星輝 發(fā)表評(píng)論無障礙通道

PHP 3之后的主要語言開發(fā)者之一、Zend公司的創(chuàng)始人之一Andi Gutmans最近在blog中直言不諱地批評(píng)了Java語言。他指出,目前Java廠商試圖在JVM上提供動(dòng)態(tài)語言實(shí)現(xiàn)的路子根本不對(duì),應(yīng)該全面擁抱標(biāo)準(zhǔn)的動(dòng)態(tài)語言。

由于Gutmans的特殊地位,他的這篇長文已經(jīng)在技術(shù)界引發(fā)了強(qiáng)烈爭議。參見其blog上和TSS上的討論1,2。

下面是對(duì)全文的一個(gè)編譯版本,基本反映了原貌。其中對(duì)多核環(huán)境中多線程(JVM)與多進(jìn)程(LAMP)的比較,C語言生態(tài)系統(tǒng)以及開源語言與Java等廠商語言和技術(shù)的比較,感覺都是非常有價(jià)值的。

PHP 3之后的主要語言開發(fā)者之一、Zend公司的創(chuàng)始人之一Andi Gutmans最近在blog中直言不諱地批評(píng)了Java語言。他指出,目前Java廠商試圖在JVM上提供動(dòng)態(tài)語言實(shí)現(xiàn)的路子根本不對(duì),應(yīng)該全面擁抱標(biāo)準(zhǔn)的動(dòng)態(tài)語言。

由于Gutmans的特殊地位,他的這篇長文已經(jīng)在技術(shù)界引發(fā)了強(qiáng)烈爭議。參見其blog上和TSS上的討論1,2。

下面是對(duì)全文的一個(gè)編譯版本,基本反映了原貌。其中對(duì)多核環(huán)境中多線程(JVM)與多進(jìn)程(LAMP)的比較,C語言生態(tài)系統(tǒng)以及開源語言與Java等廠商語言和技術(shù)的比較,感覺都是非常有價(jià)值的。

翻譯上的問題,請(qǐng)多指教。

--------------------------------------------------------------------------------

    Gutmans回憶自己幾 年前參與的一個(gè)基于IBM Websphere的大型企業(yè)級(jí)項(xiàng)目。項(xiàng)目團(tuán)隊(duì)中無論開發(fā)還是架構(gòu)人員都非常出色,但其中最優(yōu)秀的人與Andi談起PHP和動(dòng)態(tài)語言時(shí),還是將之視為玩具 語言。這在當(dāng)時(shí)正是Java界對(duì)動(dòng)態(tài)語言的典型心態(tài)。但是,他們恰恰忽視了Web,因此Java EE設(shè)計(jì)時(shí)并沒有以Web為中心,而且關(guān)注在企業(yè)集成、事務(wù)管理和其他后端處理上。雖然Java EE通過servlet和JSP支持Web開發(fā)也有不短的歷史,但是掌握標(biāo)準(zhǔn)發(fā)展的大公司們忽視了Web的RESTful本質(zhì),仍然在向通用平臺(tái)的方向上 走。

而與此同時(shí),建于C語言庫和工具的生態(tài)系統(tǒng)之上的LAMP架構(gòu),則成了Web程序最流行的開發(fā)平臺(tái)。其中最常用的語言是PHP。由于PHP專注于 Web開發(fā),而且為此不斷演變,它簡直就是為Web范型(paradigm)量身打造的,能夠快速和容易地解決常見的Web問題,因此獲得了最大的市場份 額。根據(jù)Ajaxian。com的調(diào)查,大約50%的RIA開發(fā)人員都使用PHP。由于各種PHP程序如Wordpress, Drupal, mediaWiki, osCommerce, SugarCRM的流行,這種趨勢更加明顯。

隨著大多數(shù)業(yè)務(wù)應(yīng)用程序包括CRM、ERP、報(bào)表、文檔管理等等也都轉(zhuǎn)向了Web,那些大的Java廠商都意識(shí)到,Java對(duì)Web范型的形成和 發(fā)展影響甚微,因此他們開始支持各種標(biāo)準(zhǔn)和非標(biāo)準(zhǔn)的Java Web框架(JSF、Struts、Spring MVC等等),要使Java適應(yīng)Web。這些框架雖然有些也取得了一定成功,但是它們都無法解決Java在Web上的主要問題:由于嚴(yán)格的類型化和架構(gòu)過 度復(fù)雜,開發(fā)時(shí)間和開發(fā)人員的技能要求都更高,也就是說,總成本無法令人滿意。

而且,大的Java廠商還什么都想占著。一方面想融入Web,一方面又不肯放棄自己已經(jīng)在Java上建立起來的數(shù)十億計(jì)的生意。甚至動(dòng)態(tài)語言的廣泛流行都未能顯著改變他們的行為模式。但是隨著微軟雄心勃勃的多語言運(yùn)行環(huán)境。NET的出現(xiàn),大勢又變了。

成功的動(dòng)態(tài)語言包括PHP, Perl, Python和Ruby都是用C寫的,充分利用了C語言庫生態(tài)系統(tǒng)的廣泛性和深入性。而且它們都是社區(qū)驅(qū)動(dòng)的,沒有什么正二八經(jīng)的語言規(guī)范,發(fā)展不會(huì)被公 司政治所阻礙。這些語言都是由使用者自己開發(fā)的,他們只有一個(gè)目的:快速搞定工作。因此語言可能在小的版本更新時(shí)就加入重要的改進(jìn)。這種敏捷本質(zhì)正是適應(yīng) Web應(yīng)用快速變化必需的。

而且,LAMP的部署方式有顯著的優(yōu)勢。在多進(jìn)程架構(gòu)中,Web服務(wù)器和動(dòng)態(tài)語言軟件中的故障一般不會(huì)使網(wǎng)站垮掉。雖然會(huì)有某個(gè)進(jìn)程崩潰,但其他 服務(wù)Web請(qǐng)求的進(jìn)程仍然可以繼續(xù)運(yùn)行。這與JVM這種多線程的環(huán)境中軟件故障包括崩潰和死鎖通常都會(huì)使系統(tǒng)垮掉,形成了鮮明對(duì)比。 而且在特定時(shí)間后回收進(jìn)程的能力能夠防止內(nèi)存泄漏和內(nèi)存碎片化這兩種常見的內(nèi)存問題使軟件隨著時(shí)間推移性能降低。LAMP上軟件更新時(shí),可以輕松和漸增地 推到服務(wù)器,無需冗長的構(gòu)建和打包。雖然有時(shí)這會(huì)帶來不規(guī)范、不嚴(yán)格的問題,但是只要正確實(shí)施,開發(fā)人員和運(yùn)營人員的日子都會(huì)好過得多。

相比之下,Java廠商受困于與Java綁定太緊對(duì)多種語言的支持很少的JVM。他們并沒有轉(zhuǎn)向能夠使其客戶兩全其美的LAMP和Java技術(shù)松 耦合的模型,而是患得患失,怕失去對(duì)客戶的控制,競相在JVM上提供動(dòng)態(tài)語言。無論是微軟這個(gè)強(qiáng)敵,還是Java中互相競爭的廠商,都在實(shí)施自己的動(dòng)態(tài)語 言策略。

現(xiàn)在,Sun正在其Java EE解決方案上支持JRuby和Jython而投入;IBM Websphere集團(tuán)則認(rèn)識(shí)到Java EE平臺(tái)運(yùn)行現(xiàn)代Web應(yīng)用的無效,在Project Zero上大力投入,該項(xiàng)目的目的是使IBM在Web 2。0世界中也能有一席之地,目前支持Groovy和PHP;BEA也有一些孵化項(xiàng)目,但是被Oracle并購后,這些項(xiàng)目是否能有結(jié)果目前不明。Project Zero的 首席架構(gòu)師是IBM公司里最先公開承認(rèn)Java現(xiàn)在可以認(rèn)為只是一種系統(tǒng)語言而不適合構(gòu)建RESTful Web應(yīng)用的幾個(gè)人之一。而構(gòu)建RESTful Web應(yīng)用正是Project Zero的目的。Java堡壘花了10年多時(shí)間才承認(rèn)Java在Web上投資回報(bào)不佳,而目前的趨勢,將有更多的客戶做出更明智的選擇。動(dòng)態(tài)語言將有大的 提升。與大型機(jī)一樣,Java已經(jīng)在企業(yè)級(jí)IT和關(guān)鍵業(yè)務(wù)應(yīng)用中根深葉茂,因此不會(huì)很快消失。但是在Web應(yīng)用上,Java語言很可能會(huì)在市場份額上急劇 下降。

問題在于,非微軟的Web市場是會(huì)采用動(dòng)態(tài)語言的JVM實(shí)現(xiàn),還是容納這些語言事實(shí)標(biāo)準(zhǔn)實(shí)現(xiàn)的LAMP架構(gòu)。雖然我認(rèn)為會(huì)有客戶被前者吸引,但是市場主流還是會(huì)選擇LAMP。原因在于:

1。 標(biāo)準(zhǔn)實(shí)現(xiàn)更新速度很快,而JVM版本總是滯后,會(huì)帶來兼容性問題。這與Mono跟不上。NET的問題類似。

2。 JVM最初設(shè)計(jì)時(shí)并沒有考慮支持動(dòng)態(tài)語言,因此在可見的將來,要滿足實(shí)際需求,挑戰(zhàn)非常大。像閉包、間接方法調(diào)用和類型juggling等動(dòng)態(tài)特性就不容易解決,這從目前JRuby與Ruby的C版本的比較中可以看出。而且,硬件廠商是否有興趣跟上也是有待觀察的。而開源技術(shù)就沒有這種問題。

3。 現(xiàn)代Web的可伸縮需求對(duì)Web層的處理強(qiáng)度的要求越來越大?;贑的架構(gòu)更可能與操作系統(tǒng)底層(原文為primitives)最有效地互操作,提供高 效、內(nèi)存占用小的架構(gòu),滿足這種強(qiáng)度。高性能的Web服務(wù)器比如lighttpd, Zeus, IIS 7,高性能的緩存系統(tǒng)比如Facebook等最大的網(wǎng)站使用的memcached,還有其他性能關(guān)鍵的子系統(tǒng)比如內(nèi)存管理,都是例子。

4。 多核系統(tǒng)非常適合LAMP架構(gòu)的多進(jìn)程方式。隨著芯片業(yè)現(xiàn)在把主要精力都放在了多核而不是超線程技術(shù)上,JVM這樣的多線程環(huán)境的優(yōu)點(diǎn)在今天的硬件上將無法充分發(fā)揮。而多進(jìn)程方式將提供更多穩(wěn)定性和可靠性。

5。 由于LAMP的簡單性,它對(duì)于開發(fā)人員而言進(jìn)入門檻非常低,而又能夠提供很好的伸縮性,包括Yahoo和Facebook這樣的大規(guī)模產(chǎn)品系統(tǒng)。

總而言之,越來越清楚的是,動(dòng)態(tài)語言將逐漸成為Web開發(fā)的標(biāo)準(zhǔn)。微軟和Java廠商都認(rèn)識(shí)到這個(gè)趨勢,現(xiàn)在正在各自的軟件平臺(tái)之大力投入,給出 解決方案。但是,因?yàn)橹饕獎(jiǎng)討B(tài)語言社區(qū)都是在。NET CLR和Java JVM軟件平臺(tái)之外發(fā)展起來的,這些廠商如果只是想依靠將成功的動(dòng)態(tài)語言復(fù)制到自己的平臺(tái)上而反敗為勝,他們將處于困難的境地。有些廠商已經(jīng)意識(shí)到這一情 況,采用了一些混合策略,同時(shí)為客戶提供動(dòng)態(tài)語言的標(biāo)準(zhǔn)實(shí)現(xiàn),雖然還沒有完全與其解決方案組合配合起來。微軟在PHP上的投入就是如此,Sun也開始為客 戶提供原生的Ruby和PHP實(shí)現(xiàn)。我相信雖然JVM向動(dòng)態(tài)語言拋出的橄欖枝可能會(huì)吸引一些Java客戶,但是這無法跟上開源社區(qū)開發(fā)原生動(dòng)態(tài)語言實(shí)現(xiàn)的 步伐。JVM的動(dòng)態(tài)語言實(shí)現(xiàn)對(duì)于Java廠商與時(shí)俱進(jìn)是不夠的,它們需要全面地?fù)肀г氖聦?shí)標(biāo)準(zhǔn)的社區(qū)驅(qū)動(dòng)的動(dòng)態(tài)語言。

舉報(bào) 0 收藏 0 打賞 0評(píng)論 0
 
 
更多>同類資訊
全站最新
熱門內(nèi)容
網(wǎng)站首頁  |  關(guān)于我們  |  聯(lián)系方式  |  版權(quán)聲明  |  網(wǎng)站留言  |  RSS訂閱  |  違規(guī)舉報(bào)  |  開放轉(zhuǎn)載  |  滾動(dòng)資訊  |  English Version