談Sun關(guān)于Java的開放源代碼策略

關(guān)于諸多系統(tǒng)的開放源代碼,近來成了大家討論的熱門話題。而今年,微軟和Java也加入了其中,這就讓數(shù)千萬的人們更加注意,畢竟,依靠.Net和Java而開發(fā)系統(tǒng)程序的人數(shù)目就有這么多,他們當(dāng)然會(huì)對(duì)系統(tǒng)的開放非常關(guān)心。

今天,我們要說的就是Sun公司關(guān)于Java的開放策略。

早在今年上半年,Sun就傳出風(fēng)聲,對(duì)Java要開放源代碼。這也給業(yè)內(nèi)更多的人以期待。就在本月的13日,Sun公布了這次開放源代碼的具體情況。但是,從其它廠商的反應(yīng)來看,似乎對(duì)這種策略頗多微詞。很多Java的用戶也對(duì)這方面有各種想法,我們因?yàn)榇硕鶶un公司的負(fù)責(zé)人談起了Java的開放策略,使得我們對(duì)Java開放更加清楚。下面我們就對(duì)大家關(guān)注的一些問題做詳細(xì)的解釋。

Sun為什么要開放Java源代碼?

很多人都有這樣的疑問,Sun是一個(gè)公司,開放Java源代碼對(duì)他們自己有什么好處,其商業(yè)價(jià)值在哪里?

其實(shí),作為一個(gè)IT系統(tǒng)廠商,當(dāng)然希望其下的產(chǎn)品被更多的人采用,這也是公司理念和個(gè)人利益不同的方面。這個(gè)觀點(diǎn)Sun公司的CEO Jonathan在自己的博客里表述得很清楚,他在Sun發(fā)布Java開放源代碼的時(shí)候,就寫了一篇博客,名為“Sun從這里得到一些什么”。他講的第一句話就是我們中文講的“水漲船高”,因?yàn)镾un最大的利益就在于水漲船高,Sun要從Java里得到商業(yè)利益的話,一定是從Java的運(yùn)用要能夠普及,在遍地開花,各個(gè)地區(qū)都充分地應(yīng)用Java,我們知道Java在全世界有超過500萬的開發(fā)人員,有超過將近40億的,各種不同的器件都有Java在里面,包括我們講的智能卡、Java卡、手機(jī),全世界有超過15億支的比較智能化的手機(jī)都附有Java技術(shù)。

今天大家也都知道軟件中的SOA,不希望大家花很多的時(shí)間做那些前人早已經(jīng)做過的事情,如果我們開放了源代碼,那么等于節(jié)省了大家的時(shí)間,同時(shí)也會(huì)讓Java的整體發(fā)展上升一個(gè)新的臺(tái)階,會(huì)有更多的程序員和技術(shù)專家加入進(jìn)來,這樣,這個(gè)市場還會(huì)越來越大,Java技術(shù)本身就是跨平臺(tái)的產(chǎn)品,他已經(jīng)在IT系統(tǒng)得到廣泛的普及,也在移動(dòng)手持設(shè)備和嵌入式產(chǎn)品中有很大的市場,相信通過開放源代碼這樣的活動(dòng),Java市場會(huì)變得很廣闊。希望通過源代碼的措施,希望Java的使用環(huán)境更為擴(kuò)大,當(dāng)Java使用環(huán)境擴(kuò)大之后,Sun的商業(yè)利益就出來了,大家使用Java越多,越需要商業(yè)化對(duì)Java的支持,一些商業(yè)性對(duì)Java的支持,像我們現(xiàn)在的一些企業(yè)對(duì)商業(yè)的訴求,像大部分的手機(jī)廠商,大部分主要的智能卡的廠商,所有的中間件廠商,這些廠商需要商業(yè)性的支持,能夠讓它的Java應(yīng)用真正非常的安全、可靠,而且有服務(wù)。Sun創(chuàng)造了一個(gè)很大的Java使用環(huán)境應(yīng)用,我們認(rèn)為這些商業(yè)利益也會(huì)不斷的增加,給Sun帶來的主要利益是在這兒?!八疂q船高”這句話應(yīng)用得很好,英語里有這個(gè)詞,在中文里有這樣的詞來充分代表,Sun在這里獲利的方向。

