Пакеты Java com и org

Ответы:

113

Согласно Sun , пакеты должны иметь пространство имен, обратное вашему доменному имени, а затем следовать тому, что вы считаете нужным. У большинства компаний или организаций есть доменное имя .comили .org, поэтому большинство пакетов начинаются с com.или org.. Цитата из соглашений Sun Code :

Префикс уникального имени пакета всегда записывается строчными буквами ASCII и должен быть одним из доменных имен верхнего уровня, в настоящее время com, edu, gov, mil, net, org, или одним из двухбуквенных кодов на английском языке. определение стран, как указано в стандарте ISO 3166, 1981.

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

И примеры, которые они приводят, довольно ясно показывают, что вы должны использовать DNS-имя компании:

com.sun.eng

com.apple.quicktime.v2

edu.cmu.cs.bovik.cheese

Вы также увидите edu.и net.пакеты в дикой природе , хотя они менее распространены.

Пол Вагланд
источник
3
Что делать, если компания меняет домены?
Леонардо Рэле 02
4
@LeonardoRaele Обычно в этом случае вы попадаете в мир боли ;-) Если серьезно, есть два варианта: переименовать все классы, которые могут работать, если код все равно внутренний, или оставить его со старым именем, поскольку это, вероятно, будет все равно быть уникальным.
Пол Вагланд 02
2
Какое соглашение об именах лучше всего подходит, если вы не являетесь частью организации или у вас нет веб-сайта? Я уже встречал me.usernameпредложения по этому поводу, но не уверен, лучший это стандарт или единственный.
Аарон Франке
2
@AaronFranke Я видел, как люди используют свое имя пользователя GitHub в качестве домена, поэтому, например: com.guthub.pwagland.xxx, основная цель - получить уникальное имя, чтобы вам не приходилось его менять, и это никогда не будет конфликтовать с именем, которое выбрал кто-то другой.
Пол Вагланд,
1
что, если у вашей компании 2 домена, то есть wordpress.com и wordpress.org
Янак Мина 01
48

Вы также можете видеть имена пакетов как перевернутые имена интернет-доменов (что часто также верно в реальном мире, см., Например, те, org.apache.commonsкоторые коррелируют с http://commons.apache.org ). com(Коммерческие) и org(организация) здесь то на самом деле домен верхнего уровня имена.

Имена пакетов, как правило, предназначены только для идентификации производителя / поставщика кода, с которым вы сталкиваетесь.

BalusC
источник
16
И для обеспечения уникальности имени пакета. Думаю, это довольно умный способ сделать это
Турбьёрн Равн Андерсен
2
Возможно, я ошибаюсь, но com на данный момент кажется ненужным, если все собираются его использовать. Я бы предпочел использовать само название компании. Я предпочитаю систему именования, которая есть у них для других систем упаковки, таких как npm и composer. Они используют username / packageName или что-то подобное. Поэтому я бы назвал свои пакеты в java как username.packagename
OzzyTheGiant
9

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

orgПрефикс пакета в основном используется некоммерческими организациями или открытым исходным кодом, такие как Apache, w3c и т.д.

Гийом
источник
Соглашение об использовании URL-адреса .com компании для внутреннего кода и .org для любого опубликованного кода является хорошей идеей. Вот что я резюмировал из этого ответа.
Деннис
3
Деннис, я не думаю, что это будет хорошая идея. Это означает, что выпуск кода изменит имена пакетов и сломает внутреннее программное обеспечение, использующее исходные имена. Кроме того, возникнет конфликт пространств имен, если example.com и example.org принадлежат разным компаниям и обе хотят выпустить код Java.
proski
3

См. Документацию Oracle для именования пакетов

См. Соглашения об именах для стандартных имен классов / интерфейсов / аннотаций / и т.д.

имя пакета и стандартный синтаксис класса:
<ваш домен в обратном порядке>. <имя проекта>. <controller / dao / service / handlers и т. д.>. <ваш класс>

example1: (здесь домен: - «stackoverflow.com», проект: - «Тест»)
com.stackoverfllow.test.handler.TestHandler

example2: (здесь домен: - "www.google.co.in", проект: - "Мой проект")
in.co.google.myproj.controller.MainController

но для зарезервированных доменов, таких как java. *, javax. *, sun. * и т.д., вы должны получить разрешение от сообщества oracle

Дхармендрасинх Чудасама
источник