Sun發(fā)布Java代碼基礎(chǔ) 對(duì)開(kāi)發(fā)者意味著什么
自從Sun公司宣稱要將Java代碼基礎(chǔ)的大部分“發(fā)布之后,Internet上就充滿了這樣的疑問(wèn):此舉措對(duì)于Java,開(kāi)源以及開(kāi)發(fā)者社區(qū)來(lái)說(shuō)意味著什么? 首先,我們來(lái)看一條通告:Java的關(guān)鍵部分將會(huì)在遵循開(kāi)源GPL V2許可證以及Classpath例外的條件下發(fā)布。這一套重要且遵循開(kāi)源許可證的Java軟件的發(fā)布可以看作是對(duì)開(kāi)源社區(qū)最大的一次代碼貢獻(xiàn),同時(shí)也產(chǎn)生了很多反應(yīng),從擔(dān)心企業(yè)Java社區(qū)會(huì)在剎那間坍塌,到許多私有軟件不可避免地衰敗。那些不了解軟件許可證的Java技術(shù)人員可能會(huì)奇怪有什么值得大驚小怪的,也不清楚這則通告對(duì)他們的影響。 GNU通用公共許可證或者GPL,是由自由軟件基金會(huì)支持的開(kāi)源軟件的許可證。一旦某軟件項(xiàng)目中使用了遵循GPL許可證的代碼,則該項(xiàng)目也必須遵循GPL,這意味著它的許可證對(duì)項(xiàng)目使用不添加任何的附加約束。后面一點(diǎn)也就是我們?cè)陂_(kāi)源社區(qū)中經(jīng)常提及的“copyleft,這也是產(chǎn)生爭(zhēng)論的來(lái)源。Java的開(kāi)源是否意味著,如果使用新近發(fā)布的遵循GPL許可證的Java虛擬機(jī)開(kāi)發(fā)出Java項(xiàng)目也會(huì)被強(qiáng)制性地要求遵循GPL許可證呢?批評(píng)者稱前面的情況為“許可證的病毒天性:遵循GPL的代碼會(huì)“傳染其它由其演繹出的代碼,并且強(qiáng)迫作者在GPL下公布源代碼。 很顯然,這會(huì)造成一些恐慌——-免費(fèi)開(kāi)放源代碼的要求會(huì)威脅到企業(yè)Java開(kāi)發(fā)人員的商業(yè)模式。但是Sun公司很快就取消了大家的擔(dān)憂,對(duì)于現(xiàn)有Java開(kāi)發(fā)人員來(lái)說(shuō),軟件的發(fā)布意味著一切正常。Sun公司如此有信心的原因就在于前面所說(shuō)的Classpath例外,Classpath例外是為Classpath項(xiàng)目而開(kāi)發(fā)的:它是通過(guò)開(kāi)源編寫(xiě)的Java類標(biāo)準(zhǔn),也在其它開(kāi)源Java項(xiàng)目中采用,例如Kaffe。Classpath例外的內(nèi)容較短,所以也值得一讀: 靜態(tài)或者動(dòng)態(tài)地將java庫(kù)和其它模塊鏈接在一起,完成基于此庫(kù)的組合工作。這樣,GNU的GPL規(guī)定和條件將覆蓋在整個(gè)組合體之上。 作為一種特殊的例外,此庫(kù)的版權(quán)持有者分配給你權(quán)限來(lái)將用于生產(chǎn)可執(zhí)行程序的獨(dú)立模塊鏈接到這一庫(kù)。無(wú)論這些獨(dú)立模塊的授權(quán)如何規(guī)定,如何復(fù)制、發(fā)行可執(zhí)行程序都依賴于你的選擇。這里的獨(dú)立模塊是指非來(lái)源于或是基于此庫(kù)的模塊。如果你修改這個(gè)庫(kù),就可以擴(kuò)展這個(gè)例外到你的版本中,然而這并不是必須的義務(wù),如果不想這樣做,可以從你的版本中刪除這條例外。 這段話的實(shí)質(zhì)就是關(guān)于Java代碼問(wèn)題。當(dāng)你只是通過(guò)鏈接使用Java方法或者對(duì)Java類進(jìn)行擴(kuò)展時(shí),你的代碼就不需要遵循GPL標(biāo)準(zhǔn)。只有當(dāng)對(duì)Java代碼進(jìn)行直接更改的時(shí)候才需要遵循GPL的“copylef規(guī)則。例如,如果你擴(kuò)展了一個(gè)遵循GPL許可證的Java類,并且在你的項(xiàng)目中使用它。則Classpath例外意味著你不要按照GPL的要求發(fā)布你的項(xiàng)目,但是如果你修改了原來(lái)的類,并且期望發(fā)布項(xiàng)目的話,則必須要遵循GPL的許可證。這樣做的結(jié)果就是只有那些從事Java語(yǔ)言本身的開(kāi)發(fā)人員需要公布他們的源代碼,而不是那些使用Java語(yǔ)言進(jìn)行項(xiàng)目開(kāi)發(fā)的人員。
原文鏈接:http: //www.matrix.org.cn/resource/news/Sun+Java_cc8ae08b-c6c2-11db-b4f4-dd5a5e123c5c.html
相關(guān)文章:
1. ASP.NET Core 7 Razor Pages項(xiàng)目發(fā)布到IIS的詳細(xì)過(guò)程2. Java通俗易懂系列設(shè)計(jì)模式之策略模式3. Java 接口和抽象類的區(qū)別詳解4. 深度剖析JavaScript作用域從局部到全局一網(wǎng)打盡5. java字符串格式化輸出實(shí)例講解6. Java使用Tesseract-Ocr識(shí)別數(shù)字7. 詳解java google Thumbnails 圖片處理8. 全面解析java final關(guān)鍵字9. 基于javaweb+jsp實(shí)現(xiàn)企業(yè)車輛管理系統(tǒng)10. Java private修飾符失效的原因