那么如何開放,Sun的策略是什么?

我們知道Java的應(yīng)用已經(jīng)有了將近40億的器件,已經(jīng)有500萬的開發(fā)人員,我們?cè)趺礃幼孞ava更好呢?在這個(gè)過程中間,除了Sun不斷的努力推廣,以及我們的合作伙伴及我們Java的社區(qū)。在過去一直有大家比較爭議的問題,是Java源代碼的問題,這個(gè)問題Sun從前年開始逐步采取措施建源代碼,在去年的Java1的時(shí)候,Sun就宣布所有的Java都會(huì)開放源代碼,當(dāng)然這需要一個(gè)過程。經(jīng)過我們的努力,差不多在18個(gè)月的時(shí)候,把Java所有的源代碼的可能性都已經(jīng)做了實(shí)踐。我們后續(xù)還有一些有關(guān)Java的調(diào)用,源代碼也要不斷的公布,在明年3月之前整個(gè)Java,作為開放源代碼的開發(fā)人員可以利用Sun所有的Java源代碼進(jìn)行重新的構(gòu)建一個(gè)完整的環(huán)境。這個(gè)會(huì)完成我們所有Java源代碼的開放,但是這個(gè)源代碼開放中間,除了基本的源碼本身的清理,還有很重要的是Sun到底采取什么樣源代碼開放的策略?這次公布的最主要是在許可證這個(gè)策略上,我們希望許可證出來,有最大的可能性去擴(kuò)展Java的使用環(huán)境。

具體的開放方式是怎樣的?

目前開放源碼的許可方式還有GPL的模式,這種模式不屬于商業(yè)開放源碼的模式,屬于一個(gè)社區(qū)的開放源碼,但是它跟商業(yè)許可不一樣,Sun公司目前對(duì)于JavaSE和JavaME這兩個(gè)平臺(tái)技術(shù)的開放源碼,是采用社區(qū)方式和商業(yè)方式兩種。以前Sun公司的JavaSE或者JavaME的實(shí)現(xiàn),它的產(chǎn)品源碼目前許可證可以提供的,這種商業(yè)提供源碼現(xiàn)在有很多公司跟Sun公司有商業(yè)源碼提供的協(xié)議,這種商業(yè)源碼的協(xié)議目前沒有任何改變。社區(qū)開放,商業(yè)許可還是商業(yè)許可,這是兩條路。

未來Sun公司屬于商業(yè)的產(chǎn)品也都是為源碼的開放,未來開發(fā)是社區(qū)性的開發(fā),但是商業(yè)的用戶還有很多的,比如JavaME的環(huán)境里,技術(shù)的需求等等,這是一個(gè)商業(yè)的許可證,從Sun這兒購買商業(yè)的許可證產(chǎn)品,今天開放社區(qū)的源碼,Sun公司有這樣的趨勢在這里,但是開放并沒有我們?cè)谥袊鋫b小說里的,老師要留一手,有什么武功秘笈什么的,所謂開放的概念就是,未來所有源代碼的工作都會(huì)轉(zhuǎn)到社區(qū)來,根據(jù)GPL的許可證本身所具有的要求,有一些新的發(fā)布,會(huì)有一些新的產(chǎn)品在一起搭配著發(fā)布,開發(fā)人員當(dāng)中有很大的便利,能看到所有的源代碼,這里有很多附加的要求,有些東西本身開發(fā)的性質(zhì)是開放性的,比如說我們Sun公司可以跟另外一家公司把許可證技術(shù)放在商業(yè)的產(chǎn)品里。并不是Java源代碼這部分,但是這個(gè)技術(shù)可能是某一家公司擁有的,但是Sun公司可以把它變成商業(yè)性的產(chǎn)品來發(fā)布。但是必須要符合許可證里規(guī)定的要求,其他公司也可以用這個(gè)方法,好處就是市場上的競爭狀況,可是對(duì)于很多企業(yè)用戶來說,最終要有一個(gè)商業(yè)的,用戶和供應(yīng)商的關(guān)系我們叫合作伙伴關(guān)系,它需要有商業(yè)性的保證等等。這樣的話,它的產(chǎn)品在采用許可證的時(shí)候,會(huì)得到相關(guān)的保證。這必須要由商業(yè)機(jī)構(gòu)來取得,因?yàn)槠髽I(yè)不愿意從開放市場和開放源代碼的社區(qū)來取得,因?yàn)殚_放源代碼的社區(qū)沒有這些商業(yè)上的保障。

