Sun發(fā)布Java代碼基礎(chǔ) 對開發(fā)者意味著什么
自從Sun公司宣稱要將Java代碼基礎(chǔ)的大部分“發(fā)布之后,Internet上就充滿了這樣的疑問:此舉措對于Java,開源以及開發(fā)者社區(qū)來說意味著什么? 首先,我們來看一條通告:Java的關(guān)鍵部分將會在遵循開源GPL V2許可證以及Classpath例外的條件下發(fā)布。這一套重要且遵循開源許可證的Java軟件的發(fā)布可以看作是對開源社區(qū)最大的一次代碼貢獻(xiàn),同時也產(chǎn)生了很多反應(yīng),從擔(dān)心企業(yè)Java社區(qū)會在剎那間坍塌,到許多私有軟件不可避免地衰敗。那些不了解軟件許可證的Java技術(shù)人員可能會奇怪有什么值得大驚小怪的,也不清楚這則通告對他們的影響。 GNU通用公共許可證或者GPL,是由自由軟件基金會支持的開源軟件的許可證。一旦某軟件項目中使用了遵循GPL許可證的代碼,則該項目也必須遵循GPL,這意味著它的許可證對項目使用不添加任何的附加約束。后面一點也就是我們在開源社區(qū)中經(jīng)常提及的“copyleft,這也是產(chǎn)生爭論的來源。Java的開源是否意味著,如果使用新近發(fā)布的遵循GPL許可證的Java虛擬機(jī)開發(fā)出Java項目也會被強(qiáng)制性地要求遵循GPL許可證呢?批評者稱前面的情況為“許可證的病毒天性:遵循GPL的代碼會“傳染其它由其演繹出的代碼,并且強(qiáng)迫作者在GPL下公布源代碼。 很顯然,這會造成一些恐慌——-免費開放源代碼的要求會威脅到企業(yè)Java開發(fā)人員的商業(yè)模式。但是Sun公司很快就取消了大家的擔(dān)憂,對于現(xiàn)有Java開發(fā)人員來說,軟件的發(fā)布意味著一切正常。Sun公司如此有信心的原因就在于前面所說的Classpath例外,Classpath例外是為Classpath項目而開發(fā)的:它是通過開源編寫的Java類標(biāo)準(zhǔn),也在其它開源Java項目中采用,例如Kaffe。Classpath例外的內(nèi)容較短,所以也值得一讀: 靜態(tài)或者動態(tài)地將java庫和其它模塊鏈接在一起,完成基于此庫的組合工作。這樣,GNU的GPL規(guī)定和條件將覆蓋在整個組合體之上。 作為一種特殊的例外,此庫的版權(quán)持有者分配給你權(quán)限來將用于生產(chǎn)可執(zhí)行程序的獨立模塊鏈接到這一庫。無論這些獨立模塊的授權(quán)如何規(guī)定,如何復(fù)制、發(fā)行可執(zhí)行程序都依賴于你的選擇。這里的獨立模塊是指非來源于或是基于此庫的模塊。如果你修改這個庫,就可以擴(kuò)展這個例外到你的版本中,然而這并不是必須的義務(wù),如果不想這樣做,可以從你的版本中刪除這條例外。 這段話的實質(zhì)就是關(guān)于Java代碼問題。當(dāng)你只是通過鏈接使用Java方法或者對Java類進(jìn)行擴(kuò)展時,你的代碼就不需要遵循GPL標(biāo)準(zhǔn)。只有當(dāng)對Java代碼進(jìn)行直接更改的時候才需要遵循GPL的“copylef規(guī)則。例如,如果你擴(kuò)展了一個遵循GPL許可證的Java類,并且在你的項目中使用它。則Classpath例外意味著你不要按照GPL的要求發(fā)布你的項目,但是如果你修改了原來的類,并且期望發(fā)布項目的話,則必須要遵循GPL的許可證。這樣做的結(jié)果就是只有那些從事Java語言本身的開發(fā)人員需要公布他們的源代碼,而不是那些使用Java語言進(jìn)行項目開發(fā)的人員。
原文鏈接:http: //www.matrix.org.cn/resource/news/Sun+Java_cc8ae08b-c6c2-11db-b4f4-dd5a5e123c5c.html
相關(guān)文章:
1. javascript實現(xiàn)雪花飄落效果2. JavaScript DOM常用操作代碼匯總3. Java實現(xiàn)三子棋小游戲4. Java中的泛型 第二部分5. JAVA如何轉(zhuǎn)換樹結(jié)構(gòu)數(shù)據(jù)代碼實例6. 你真的需要Java 7嗎?7. Effective java學(xué)習(xí)筆記2:使用私有構(gòu)造函數(shù)來強(qiáng)化單態(tài)性8. 兩行Javascript代碼生成UUID的方法9. Redis Java Lettuce驅(qū)動框架原理解析10. Java基于TCP協(xié)議socket網(wǎng)絡(luò)編程的文件傳送的實現(xiàn)
