程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 馴服Tiger: JDK 5.0源代碼許可

馴服Tiger: JDK 5.0源代碼許可

編輯:關於JAVA

Sun 最近通過 Sun 社團源代碼許可(Community Source License,SCSL)和 Java 研究許可(Java Research License,JRL)發布了 JDK 5.0 的源代碼。這個月,Tiger 的專欄作家 John Zukowski 從新發布的細節中抽空出來,概述了許可的條款以及為開發人員提供了哪些源代碼訪問。他還簡要介紹了一下 J2SE 6.0 發行版 Mustang 令人驚奇的早期訪問。請在本文對應的 討論論壇 與作者和其他讀者分享您對本文的想法。(您也可以單擊本文頂部或底部的 討論 訪問論壇。)

Sun 發布 JDK 5.0 源代碼的決定,除了提供對公共類的訪問之外,還提供了對非公共類的訪問,這給了開發人員更深入了解最新發行版幕後內容的機會 —— 前提是您不介意遵守許可條款。我不會卷入所謂“Sun 是不是應該把 Java 平台開源”的爭論,而是向您展示如何得到源代碼並討論兩個許可選項:Sun 社團源代碼許可(SCSL)和 Java 研究許可(JRL)。我還會簡要地討論 6.0 Mustang 二進制和源碼的早期訪問快照版本。

標准源代碼下載

Java 平台公共 API 的源代碼和 Javadoc 中提及的所有類都屬於標准 JDK 交付的一部分,您可以訪問它們。為訪問這些源文件,您需要將它們與 JDK 下載安裝在一起。如果給出大小(18 MB),那麼 JDK 下載是可選的,所以您必須確保在下載的時候選擇了該下載。安裝之後,只需把文件解壓到子目錄中即可,如清單 1 中演示的那樣。

清單 1. 返回 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 的立場是它可以防止平台標准分叉。無論如何,這個許可確實讓您可以訪問整個平台,這比起不能訪問來說當然有優勢。

那麼您到底可以訪問到什麼呢?對於入門者來說,您可以訪問系統資源,例如線程調度器和內存模型。如果您不喜歡現有的模型,那麼您可以創建自己的。您可以測試您的假設,看看您的模型是否更好。當然,這可能就進入了 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 嗎?這取決於您的意向。從純研究的角度來說,這次發布的版本當然是份大禮。如果您需要計劃公司未來的產品戰略,而許可條款與您的意向又不沖突,那麼還是值得調查一下的。對於本欄目的普通讀者來說,如果您想在事情完全准備好之前了解它,而且不介意運行一些還沒有經過完全測試,可能還不是全功能的代碼,那麼您就下載研究它吧。反正我知道我是准備進行研究的。

結束語

如果您居住在一個已授權可以接收源代碼的國家,那麼現在得到 JDK 源代碼比平台以前的發行版容易得多了。過去,您必須打印協議,物理地簽署協議,並傳真回 Sun。之後您才能訪問一個具有源代碼下載權的私有 Web 站點。現在,只需要用鼠標指向並單擊,單擊,單擊,就能得到源代碼。只要許可條款與您的意向不沖突,而且您是屬於比較好奇的那類人,那麼源代碼就是值得研究的好東西,可以學習更多有關 Java 工作原理的內容。對於 Mustang 來說,看看這個平台未來要走向何方會更有趣。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved