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