突破困境的開(kāi)放式源碼開(kāi)發(fā)平臺(tái)
困境的開(kāi)放式源碼開(kāi)發(fā)平臺(tái)
要點(diǎn)
● Eclipse和NetBeans是兩個(gè)相似而又相互競(jìng)爭(zhēng)的開(kāi)放源碼項(xiàng)目。
● 許多公司正在成功地用Eclipse平臺(tái)提供嵌入式開(kāi)發(fā)工具。
● CPL(通用公共許可證)使開(kāi)放源碼的需求與實(shí)現(xiàn)專有部件的需求保持平衡。
● 如果IDE不是你要為工具增加的核心優(yōu)勢(shì),則要考慮對(duì)Eclipse平臺(tái)進(jìn)行評(píng)估。-----------------------------------------------------
最近幾年來(lái),開(kāi)放式源碼軟件 開(kāi)發(fā)過(guò)程展現(xiàn)出一些令人印象深刻的成功(見(jiàn)附文《開(kāi)放源碼的定義》)。根據(jù)2003年12月出版的《Netcraft 萬(wàn)維網(wǎng)服務(wù)器調(diào)查報(bào)告》(news.netcraft.com)說(shuō),用戶都使用Apache HTTP服務(wù)器項(xiàng)目—Apache軟件基金會(huì)(www.apache.org
Eclipse這個(gè)開(kāi)放式源碼軟件開(kāi)發(fā)項(xiàng)目,其側(cè)重點(diǎn)是建立一個(gè)平臺(tái),用以主控并開(kāi)發(fā)緊密集成的軟件開(kāi)發(fā)工具。IBM公司在2001年11月捐出4千萬(wàn)美元發(fā)起了Eclipse開(kāi)放源碼項(xiàng)目,用它來(lái)更高效地建立一個(gè)支持最佳工具插件的平臺(tái)。IBM繼續(xù)是該項(xiàng)目的主要內(nèi)容提供者,并領(lǐng)導(dǎo)該項(xiàng)目機(jī)構(gòu)。該項(xiàng)目目前正在變成一個(gè)用獨(dú)立的管理機(jī)構(gòu)取代IBM公司領(lǐng)導(dǎo)職責(zé)的獨(dú)立的實(shí)體。這一轉(zhuǎn)變更凸顯出該項(xiàng)目的重點(diǎn)是創(chuàng)建一個(gè)全行業(yè)的工具集成平臺(tái)。作為這種轉(zhuǎn)變的一個(gè)部分,該項(xiàng)目的名稱也可能會(huì)更改。
Eclipse項(xiàng)目和SUN公司推動(dòng)的NetBeans項(xiàng)目都是相類似的開(kāi)放式源碼項(xiàng)目,兩者均作為Java開(kāi)發(fā)環(huán)境而相互競(jìng)爭(zhēng)。Sun公司最近正式拒絕加入即將成立的獨(dú)立實(shí)體的董事會(huì),聲稱Eclipse項(xiàng)目和NetBeans項(xiàng)目缺乏共同基礎(chǔ),不能公平分享相互間的開(kāi)發(fā)成果。Eclipse和NetBeans都是基于Java的平臺(tái)框架和與語(yǔ)言無(wú)關(guān)的IDE(集成開(kāi)發(fā)環(huán)境)。因?yàn)槎际腔贘ava的,所以它們可以在多種硬件和操作系統(tǒng)上運(yùn)行,其中包括Windows、Linux、Solaris和Mac OSX。兩種IDE均可免費(fèi)下載,都需要一個(gè)JDK(java開(kāi)發(fā)工具包)1.3版以上的兼容虛擬機(jī),都可立即支持Java開(kāi)發(fā)。另外的語(yǔ)言或開(kāi)發(fā)工具支持,如對(duì)C/C++開(kāi)發(fā)的支持,則需要下載另外的插件或模塊。
Eclipse和NetBeans都允許創(chuàng)建自己的各種工具,這些工具可與IDE集成在一起,并使之?dāng)U展,以便支持任何軟件開(kāi)發(fā)功能。工具擴(kuò)展在NetBeans項(xiàng)目和Eclipse項(xiàng)目中分別稱模塊(module)和插件(plug-in)。兩種平臺(tái)的插件/模塊接口有所不同,所以插件和模塊互不兼容,兩個(gè)平臺(tái)不能進(jìn)行共享。兩個(gè)項(xiàng)目各自使用的跨目標(biāo)圖形工具包是相互間大不相同的另一個(gè)根源(附文《本源與模仿》)
NetBeans使用的Swing/AWT(抽象窗口工具包)圖形工具有一種“一次編寫(xiě),隨處運(yùn)行”的能力。Eclipse項(xiàng)目使用的JFace/SWT(標(biāo)準(zhǔn)界面工具包)具有更好的本機(jī)性能以及更好的外觀與感覺(jué),而目標(biāo)可移植性有所下降。另一個(gè)重要區(qū)別是:Swing使用Java垃圾收集器,而SWT依靠程序來(lái)釋放操作系統(tǒng)資源。這種區(qū)別使SWT會(huì)顯露操作系統(tǒng)功能并避免時(shí)序問(wèn)題(從某個(gè)對(duì)象成為垃圾到系統(tǒng)完成資源釋放之間),特別是在不同的JVM(Java虛擬機(jī))版本之間。
嵌入式開(kāi)發(fā)
Eclipse和NetBeans都非常偏向于企業(yè)軟件開(kāi)發(fā),但使用Eclipse框架進(jìn)行嵌入式開(kāi)發(fā)的集成工具正在出現(xiàn)。Eclipse組織中的成員公司代表了包括企業(yè)的、Linux的以及嵌入式開(kāi)發(fā)的工具開(kāi)發(fā)部分。這些部門(mén)各有不同需求的不同受眾,而平臺(tái)工作臺(tái)則具有運(yùn)用于每個(gè)開(kāi)發(fā)部門(mén)的商品化功能。Tensilica公司和WindRiver公司是嵌入系統(tǒng)行業(yè)中最近采用Eclipse平臺(tái)的兩家公司。
Tensilica公司的Xtensa Xplorer IDE將Eclipse平臺(tái)用作處理器配置和軟件開(kāi)發(fā)工具。雖然Wind River有Tornado IDE,但該公司官員感到,使用Eclipse框架可以把它的開(kāi)發(fā)資源更多地用于工具功能,而較少地用于商品化架構(gòu)功能。在公司采用Eclipse的決策中,要考慮的因素是Eclipse與本機(jī)平臺(tái)的更緊密的集成(從而接近本機(jī)性能)以及更能體現(xiàn)本機(jī)的外觀與感覺(jué)。
Eclipse框架是按CPL(通過(guò)公共許可證)進(jìn)行分發(fā)的,CPL鼓勵(lì)對(duì)代碼庫(kù)的協(xié)同式開(kāi)放源碼開(kāi)發(fā),但也具備足夠的靈活性,可以將代碼與其它許可證下的軟件進(jìn)行集成,包括商用許可證。OSI(開(kāi)放源碼計(jì)劃)批準(zhǔn)CPL,并可在www.opensource.org網(wǎng)站得到。如果你修改某個(gè)有CPL許可證的程序,如Eclipse代碼庫(kù),并且分發(fā)目標(biāo)代碼,則你有義務(wù)向他人提供修改后的源碼。如果你只是自己內(nèi)部使用修改過(guò)的程序,沒(méi)有公開(kāi)發(fā)布這些更改內(nèi)容,那你就不必向別人提供修改內(nèi)容。如果你編寫(xiě)與分發(fā)的插件模塊只是與原CPL代碼實(shí)現(xiàn)接口操作,但沒(méi)有對(duì)CPL代碼本身作修改,則你也不必讓源碼供公眾使用。
如果你打算在一個(gè)商用許可證下分發(fā)增值功能,則下列條款就是很重要的:如果插件模塊只與代碼庫(kù)接口而不改變代碼庫(kù),則插件模塊就不必是開(kāi)放源碼。這種許可模式可以讓你自由使用Eclipse框架,并以插件形式開(kāi)發(fā)增值功能,而不是使用自己的工具開(kāi)發(fā)資源,在不放棄專有的IP(知識(shí)產(chǎn)權(quán))權(quán)利的情況下,去建立一個(gè)以功能為中心的開(kāi)發(fā)環(huán)境。
從零開(kāi)始開(kāi)發(fā)并維護(hù)軟件工具可能要付出高昂的代價(jià)。像Eclipse這樣的開(kāi)放源碼項(xiàng)目可以幫助你減少你的工具商品部分的制造與維護(hù)費(fèi)用。你可以把Eclipse平臺(tái)的插件架構(gòu)與CPL條款結(jié)合起來(lái),為的是在你代碼的商品部分和專有部分的使用與分發(fā)之間進(jìn)行平衡,從軟件的商品部分獲益,并且為軟件的商品部分作出貢獻(xiàn),而所花費(fèi)用則比不使用平臺(tái)要低。(見(jiàn)附文《拓展Eclipse》)。然而,并不是所有軟件都是為商品分銷而編寫(xiě)的,內(nèi)部工具和嵌入式軟件就是兩個(gè)實(shí)例 。隨著開(kāi)放源碼軟件的逐漸成熟,以下做法是很有意義的:定期對(duì)Eclipse這樣的平臺(tái)進(jìn)行評(píng)估,看它是否能夠或者如何協(xié)助你以較低的成本開(kāi)發(fā)并維護(hù)內(nèi)部的軟件工具。
評(píng)論