2012-01-19 114 views

回答

4

Java的名稱可以應用於許多不同的組件,它們一起工作。它可能對某些人來說意味着「Java虛擬機」,對其他人來說可能是「Java語言規範」,對許多人來說可能是「Java編譯器」,對許多人來說可能意味着「Java語言庫」。

如果您希望Java5的Java虛擬機(JVM)的源代碼爲it is available;但不在開源許可下。 Java的第一個「開放源代碼」副本與「Java 6」一起發佈。如果您需要Java5源代碼,則需要註冊一個「Java研究員許可協議」,以便您訪問JVM的源代碼(至少是Java5)。在編寫Java5環境的代碼時,擁有JVM的源代碼是完全沒有必要的。

如果您需要Java語言規範Java5的源代碼it is a text document (typically published as a book or on-line set of web pages)。儘管它可以讓你理解編譯器在某些情況下是否應該抱怨錯誤,但不需要編寫Java5環境的程序。

如果你想Java5編譯器,it can be downloaded in the oracle archives of old releases of the Java development toolkit。如果您想爲Java5編寫程序,那麼下載並使用此產品通常是開發Java5程序的最佳實踐。或者,您可以配置兼容的兼容編譯器(Java6/Java7)來發出Java5代碼。

如果您需要Java5語言庫,它們包含在Java5開發工具包中。 Java6和Java7開發工具包提供的語言庫需要付出很大的努力才能與Java5源代碼兼容;然而,較新的庫還包括Java5虛擬機無法引用的更新功能和操作。再次,有技術可以安全地使用Java的後向兼容版本(6/7);但是,如果他們的開發基於Java5開發工具包,則無需特別小心。語言庫的「源代碼」包含在Java研究許可協議下JVM的源代碼中,允許SUN包含此類源代碼。

雖然SUN已經從其他公司獲得許多技術的許可證,並且可以隨Java5自由分發,但SUN並不一定完全擁有Java5中的所有技術。因此,即使在Java研究者許可協議下,一些源代碼也不可用(儘管編譯的庫是)。開放源代碼項目(如OpenJDK)很快利​​用開放源代碼庫實現了這些缺失的「漏洞」,以獲得功能齊全的開源Java堆棧;但是,那是Java6 +(不是Java5)。

+0

感謝您的詳細回覆,我只是一個業餘愛好者,希望看到源代碼java.lang和其他基本包來淬火我的好奇心..我應該檢查Java檔案? :)! – hakish

+0

如果你只是想看看「java.lang」的東西,看看Java6。至少可以在沒有限制性許可的情況下使用。另外,要認識到它大部分都是用Java編寫的,並有許多關鍵的「原生」背景。您需要知道您的JNI才能讀取它,而本機實現依賴於JVM實現。代碼的這些部分處理必須完成的事情,但不會在語言中暴露出來(像malloc'ing內存和以允許自動垃圾收集的方式註冊類)。有趣的東西;對典型項目很少有用。 –

0
+0

我看不到在這個鏈接中的源代碼只有二進制文件... – hakish

+3

你可以得到的所有源代碼都在JDK中。 –

+0

不要忘記Java 5.0是如此古老,它在Oracle收購Sun之前已經是生命的終結了。它還會對OpenJDK進行預約,因此唯一可用的源代碼位於JDK中。 –

1

Java 1.5中是不是開源。引用維基百科:

2006年11月13日,Sun根據GNU通用公共許可證(GPL)的條款發佈了許多Java作爲免費和開源軟件(FOSS)。 2007年5月8日,Sun完成了這一流程,除了Sun不擁有版權的一小部分代碼之外,Sun還使用免費軟件/開放源代碼分發條款提供了所有Java核心代碼。

據我記得有可能獲得用於研究目的的源代碼(我們的大學可以通過與Sun的特別協議訪問源代碼),但我認爲這不可能從Oracle獲取它。

在開源之前,有幾個免費的JVM和核心類的實現。以http://en.wikipedia.org/wiki/Free_Java_implementations爲例。

相關問題