對(duì)于Java的開放源代碼,應(yīng)該說大家都是抱著歡迎的態(tài)度的,但是Java開放后如果有組織或者個(gè)人擴(kuò)充了新的功能,那Java的平臺(tái)就會(huì)像今天的Linux一樣,變出很多不兼容的版本。

Java開放后的兼容性問題

談到這個(gè)問題,Sun的技術(shù)官員做了詳細(xì)的解釋,讓我們?nèi)玑屩刎?fù)。

首先說一下開源和開放技術(shù)之間是有區(qū)別的。Sun宣布這次開放源代碼這個(gè)項(xiàng)目之前,實(shí)際上Java的規(guī)范是開放的,什么意思呢?通過Java社區(qū)組織開發(fā)出或者制定出來所有的Java規(guī)范,各種各樣的Java規(guī)范都是開放使用的,可以免費(fèi)下載的。相關(guān)的為了實(shí)現(xiàn)這些規(guī)范,所有的一些參考實(shí)踐也是開放的,有一些參考實(shí)踐是“源碼”的形式,有些是“二進(jìn)識(shí)碼”的形式開放的,對(duì)這種開放的可以實(shí)現(xiàn)Java規(guī)范,不管你用不用參考實(shí)踐,可以不用參考實(shí)踐自己去實(shí)現(xiàn)這個(gè)規(guī)范,也可以根據(jù)參考實(shí)踐去實(shí)現(xiàn)這個(gè)規(guī)范來做出產(chǎn)品,這都是可以的。這樣也同樣存在一個(gè)兼容性的問題,大家都說按照規(guī)范做的產(chǎn)品,到底是不是按照規(guī)范去做了呢?怎么來檢測呢?這就是Java規(guī)范三位一體,除了規(guī)范的文本和參考實(shí)踐之外,還有一個(gè)兼容性測試工具,兼容性或者叫復(fù)合型測試套件。TCK做什么,就是任何人要實(shí)現(xiàn)一個(gè)Java規(guī)范,實(shí)現(xiàn)之后要說它是一個(gè)Java產(chǎn)品,換句話要說這個(gè)產(chǎn)品和Java規(guī)范要符合,必須要通過TCK的測試,才能叫是Java兼容性的產(chǎn)品。不管開源不開源,兼容性的問題都是靠TCK的測試來解決的。Sun公司開放的源碼是什么含義呢?真正含義是Sun公司開放了根據(jù)Java規(guī)范自己做的商業(yè)代碼,自己Java的產(chǎn)品的源碼的開放,不是參考實(shí)踐的源碼的開放,而是Sun公司自己對(duì)Java規(guī)范商業(yè)實(shí)現(xiàn)源碼的開放。今后不管是Sun公司還是別的公司根據(jù)Sun公司開放的這套源代碼去做產(chǎn)品的時(shí)候,都必須通過TCK的測試。不管是誰的產(chǎn)品,通過TCK測試之后,從理論上說是兼容的,所以TCK測試這個(gè)模式是沒有改變,來保證它的兼容性,是這樣解決這個(gè)問題的。

