网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Java程序员 Sun降低开源Java系统.
.为什么用 “==” 与 “equal”得.
.java网络五子棋的源代码.
.constructor 属性.
.新手必读 Java中流的概念.
.扩展 Spring 的 JMX 支持.
.JBuilder在中文环境中光标问题的.
.Struts 的汉字显示问题终结解决方.
.再聚Java One.
.怎样成为优秀的软件模型设计者.
.JBOSS-QL中的like、orderby的实现.
.UTC 方法.
.[JAVA100例]071、使用JDOM操作XML.
.教你一简单办法用Java获得IP地址.
.非java.util.zip,使用ant.jar制.
.利用JMF进行多媒体编程.
.JAVA程序员必读:基础篇(9).
.rmi和corba.
.用本地引用提高EJB访问效率.
.好东西大家分享:java&xml的学.

为什么程序员不应调用“sun”包

发表日期:2008-1-5



  为什么程序员不应调用“sun”包

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程序是不安全的,他们将变得无法移植,无法被很好地支持。
上一篇:网页的元素含义 人气:635
下一篇:为什么Java中继承是有害的 人气:560
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