最近在學習Class加載的過程,無意中看到ClassLoader中有sun開頭的類,甚是奇怪,隨知孤陋寡聞了,不由感嘆到java果然博大精深,在下拜服。特此記錄一番,以方便同輩人士觀之
java.*
JavaSE的標準庫,是java標準的一部分,是對外承諾的java開發(fā)接口,通常要保持向后兼容,一般不會輕易修改。包括其他廠家(IBMJDK/HPJDK/OpenJDK)在內(nèi),所有jdk的實現(xiàn),在java.*上都是一樣的。javax.*
也是java標準的一部分,但是沒有包含在標準庫中,一般屬于標準庫的擴展。通常屬于某個特定領域,不是一般性的api。
此上兩者都屬于java標準庫,公有的API,遵循java平臺規(guī)范,
com.sun.*
是sun的hotspot虛擬機中java.* 和javax.*的實現(xiàn)類。因為包含在rt中,所以我們也可以調(diào)用。但是因為不是sun對外公開承諾的接口,所以根據(jù)根據(jù)實現(xiàn)的需要隨時增減,因此在不同版本的hotspot中可能是不同的,而且在其他的jdk實現(xiàn)中是沒有的,調(diào)用這些類,可能不會向后兼容,所以一般不推薦使用。org.*
是由企業(yè)或者組織提供的java類庫,大部分不是sun公司提供的,同com.sun.*,不具備向后兼容性,會根據(jù)需要隨時增減。其中比較常用的是w3c提供的對XML、網(wǎng)頁、服務器的類和接口sun.*包:
1、不是API公開接口的一部分,調(diào)用sun包的程序并不能確保工作在所有Java平臺上,不同的操作系統(tǒng)中的實現(xiàn)可能不相同。
2、不同的jdk版本sun包中的類也可能不定期的變化,因此sun.*包中的類沒有提供API文檔及源碼。
不建議使用