top
Loading...
開發狂想曲:如何在開源Java下生存

自從Sun公司宣稱要將Java代碼基礎的大部分“發布”之后,Internet上就充滿了這樣的疑問:此舉措對于Java,開源以及開發者社區來說意味著什么?

首先,我們來看一條通告:Java的關鍵部分將會在遵循開源GPL V2許可證以及Classpath例外的條件下發布。這一套重要且遵循開源許可證的Java軟件的發布可以看作是對開源社區最大的一次代碼貢獻,同時也產生了很多反應,從擔心企業Java社區會在剎那間坍塌,到許多私有軟件不可避免地衰敗。那些不了解軟件許可證的Java技術人員可能會奇怪有什么值得大驚小怪的,也不清楚這則通告對他們的影響。

GNU通用公共許可證或者GPL,是由自由軟件基金會支持的開源軟件的許可證。一旦某軟件項目中使用了遵循GPL許可證的代碼,則該項目也必須遵循GPL,這意味著它的許可證對項目使用不添加任何的附加約束。后面一點也就是我們在開源社區中經常提及的“copyleft”,這也是產生爭論的來源。Java的開源是否意味著,如果使用新近發布的遵循GPL許可證的Java虛擬機開發出Java項目也會被強制性地要求遵循GPL許可證呢?批評者稱前面的情況為“許可證的病毒天性”:遵循GPL的代碼會“傳染”其它由其演繹出的代碼,并且強迫作者在GPL下公布源代碼。

很顯然,這會造成一些恐慌——-免費開放源代碼的要求會威脅到企業Java開發人員的商業模式。但是Sun公司很快就取消了大家的擔憂,對于現有Java開發人員來說,軟件的發布意味著一切正常。Sun公司如此有信心的原因就在于前面所說的Classpath例外,Classpath例外是為Classpath項目而開發的:它是通過開源編寫的Java類標準,也在其它開源Java項目中采用,例如Kaffe。Classpath例外的內容較短,所以也值得一讀:

靜態或者動態地將java庫和其它模塊鏈接在一起,完成基于此庫的組合工作。這樣,GNU的GPL規定和條件將覆蓋在整個組合體之上。

作為一種特殊的例外,此庫的版權持有者分配給你權限來將用于生產可執行程序的獨立模塊鏈接到這一庫。無論這些獨立模塊的授權如何規定,如何復制、發行可執行程序都依賴于你的選擇。這里的獨立模塊是指非來源于或是基于此庫的模塊。如果你修改這個庫,就可以擴展這個例外到你的版本中,然而這并不是必須的義務,如果不想這樣做,可以從你的版本中刪除這條例外。

這段話的實質就是關于Java代碼問題。當你只是通過鏈接使用Java方法或者對Java類進行擴展時,你的代碼就不需要遵循GPL標準。只有當對Java代碼進行直接更改的時候才需要遵循GPL的“copylef”規則。例如,如果你擴展了一個遵循GPL許可證的Java類,并且在你的項目中使用它。則Classpath例外意味著你不要按照GPL的要求發布你的項目,但是如果你修改了原來的類,并且期望發布項目的話,則必須要遵循GPL的許可證。這樣做的結果就是只有那些從事Java語言本身的開發人員需要公布他們的源代碼,而不是那些使用Java語言進行項目開發的人員。


作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