使用Sun专有的Java类是一种不好的做法吗?

2022-09-01 12:19:53

如果使用 Sun 的专有 Java 类,编译器将显示警告。我认为使用这些类通常是一个坏主意。我在某处读到过这个。但是,除了警告之外,还有什么根本原因可以解释为什么您不应该使用它们?


答案 1

因为它们是内部 API:它们可能会以未记录不受支持的方式进行更改,并且它们绑定到特定的 JRE/JDK(在你的例子中是 Sun),从而限制了程序的可移植性。

尽量避免使用此类API,始终首选公共文档和指定的类。


答案 2

JDK 6 文档包含一个标题为“关于 sun.*的说明”的链接。这是来自Java 1.2文档的文档,因此引用应该被视为好像他们说sun.*com.sun.*

其中最重要的一点是:

Sun 随 Java 2 SDK 标准版中包含的类属于包组 、和 。除了这些包之外,其他所有包都是 Java 平台的标准部分,将来也会得到支持。通常,Java 平台之外的软件包(如 )在操作系统平台(Solaris、Windows、Linux、Macintosh 等)之间可能有所不同,并且可以随时更改 SDK 版本(1.2、1.2.1、1.2.3 等)而不另行通知。包含对包的直接调用的程序不是 100% 纯 Java。java.*javax.*org.*sun.*sun.*sun.*sun.*

每个实现Java平台的公司都将以自己的私人方式做到这一点。SDK 中存在的类是为了支持 Java 平台的 Sun 实现:这些类使 Java 平台类在 Sun Java 2 SDK 的“幕后”工作。这些类通常不会出现在其他供应商的 Java 平台上。如果你的Java程序要求一个类“sun.package.Foo”的名字,它可能会在ClassNotFoundError上失败,并且你将失去在Java中开发的主要优势。sun.*sun.*


推荐