J
SE中的類大致可以劃分為以下的各個包
java
*
javax
*
org
*
sun
*
除了
sun
包
其它各個包都是Java平台的標准實現
並且今後也將被繼續支持
一般說來
sun
之類的包並不包含在Java平台的標准中
它與操作系統相關
在不同的操作系統(如Solaris
Windows
Linux
Mac等等)中的實現也各不相同
並且可能隨著J
SE版本不定期變化
因此
直接調用
sun
包的程序代碼並不是
%的Java實現
也就是說
java
*
包
javax
*
包
org
*
包是作為J
SE的API公開接口的一部分
如果程序直接調用這些包中的API
那麼程序是可以運行在所有Java平台上
而與操作系統無關
但
sun
*
包並不是API公開接口的一部分
調用
sun
包的程序並不能確保工作在所有Java平台上
事實上
這樣的程序並不能工作在今後的Java平台上
正因為如此
sun
*
包中的類並沒有提供API文檔
平台無關性是Java語言最大的優勢之一
此外
SUN和Java許可證確保維持了今後API的向上兼容性(以後修改的那些有嚴重bug的代碼除外)
這種兼容性意味著你寫好的程序編譯成的cl ass文件仍然可以工作在將來的版本當中
每家實現Java平台的廠商都可以使用他們自己的方式
sun
*
包中的類是SUN 對Java平台的實現方式
它們工作在Java
SDK的下層
這些類未必被其它Java 平台開發商支持
比如你的Java程序如果調用了一個名為
sun
package
Foo
的類
將有可能產生
ClassNotFoundError
的錯誤
同時你也將失去利用Java的一個主要的優點
從技術上講
並不能防止你的程序調用
sun
*
包中的類
在版本的變遷當中
這些類可能會被刪除或轉移到其它包路徑下
而且它的接口(包括名稱
標簽等)也很有可能發生變化
(根據SUN的觀點
我們應當能夠通過對
sun
*
包的修改來提高Java平台的性能
)在這種情況下
即便你希望程序僅僅運行在SUN的實現平台下
你仍將承受新的版本給你的系統帶來破壞的風險
總之
編寫依賴於
sun
*
包的Java程序是不安全的
他們將變得無法移植
無法被很好地支持
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26250.html