人們經(jīng)常說開源沒有創(chuàng)新,而是模仿。這肯定是專有軟件行業(yè)希望你相信的?匆豢茨壳捌髽I(yè)中使用的一些的開源項(xiàng)目中的活動,讓你不由得不同意。
例如,盡管開源數(shù)據(jù)庫令人難以置信地廣泛用于各類關(guān)鍵任務(wù)應(yīng)用,但不管是MySQL還是PostgreSQL,實(shí)際上沒有做任何IBM、Microsoft、Oracle和Sybase多年來沒做過的事情。同樣,OpenOffice.org生產(chǎn)力套件是一個給人留下深刻印象的社區(qū)驅(qū)動的開發(fā)的例子,但它惟一的真正目的是創(chuàng)建免費(fèi)的、基于標(biāo)準(zhǔn)的Microsoft Office的克隆。甚至Linux自己也是作為免費(fèi)軟件改寫Unix的嘗試。
但是,所有這些都不能否定開源開辟了一條屬于自己的新路而非只是跟在別人后面的事實(shí)。Apache Web服務(wù)器是好的例子。Apache自1995年誕生超級計(jì)算應(yīng)用中心的httpd后,一直是用戶的Web服務(wù)器。據(jù)網(wǎng)站與服務(wù)器監(jiān)測機(jī)構(gòu)Netcraft說,目前62%的Internet網(wǎng)站使用Apache,而使用Microsoft IIS(Internet信息服務(wù)器)的網(wǎng)站只有31%。
然而正如Microsoft的Internet Explorer所證明的,流行程度并不是惟一衡量性能的指標(biāo)。Apache常常是安裝在大多數(shù)Linux服務(wù)器上的缺省Web服務(wù)器,而它的成功并不只是由于人們熟悉它或缺少競爭對手。更確切地說,它具有穩(wěn)定性、高性能、的安全紀(jì)錄以及使它具有比商用競爭對手更多功能的各種特性與擴(kuò)展程序。Apache實(shí)際上開辟了Web服務(wù)器軟件市場并處于地位。5年后,IIS無疑將以這種或那種形式存在于市場上,但Apache仍將是產(chǎn)品,進(jìn)一步拓展Web服務(wù)器的功能。
這類協(xié)作創(chuàng)新的例子在IT領(lǐng)域中比比皆是。在軟件業(yè)中,無數(shù)的開發(fā)商、個人和公司在試驗(yàn)開源方式。理由之一是因?yàn)樯鐓^(qū)驅(qū)動的開發(fā)使軟件產(chǎn)品能夠有機(jī)地發(fā)展。正如Eric S. Raymond在其開創(chuàng)性的著作《大教堂與集市》中所說的:“每一個軟件杰作都開始于滿足某個開發(fā)人員的個人需要。”當(dāng)一群開發(fā)員以開源方式協(xié)作時,每一位開發(fā)員都有著獨(dú)特的個人需要,其結(jié)果是軟件不斷擴(kuò)展,填補(bǔ)專有產(chǎn)品沒有涉及的這些功能領(lǐng)域。
開源賦予Java生命
開源社區(qū)開發(fā)的工具鞏固了Java在開發(fā)人員市場中的地位。
毫無疑問,開源使Java得到了巨大的實(shí)惠。Java語言和平臺賴以發(fā)展的JCP(Java社區(qū)進(jìn)程)似乎在以蝸牛的速度前進(jìn)。委員會的審查和批準(zhǔn)是個緩慢且需深思熟慮的過程,Java畢竟是企業(yè)應(yīng)用平臺,因此它應(yīng)當(dāng)緩慢演進(jìn),哪怕需求十分緊迫。為解決一些問題而造成另一些問題從來不是一種好的解決辦法。
然而,與其相對的開源社區(qū)卻一直在飛速前進(jìn),推出大量的重要創(chuàng)新。目前,企業(yè)Java基本工具全部是開源產(chǎn)品:Ant(用于開發(fā)應(yīng)用程序)、Hibernate(用于將數(shù)據(jù)保存在硬盤上)、JUnit(用于設(shè)備測試)和Maven(用于繼續(xù)的集成),更不用說得到高度重視的Eclipse和NetBeans開發(fā)環(huán)境和PMD源代碼驗(yàn)證程序了。
Java開發(fā)人員還從幾種開源框架中受益,如JSF(JavaServer Faces)、Spring和Struts。再有是眾多的容器(container):Apache Tomcat、Geronimo、Jetty、Jonas和Resin,更不要說很多用于嵌入式應(yīng)用的小容器了。開源是Java世界想像力和生產(chǎn)力的巨大源泉。
在這兩股河流——JCP與開源——之間站著3大企業(yè)Java技術(shù)提供商:BEA、IBM和Sun Microsystems。他們都是一只腳站在開源工具河流中,另一只腳站在非開源工具河流中。雖然很多IBM工具是專有的,但它一直是Java和開源社區(qū)的主要貢獻(xiàn)者。BEA近非常積極地實(shí)施其“混合”戰(zhàn)略,積極支持開源產(chǎn)品。此外,BEA還向多個開源項(xiàng)目捐獻(xiàn)代碼和程序。
Sun有點(diǎn)特立獨(dú)行?駸岬拈_源支持者一直逼迫Sun開放Java源代碼,希望加速這種平臺中的創(chuàng)新,但Sun卻行動緩慢。這樣做是有一定道理的:開放Java代碼可能會將Java分裂為不同的版本,從而減少Java引以為榮的可移植性。但開源社區(qū)一直尖銳地攻擊Sun的這種立場。
鑒于Sun對開源的長期貢獻(xiàn),這將它置于一種奇怪的境地。Sun仍是惟一一家開放其操作系統(tǒng)和全部生產(chǎn)力套件源代碼的公司。實(shí)際上,它開放了很多Java技術(shù)的源代碼。因此,Sun在8月份舉行的LinuxWorld上透露——也許有點(diǎn)勉強(qiáng)——除推出一個供開發(fā)人員跟蹤其進(jìn)展的社區(qū)網(wǎng)站外,它打算開放Java庫和Java虛擬機(jī)。
從長期看,向開源發(fā)展的這股強(qiáng)大的力量能使Java受益嗎?除了其緩慢的開發(fā)進(jìn)展外,Java的一部分成功歸功于Sun所起到的管家作用。通過開放Java源代碼剝奪Sun的這一角色可能導(dǎo)致Java平臺的大大加強(qiáng),也可能終傷害它。