Sun將Java推向了公眾,是不是意味著公司以后的投入會(huì)減少呢?

對(duì)于Java的支持其實(shí)比較來說會(huì)不會(huì)減少,我覺得事實(shí)上從我們剛才提到“水漲船高”的概念來講,如果說一個(gè)環(huán)境,我們獲得的利益更高的話,我們當(dāng)然會(huì)投入更大。Java的發(fā)展不斷地?cái)U(kuò)展,Java雖然現(xiàn)在相對(duì)地穩(wěn)定,但是我們還有很多方面需要不斷地改進(jìn),符合用戶的需求。比如說我們手機(jī)在過去幾年的進(jìn)步速度非???,在手機(jī)方面的Java規(guī)范,以及我們參考實(shí)施都是需要不斷的改進(jìn)和不斷的投入。除了手機(jī)之外還有不同的工具的出現(xiàn),也需要我們不斷地在Java方面進(jìn)行更大的投入。所以在這方面Sun決定會(huì)在Java方面繼續(xù)把它作為Sun公司最核心技術(shù)的組成部分,會(huì)不斷地投入大量的支持,跟我們技術(shù)的力度能夠讓Java真正的,不僅僅是在開源環(huán)境里,在商業(yè)應(yīng)用里也會(huì)持續(xù)地、不斷地?cái)U(kuò)展,為大家所接受。

說到Java的推廣,人們首先想到的就是開源的Linux,目前在中國的情況不能讓大家都樂觀,那么,未來的Java如何做中國這個(gè)市場呢,畢竟,中國的情況跟國外還不相同。

因?yàn)殚_源是一個(gè)地區(qū)或者說我們講一個(gè)國家,現(xiàn)在開源的許可證里都是全面性的,所以開源的社區(qū)不是存在在某個(gè)地方,是存在Internet,它是沒有國界的。所以,所謂因地制宜的概念,我們?cè)S可證的方式是推廣的方式,但是一個(gè)開源社區(qū)的推廣是來自于這個(gè)開源的參與者。也就是說今天我們很多媒體可能會(huì)想,Java是Sun開源的,Sun要在中國推廣Java,Sun是絕對(duì)需要在中國推廣Java,但是在中國推廣Java的責(zé)任是所有在中國參與到Java開源社區(qū)的,利用開源社區(qū)進(jìn)行更一步的IT技術(shù)發(fā)展的所有人。對(duì)于社區(qū)的概念很重要,當(dāng)我們把一個(gè)技術(shù),像開源,本身第一個(gè)擔(dān)心的就是這個(gè)公司對(duì)于技術(shù)的掌控權(quán)沒有,但是這個(gè)掌控權(quán)是另外一個(gè)概念。

像微軟,微軟的開源,微軟講開放講很久了,開放軟件、開放源代碼,說可以給12個(gè)人訂機(jī)票去看它的軟件開放,這可能就是它對(duì)中國的因地制宜,這就是微軟式的開放政策。這跟我們?cè)贗nternet環(huán)境里,大家所公認(rèn)了解的開源開放是有非常大的距離。但是Sun絕對(duì)是在開源的領(lǐng)域是占先鋒的地位,我們不僅僅依照現(xiàn)在開源社區(qū),因?yàn)樽罱泻芏郤un的許可證方案,訂立開源社區(qū),把它創(chuàng)建起來、發(fā)展起來。Sun公司是開源社區(qū)的一分子,今天要把我們的軟件放到開源社區(qū)的話,我們也要符合開源社區(qū)的規(guī)范做這樣的事情。許可證是一個(gè)問題,是經(jīng)過很久考慮的問題。Sun已經(jīng)做了這個(gè)決定,被大家所接受。

在中國我們?cè)趺醋瞿兀?

