Как javax
содержит расширения, что должен содержать пакет com.sun
?
Что находится внутри пакета com.sun?
Ответ 1
Он содержит Sun Oracle эталонные реализации стандартных API Java (EE). Среди других Mojarra (эталонная реализация JSF Oracle) и Glassfish (эталонная реализация Java EE Oracle) используют этот пакет. Желательно не использовать эти классы непосредственно в вашем коде, так как это сделает ваш код тесно связанным с реализацией. Кодирование по API java(x)
напрямую позволяет вам изменять реализацию без изменения кода (например, MyFaces вместо Mojarra и JBoss AS вместо Glassfish).
Обратите внимание, что пакет com.sun.*
не следует путать с пакетом sun.*
, который является внутренними классами Oracle JRE, которые вы должны абсолютно не импортировать/использовать в вашем коде, так как это сделает ваш код жестким в сочетании с JRE make/version. Не использовать пакет sun.*
вообще позволяет запускать код во всех других реализациях JRE (OpenJDK, GCJ и т.д.).
Ответ 2
Есть много мест, в которых используются пакеты com.sun
(некоторые из них упоминаются в других ответах). В этом ответе конкретно рассматривается использование com.sun
в JavaFX. JavaFX - это библиотека пользовательского интерфейса, которая является частью OpenJDK.
Много реализация JavaFX находится в com.sun
классах. Когда JavaFX был открыт, следующий комментарий был сделан разработчиками JavaFX относительно использования классов com.sun
в JavaFX:
Как всегда, не публичный API (или, вернее, неподдерживаемый API, что означает что-либо, что отсутствует в пространстве имен javafx, например
com.sun.*
), не может зависеть от версии для выпуска. Но для тех из вас, кто интересуется, как все работает, есть некоторые очень важные вещи, зарытые в неподдерживаемые пакеты, и для тех из вас, кто хочет на самом деле взломать OpenJFX, это будет представлять еще больший интерес.
Ответ 3
Пакеты для внутреннего использования, к которым вам не требуется прямой доступ. Их можно изменить или удалить в любой версии Java. Вы можете найти источник для всех пакетов sun. * и com.sun. * В OpenJDK.