sun.* 与 com.sun.* 之间的区别

Difference between sun.* vs com.sun.*

我最近从 Java 8 迁移到 Java 11。 jax.ws

我必须向我的 pom.xml 添加以下外部依赖项,因为它在 Java 11 中不再可用。但是,我遇到了一些论点,即 com.sun.* 包 类 不应使用,应尽可能避免使用。那么是 sun.* 还是 com.sun.*?如果后者也是如此,那么最好的替代品是什么?

还有一件事,我的代码没有直接使用此依赖项,但我的其他依赖项之一引用了它。

    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.2.10</version>
    </dependency>

一些com.sun.* 类 是实际外部API 并且可以使用。关键是查看官方 Javadoc 以查看您要使用的 类 是否列为 API,并且未标记为 @Deprecated 或任何类似的内容。

这是要查看的官方 javadoc 页面: https://docs.oracle.com/en/java/javase/11/docs/api/index.html

一般来说,sun.* API 指的是一些早于反向 DNS 的最古老的 Java API(例如 sun.misc.Unsafe)包命名约定。大多数原始 sun.* API 已被删除,升级为官方 javax.* API,或重命名为更合适的 com.sun.* 域。

如果 API 不是 JDK 内部或标记为 deprecation/removal,那么使用 com.sun.* APIs 本质上没有错。 =19=]