搞定JDK5.0源代碼許可
針對JDK5.0源代碼許可,Sun 最近通過 Sun 社團源代碼許可(Community Source License,SCSL)和 Java 研究許可(Java Research License,JRL)發布了 JDK 5.0 的源代碼。這個月,Tiger 的專欄作家 John Zukowski 從新發布的細節中抽空出來,概述了許可的條款以及為開發人員提供了哪些源代碼訪問。他還簡要介紹了一下 J2SE 6.0 發行版 Mustang 令人驚奇的早期訪問。
Sun 發布 JDK5.0源代碼許可的決定,除了提供對公共類的訪問之外,還提供了對非公共類的訪問,這給了開發人員更深入了解最新發行版幕后內容的機會 —— 前提是您不介意遵守許可條款。我不會卷入所謂“Sun 是不是應該把 Java 平臺開源”的爭論,而是向您展示如何得到源代碼并討論兩個許可選項:Sun 社團源代碼許可(SCSL)和 Java 研究許可(JRL)。我還會簡要地討論 6.0 Mustang 二進制和源碼的早期訪問快照版本。
標準源代碼下載
Java 平臺公共 API 的源代碼和 Javadoc 中提及的所有類都屬于標準 JDK 交付的一部分,您可以訪問它們。為訪問這些源文件,您需要將它們與 JDK 下載安裝在一起。如果給出大?。?8 MB),那么 JDK 下載是可選的,所以您必須確保在下載的時候選擇了該下載。安裝之后,只需把文件解壓到子目錄中即可,如下段代碼中演示的那樣。
返回 1.4 默認的 Steel 主題
- cd c:\jdk1.5.0
- mkdir src
- cd src
- jar xvf ..\src.zip
現在,如果您在開發代碼的時候遇到問題,得到意外的堆棧轉儲,您就可以查看系統類的源代碼,看看是為什么。例如,用 null 參數調用 StringBuffer 構造函數是不對的。為什么呢?查看源代碼,就了解到,構造函數試圖取得 string 的長度。雖然在 Javadoc 中有文檔說明, StringBuffer 構造失敗會拋出 NullPointerException 異常,但是查看源代碼可以讓您知道 為什么 會失敗。因為您不能對 null 對象指針調用 length 方法。
注意: 源文件保存為具有 Unix 換行符,如果用記事本(Notepad)這樣的編輯器查看源代碼,閱讀起來會很困難,因為文件中沒有回車符。如果您想轉換這些文件,那么 JavaWorld 的 Java Tip 64仍然會有用。
JDK 5.0 源代碼包
JDK 沒有提供平臺的全部源代碼。提供了 java.* 和 javax.* 包中的公共類,但是沒有提供 sun.* 或虛擬機中的公共類。JDK 5.0 源代碼包就是彌補這個不足的。如果您能夠遵守其中任何一個許可的條款(稍后介紹),那么您就可以訪問平臺(允許 Sun 公開的平臺)的完整源代碼。這兩個許可許可了一些東西,但是它們也有自己的再發布限制。您可以從 Java 2 Platform Standard Edition 5.0 頁面訪問源代碼(請參閱 參考資料)。只要單擊您要遵守的許可的下載鏈接,閱讀并接受許可條款,然后單擊第一個下載鏈接,就會顯示組的文件列表。這時,有兩個下載鏈接,一個是 55 MB 的 zip 格式的源代碼文件,另一個是安全性文件(例如加密供應者),只有不到 1 MB。下載源文件,解壓后就可以研究了。還有另外一個 2 MB 的二進制文件下載,它包括共享庫、字體和圖片。有它更好,沒有也可以。
Sun 社團源代碼許可
最新的 J2SE 發行版中引入的 Sun 社團源代碼許可(Sun Community Source License,SCSL),針對研究社團做了少量修改。該許可在 5.0 中基本上沒有變化。
SCSL 不是一個開源許可,但是允許您自由地訪問源代碼,前提是您可以接受許可(而且在授權國家居住)。但是,根據您處理許可的方式,您可能要付費。雖然不是每個人都同意該許可,而且我也不想對它發表評論,Sun 的立場是它可以防止平臺標準分叉。無論如何,這個許可確實讓您可以訪問整個平臺,這比起不能訪問來說當然有優勢。
那么您到底可以訪問到JDK5.0源代碼呢?對于入門者來說,您可以訪問系統資源,例如線程調度器和內存模型。如果您不喜歡現有的模型,那么您可以創建自己的。您可以測試您的假設,看看您的模型是否更好。當然,這可能就進入了 Java 研究許可(JRL)的領域。如果您想修補的 bug 已經等候了很久,但是在 Sun 的優先級列表中沒有排在前面,那么您可以自己修補它,然后把補丁發回 Sun。您想自己留著補丁?當然可以,但是重新發布的修復了這個 bug 的平臺會有一些限制。這時就需要許可費和兼容性測試套件了。想要創建一個干凈版本的虛擬機或者庫?那么背道而馳,不要贊成這個許可(即 JRL)。
Java 研究許可
Java 研究許可(Java Research License,JRL)是 Java 源代碼版本許可方案的新成員。在研究社團對 SCSI 中原來的研究部分提出諸多抱怨之后,專門針對大學和研究社團創建了 JRL。如果您是大學或者研究機構的老師或研究人員,那么下載具有 JRL 的源代碼是比較合適的。許可中的研究使用權力部分規定,您可以用這項技術與其他也獲得許可的人進行研究,修改代碼,并發表您的研究。
但是,有一些灰色區域。許可說,您可以與其他人獲得許可的人共享源代碼;許可還說,如果不是主要的部分,您還可以分發對象代碼以及發布源代碼的摘錄。現在,如果您計劃教授您的研究,而您的學生要為課程付費(也就是說成為了商業行為,而不僅僅是研究目的),那么您就違反了許可。如果您想要根據通過 JRL 訪問搜索到的材料來教學,那么建議您最好先咨詢一下法律顧問。
Mustang
Sun 最近帶給我們的一個驚奇就是對 J2SE 6.0(代號為 Mustang)的早期訪問。(為了滿足您的好奇心,透露一下 7.0 的代號為 Dolphin。)J2SE 的下一版本預計在 2006 年春發布,在 JRL 許可之下,您既可以訪問該版本的源代碼,也可以訪問它的二進制代碼。該下載中缺少 Javadoc,您必須在構建 JDK 之后自行構建它。
值得花時間現在研究 Mustang 嗎?這取決于您的意向。從純研究的角度來說,這次發布的版本當然是份大禮。如果您需要計劃公司未來的產品戰略,而許可條款與您的意向又不沖突,那么還是值得調查一下的。對于本欄目的普通讀者來說,如果您想在事情完全準備好之前了解它,而且不介意運行一些還沒有經過完全測試,可能還不是全功能的代碼,那么您就下載研究它吧。反正我知道我是準備進行研究的。
結束語
對于JDK5.0源代碼許可而言,如果您居住在一個已授權可以接收源代碼的國家,那么現在得到 JDK 源代碼比平臺以前的發行版容易得多了。過去,您必須打印協議,物理地簽署協議,并傳真回 Sun。之后您才能訪問一個具有源代碼下載權的私有 Web 站點?,F在,只需要用鼠標指向并單擊,單擊,單擊,就能得到源代碼。只要許可條款與您的意向不沖突,而且您是屬于比較好奇的那類人,那么源代碼就是值得研究的好東西,可以學習更多有關 Java 工作原理的內容。對于 Mustang 來說,看看這個平臺未來要走向何方會更有趣。
【編輯推薦】