在中國我們希望說,在中國是政府行政的力量比較大的社會(huì),在這個(gè)社會(huì)里這樣開源社區(qū)的形成,可能跟其他國家形成的方法會(huì)有所不同,因?yàn)樵谄渌膰彝耆亲韵露系?,社區(qū)自然而然通過Internet所有的參與者和開發(fā)人員來形成社區(qū),在中國如果有政策的支持或者我們國家的行業(yè)協(xié)會(huì),我們國家的行業(yè)協(xié)會(huì)大家都理解,我們國家的行業(yè)協(xié)會(huì)是半政府性質(zhì)的,不是純粹像國外的行業(yè)協(xié)會(huì)是純粹民間性質(zhì)的。在這樣的環(huán)境之下,有政府行政力量的因素,對(duì)社區(qū)的發(fā)展有一個(gè)大的助力,中國又是一個(gè)IT相對(duì)落后的國家,我們?cè)贗T發(fā)展的起跑線上我們已經(jīng)輸了很多,在這樣開源社區(qū)的發(fā)展之下,如果政府不能夠加點(diǎn)油或者推一把,我們的發(fā)展不一定能夠趕得上其他國家的發(fā)展。也許我們落后的程度可能反而會(huì)越來越大。陸總提出來開源的因地制宜的方法,從中國具體的社會(huì)狀況,從IT發(fā)展階段來看應(yīng)該是鼓勵(lì)我們有一個(gè)政府或者是半政府的組織的參與,鼓勵(lì)開源社區(qū)能夠快速的發(fā)展,能夠透過開源社區(qū)的發(fā)展,來提高我們中國IT的步驟。

在政府參與里牽扯到具體的許可證的問題,這個(gè)問題事實(shí)上陸總提到采用混源有一些變更的辦法來做,像Sun公司Solaris開源,是用GBDL是混源的方式,因?yàn)镚BDL可以你根據(jù)開源代碼開發(fā)軟件的這些人,不需要再把代碼公布,所謂混源,開放源代碼有的是二進(jìn)位的代碼,可以跟源代碼混合發(fā)布,GPL的特點(diǎn)一定是開源代碼發(fā)布,對(duì)于GPL社區(qū)里的人是非常堅(jiān)持的,如果做不到這一點(diǎn),是不會(huì)用這個(gè)來發(fā)布的。我們講的Linux,為什么我們很多的技術(shù)沒有辦法作為Linux的方式統(tǒng)一發(fā)布,就是因?yàn)槿绻徊捎肎PL的方式,Linux是絕對(duì)不會(huì)把它放在里面。這樣的概念是符合Sun公司在考慮許可證有很多這樣的需求,因?yàn)楸热缯f我們政府的某些機(jī)構(gòu),利用政府的資源來開發(fā)源代碼,他不希望完全把它開源,或者有一些企業(yè)進(jìn)行一些開源,他覺得要進(jìn)行某些保護(hù),事實(shí)上我們今天在GPL里有一部分例外,我還是有這個(gè)可能我只是把二進(jìn)位的代碼公布,不公布源代碼,但是有相應(yīng)的條件,有一定混源的要求的。GBDL是比較符合混源的要求,我們看到這個(gè)相對(duì)于在世界上開源社區(qū)的人,對(duì)于GBDL存在一定的排斥,他們認(rèn)為GPL是比較多的人使用方式,尤其是在Linux方面。大多數(shù)人采用GPL的方式,經(jīng)過多數(shù)人的考量,我們覺得在Java的開源方面,采用GPL的方式最能夠保證Java未來的兼容性,因?yàn)楫?dāng)所有源代碼都公布的時(shí)候,有一個(gè)廠家或者某一個(gè)社區(qū)想要去改變就很困難,因?yàn)榇蠹铱梢钥吹胶茈y改變Java的兼容性,這個(gè)問題就解決了Java發(fā)生問題的兼容性。在這方面陸總的話有很明確的道理在里面,我認(rèn)為中國的開源需要有政府以及半官方的力量協(xié)助,才能夠改造世界整個(gè)開源的潮流跟進(jìn)度。

