Соглашение об именовании пакетов Sun для Sun: sun vs. com.sun - PullRequest
9 голосов
/ 26 августа 2009

В JRE к внутренним пакетам Sun добавляются 2 домена верхнего уровня (sun и com). Например,

com.sun.security.jgss
sun.security.jgss

Мне кажется довольно случайным, какой префикс они выбирают. Мне любопытно, какие правила использует Sun для этого.

Ответы [ 3 ]

10 голосов
/ 26 августа 2009

Не ответ на вопрос, но учтите, что вы не должны использовать пакеты sun или com.sun непосредственно в своих программах.

См. Почему разработчики не должны писать программы, которые называют пакетами 'sun'

Эти пакеты не являются частью общедоступного API стандартной библиотеки Java, и их использование может сделать вашу программу несовместимой с будущими версиями Java или реализациями Java, отличными от реализации Sun (и есть несколько реализаций других поставщиков, включая Apple, IBM и HP).

7 голосов
/ 26 августа 2009

Соглашение "com.sun" является более предпочтительным форматом, поскольку оно следует "соглашениям об именах", которые были установлены для именования пакетов Java.

http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html

Вы должны использовать URL-адрес своей уникальной компании или личного веб-сайта в качестве первых нескольких слов в пакете, чтобы гарантировать уникальность в пространстве имен. Те, которые начинаются с "солнца", вероятно, не предназначались для того, чтобы подвергаться воздействию внешнего мира.

1 голос
/ 26 августа 2009

Если вы посмотрите на документ совместимости для Java 5 , то заметите, что есть и другие причины:

Apache - классы org.apache, которые никогда не поддерживаются API-интерфейсами J2SE, но используются пакетом javax.xml, переместились в 5.0 в ** com.sun. ** org.apache.package.internal, чтобы они не будут конфликтовать с более свежими версиями классов, загруженными разработчиками.
Любые приложения, которые зависят от классов org.apache, являющихся частью выпуска J2SE, должны выполнить одно из следующих действий для работы в 5.0:
* Кодируйте приложение так, чтобы оно использовало только те поддерживаемые интерфейсы, которые являются частью JAXP.
* Загрузите классы org.apache.xalan из Apache.

...