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

如果您使用Sun的专有Java类,编译器会显示警告。 我认为使用这些类通常是一个糟糕的主意。 我在某处读过这篇文章。 但是,除了警告之外,你有什么根本原因不应该使用它们?


因为它们是内部API:它们可能会以无证不受支持的方式进行更改,并且它们绑定到特定的JRE / JDK(您的情况为Sun ),从而限制了程序的可移植性。

尽量避免使用这样的API,总是喜欢公开记录和指定的类。


JDK 6文档包含标题为“关于sun.*包”的链接。 这是来自Java 1.2文档的文档,因此对sun.*引用应该像对待com.sun.*一样对待com.sun.*

其中最重要的一点是:

Sun在Java 2 SDK标准版中包含的类属于包java.*javax.*org.*sun.* 。 除sun.*所有软件包都是Java平台的标准组成部分,将来会受到支持。 通常,在Java平台之外的软件包(例如sun.*可能在OS平台(Solaris,Windows,Linux,Macintosh等)上有所不同,并可随时更改,恕不另行通知,SDK版本(1.2, 1.2.1,1.2.3等)。 包含直接调用sun.*包的程序不是100%纯Java。

每个实现Java平台的公司都会以自己的私人方式进行操作。 sun.*的类包含在SDK中以支持Java平台的Sun实现: sun.*类是Java平台类为Sun Java 2 SDK“覆盖”而工作的原因。 这些类通常不会出现在其他供应商的Java平台上。 如果您的Java程序按名称要求类“sun.package.Foo”,则它可能因ClassNotFoundError失败,并且您将失去使用Java进行开发的主要优势。


尝试使用非Sun JVM运行代码并查看会发生什么...

(您的代码将失败并出现ClassNotFound异常)

链接地址: http://www.djcxy.com/p/26991.html

上一篇: It is a bad practice to use Sun's proprietary Java classes?

下一篇: iCloud and GEOResourceManifestServerRemoteProxy: Lost connection to geod warning