JR 精品文章 - 为什么程序员不应调用“sun”包?
AD: jr (at) javaresearch.org


首页 | 动态 | 文章 | FAQ  | 新闻 | 下载 | 代码 | 工作 | 调查 | 术语 | 站点 | 图书 | 论坛 | 帮助 | 全部  

TOP | 交流 | 软件 | 专栏 | 开源 | 译/著 | 源码 | API  | 推荐 | FTP  | 积分 | 统计 | 搜索 | Blog | 我们  
首页 » 研究文集 » JDK核心API 搜索标题相关文章 搜索标题相关文章    评论此文章 发表评论     开始监控此文章 开始监控   加入收藏夹  加入收藏夹
为什么程序员不应调用“sun”包?
jungleford 翻译   更新:2004-08-31 10:17:58  版本: 1.0   

J2SE API Documents是我们最常用的参考手册,但细心的朋友可能会发现,在“%JAVA_HOME%\jre\lib\rt.jar”中包含比API文档更多的类,那么其它的类为什么没有在帮助文档中出现呢?在SUN的JDK FAQ中有一篇“Why Developers Should Not Write Programs That Call 'sun' Packages”,该文部分地解答了这个问题,我将原文翻译如下

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

    J2SE中的类大致可以划分为以下的各个包:
    java.*,javax.*,org.*,sun.*
    除了“sun”包,其它各个包都是Java平台的标准实现,并且今后也将被继续支持。一般说来,“sun”之类的包并不包含在Java平台的标准中,它与操作系统相关,在不同的操作系统(如Solaris,Windows,Linux,Mac等等)中的实现也各不相同,并且可能随着J2SE版本不定期变化。因此,直接调用“sun”包的程序代码并不是100%的Java实现。也就是说:
“java.*”包,“javax.*”包,“org.*”包是作为J2SE的API公开接口的一部分,如果程序直接调用这些包中的API,那么程序是可以运行在所有Java平台上,而与操作系统无关;但“sun.*”包并不是API公开接口的一部分,调用“sun”包的程序并不能确保工作在所有Java平台上,事实上,这样的程序并不能工作在今后的Java平台上。
    正因为如此,“sun.*”包中的类并没有提供API文档。平台无关性是Java语言最大的优势之一,此外,SUN和Java许可证确保维持了今后API的向上兼容性(以后修改的那些有严重bug的代码除外)。这种兼容性意味着你写好的程序编译成的cl ass文件仍然可以工作在将来的版本当中。
每家实现Java平台的厂商都可以使用他们自己的方式。“sun.*”包中的类是SUN 对Java平台的实现方式,它们工作在Java 2 SDK的下层,这些类未必被其它Java 平台开发商支持。比如你的Java程序如果调用了一个名为“sun.package.Foo”的类,将有可能产生“ClassNotFoundError”的错误,同时你也将失去利用Java的一个主要的优点。
    从技术上讲,并不能防止你的程序调用“sun.*”包中的类。在版本的变迁当中,这些类可能会被删除或转移到其它包路径下,而且它的接口(包括名称、标签等)也很有可能发生变化,(根据SUN的观点,我们应当能够通过对“sun.*”包的修改来提高Java平台的性能。)在这种情况下,即便你希望程序仅仅运行在SUN的实现平台下,你仍将承受新的版本给你的系统带来破坏的风险。总之,编写依赖于“sun.*”包的Java程序是不安全的,他们将变得无法移植,无法被很好地支持。 

版权声明   给作者写信
本篇文章对您是否有帮助?  投票:         投票结果:     59       2
作者其它文章: 作者全部文章
评论人:JCoder 发表时间: Tue Nov 09 23:18:44 CST 2004
这样子 谢谢了
评论人:deadman 发表时间: Wed Feb 23 23:45:20 CST 2005
不错,好东西,不说还真不知道
评论人:jyfalcon 发表时间: Mon Jan 09 10:44:54 CST 2006
谢谢分享!!
评论人:huangyq031127 发表时间: Sat Aug 05 13:43:51 CST 2006
了解了解
评论人:yongbing 发表时间: Sun Dec 03 20:59:36 CST 2006
[:E][good][good][good][cop]
评论人:fan-R 发表时间: Thu Jun 26 20:03:00 CST 2008
嗯,多谢指教

这个文章共有 6 条评论
主题: 有趣的List 上一篇文章
返回文章列表 返回〔JDK核心API〕
下一篇文章 主题: jvm.dll装载过程


文字广告链接
        自主、快速定制基于JAVA的B/S业务系统          重量级企业在线自定义WEB报表平台
        Excel制表、零代码发布、打印、图表结合——快逸报表,免费、稳定、功能强大的java工具
        技术圈: 关于Java、dotNet、PHP、Ruby、奇客、Web2.0等更多资讯博客精选文章

关于 JR  |  版权声明  |  联系我们 

©2002-2006 JR 版权所有 沪ICP备05019622号