Разница между солнцем. * Против com.sun. * - PullRequest
4 голосов
/ 22 апреля 2019

Я недавно мигрировал с 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>

1 Ответ

4 голосов
/ 22 апреля 2019

Некоторые com.sun.* классы являются фактическим внешним API и могут использоваться.Ключ в том, чтобы проверить официальный Javadoc, чтобы увидеть, перечислены ли классы, которые вы хотите использовать, как API, и не помечены @Deprecated или чем-то в этом роде.

Вот официальная страница javadoc, которую можно проверить по адресу:https://docs.oracle.com/en/java/javase/11/docs/api/index.html

В общем случае API sun.* относится к некоторым из самых старых API Java (например, sun.misc.Unsafe), которые предшествовали соглашению об именовании пакетов обратного DNS.Большинство исходных sun.* API-интерфейсов были удалены, переведены на официальный javax.* API или переименованы в более подходящий com.sun.* домен.

Нет ничего плохого в использовании com.sun.* API,при условии, что API не является внутренним JDK или не помечен для устаревания / удаления.

...