Sun比較能夠在著眼于中國方面,從許可證本身做了一些考量,但是我們推廣的問題,當(dāng)然我們跟中國政府,并不是說跟中國政府有不同的方法或者說不同的社區(qū),整個(gè)社區(qū)是存在虛擬空間的,不存在社區(qū)的問題,最主要讓中國的業(yè)界包括我們政府指導(dǎo)我們行業(yè)的主管機(jī)構(gòu),還有官方的行業(yè)機(jī)構(gòu)都能夠了解許可證的含義是什么,了解它能夠扮演什么角色,Sun作為許可證的發(fā)布者和作為Java的推廣者,我們當(dāng)然可以主動(dòng)跟政府做這個(gè)事情。但是已經(jīng)是開放的東西,事實(shí)上就不是自己擁有的,Sun公司把所有的源代碼給中國政府,這是沒有意義的。因?yàn)檫@個(gè)東西已經(jīng)直接開放了。我是說政府支持的這些研究機(jī)構(gòu)和國有企業(yè)都可以直接從網(wǎng)上參與到這個(gè)社區(qū)的發(fā)展。

如果對(duì)于這樣開源的環(huán)境并不是很了解,我們希望透過Sun這樣的力量跟我們國內(nèi)的企業(yè)、跟國內(nèi)的研究單位進(jìn)行交流,我們也會(huì)舉辦單獨(dú)的活動(dòng)跟相應(yīng)交流的活動(dòng),讓他們更清楚知道許可證的含義是什么,我們從商業(yè)的角度,像我們商業(yè)許可證有什么特別,作為一個(gè)企業(yè),雖然我們今天開放了源代碼,但是企業(yè)還需要許可證,許可證給它不同的東西,真正把這個(gè)東西放在未來3G的手機(jī)上,放在我們國家用的Java卡里,為什么從Sun這兒拿到許可證,為什么不直接自己去拿Open Source的許可證,我們還是會(huì)跟這些企業(yè)溝通,讓他們更了解,一方面他得到益處,還是會(huì)有合作的可能性。我們最主要的在這個(gè)階段,讓我們國家所有相關(guān)的企業(yè)、政府、主管單位和行業(yè)企業(yè)都能夠了解開放源代碼的意義。因?yàn)橄鄬?duì)來講,我們知道開源的概念對(duì)中國的IT業(yè)界來說,是一個(gè)比較新接受的概念,大家可能對(duì)這個(gè)有不理解的地方和誤解的地方,或者說不是很明了的地方?;谶@些源碼進(jìn)行更深層次的開發(fā)之后產(chǎn)生的商業(yè)性的問題,還不是非常了解。但是這方面Sun可以通過我們媒體讓大家了解。我們跟各位的溝通也是處于這樣的觀點(diǎn),希望各位都能夠了解開放開源的意義,屬于大家有什么疑惑,或者在網(wǎng)上看到一些評(píng)論,這個(gè)評(píng)論這樣講,不知道對(duì)不對(duì)。以前有的時(shí)候,Java的關(guān)注者說Java的最大問題就是Java不開源。但這一句話里有各種不同的含義,因?yàn)镴ava開源,所謂開源代表什么東西,并不是一個(gè)非常單純的概念,你這個(gè)源代碼大家都可以看,就是開源,開源還有很多深層次的意義在里面,我們希望通過這樣的溝通,讓國內(nèi)的IT業(yè)者能夠非常清楚了解開源的意義,通過這樣的方式更進(jìn)一步發(fā)展我們國內(nèi)的Java社區(qū),通過這樣社區(qū)的發(fā)展帶動(dòng)我們整個(gè)國內(nèi)Java相關(guān)的企業(yè)的進(jìn)步。