Jungleford's Home BlogJava分舵

          Java技術(shù)研究,兼探討歷史話題

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            24 Posts :: 0 Stories :: 53 Comments :: 0 Trackbacks

          jungleford如是說

          J2SE API Documents是我們最常用的參考手冊,但細(xì)心的朋友可能會發(fā)現(xiàn),在“%JAVA_HOME%\jre\lib\rt.jar”中包含比API文檔更多的類,那么其它的類為什么沒有在幫助文檔中出現(xiàn)呢?在SUN的JDK FAQ中有一篇“Why Developers Should Not Write Programs That Call 'sun' Packages”,該文部分地解答了這個問題,我將原文翻譯如下

          =====================================================================

                 J2SE中的類大致可以劃分為以下的各個包:
                 java.*,javax.*,org.*,sun.*
                 除了“sun”包,其它各個包都是Java平臺的標(biāo)準(zhǔn)實現(xiàn),并且今后也將被繼續(xù)支持。一般說來,“sun”之類的包并不包含在Java平臺的標(biāo)準(zhǔn)中,它與操作系統(tǒng)相關(guān),在不同的操作系統(tǒng)(如Solaris,Windows,Linux,Mac等等)中的實現(xiàn)也各不相同,并且可能隨著J2SE版本不定期變化。因此,直接調(diào)用“sun”包的程序代碼并不是100%的Java實現(xiàn)。也就是說:
          “java.*”包,“javax.*”包,“org.*”包是作為J2SE的API公開接口的一部分,如果程序直接調(diào)用這些包中的API,那么程序是可以運行在所有Java平臺上,而與操作系統(tǒng)無關(guān);但“sun.*”包并不是API公開接口的一部分,調(diào)用“sun”包的程序并不能確保工作在所有Java平臺上,事實上,這樣的程序并不能工作在今后的Java平臺上。
                 正因為如此,“sun.*”包中的類并沒有提供API文檔。平臺無關(guān)性是Java語言最大的優(yōu)勢之一,此外,SUN和Java許可證確保維持了今后API的向上兼容性(以后修改的那些有嚴(yán)重bug的代碼除外)。這種兼容性意味著你寫好的程序編譯成的cl ass文件仍然可以工作在將來的版本當(dāng)中。
          每家實現(xiàn)Java平臺的廠商都可以使用他們自己的方式?!皊un.*”包中的類是SUN 對Java平臺的實現(xiàn)方式,它們工作在Java 2 SDK的下層,這些類未必被其它Java 平臺開發(fā)商支持。比如你的Java程序如果調(diào)用了一個名為“sun.package.Foo”的類,將有可能產(chǎn)生“ClassNotFoundError”的錯誤,同時你也將失去利用Java的一個主要的優(yōu)點。
                 從技術(shù)上講,并不能防止你的程序調(diào)用“sun.*”包中的類。在版本的變遷當(dāng)中,這些類可能會被刪除或轉(zhuǎn)移到其它包路徑下,而且它的接口(包括名稱、標(biāo)簽等)也很有可能發(fā)生變化,(根據(jù)SUN的觀點,我們應(yīng)當(dāng)能夠通過對“sun.*”包的修改來提高Java平臺的性能。)在這種情況下,即便你希望程序僅僅運行在SUN的實現(xiàn)平臺下,你仍將承受新的版本給你的系統(tǒng)帶來破壞的風(fēng)險??傊?,編寫依賴于“sun.*”包的Java程序是不安全的,他們將變得無法移植,無法被很好地支持。

          posted on 2005-04-02 16:57 jungleford 閱讀(313) 評論(0)  編輯  收藏 所屬分類: 咖啡屋 - Java 技術(shù)研究
          主站蜘蛛池模板: 马山县| 阿拉尔市| 沛县| 潢川县| 保亭| 金堂县| 泗阳县| 大渡口区| 壶关县| 灵宝市| 隆昌县| 高碑店市| 沙坪坝区| 新巴尔虎左旗| 天峻县| 股票| 卓尼县| 贡嘎县| 盐亭县| 永兴县| 黑河市| 彩票| 偃师市| 安达市| 临沧市| 会同县| 桦甸市| 迭部县| 肇庆市| 庄河市| 会宁县| 北流市| 吉木乃县| 潜山县| 札达县| 保德县| 连云港市| 桐柏县| 宁津县| 长沙市| 佛坪县|