В чем смысл соглашения Java об именовании пакетов?


14

Я не понимаю, почему Java использует обратное (возможно, гипотетическое) доменное имя в качестве имени пакета, хотя в основном нет связи между доменным именем, которое используют некоторые люди, и продуктами, которые они имеют. У многих разработчиков даже нет домена.

Каковы причины этого соглашения об именах, если таковые имеются?


Даже без домена в Java-земле обычно делают вид, что вы делаете для именования пакетов. Например, в вашем случае вы бы использовали, com.louisrhys.xxx.yyyнезависимо от того, являетесь ли вы владельцемlouisrhys.com
— Уэйн Молина

Ответы:


14

Глобальная уникальность. Если все или, по крайней мере, серьезные разработчики, распространяющие свой код за пределами собственных проектов, придерживаются этого соглашения, никогда не случится столкновение имен при добавлении в проект другой сторонней библиотеки. Имейте в виду, что Java изначально распространялась как решение для развертывания кода в любом месте и в любое время (с помощью апплетов и удаленной загрузки классов через Интернет).


3
В Java 1.4 Sun использовала инструменты Apache XML с открытым исходным кодом без изменения пространства имен. Сделано довольно «интересно», чтобы попытаться иметь более новую версию в ваших собственных приложениях.

3
Java was initially propagated as a solution for code deployment anywhere, anytime В отличие от того, что Java сейчас? Я не знаю о вас, но я все еще несколько успешно использую Java WebStart для развертывания кода на стороне клиента на тысячах компьютеров во внутренней сети. Это делает "Release Early, Release Часто" намного менее болезненным для всех.
— maple_shaft

1
Не обязательно правда. В конечном итоге вы потеряете доменное имя; будь то смерть или просто забыть продлить его. Кто-то другой мог бы купить его и, даже не подозревая, выпустить пакет Java, который конфликтует с вашим. И есть также вероятность того, что кто-то владел доменом раньше вас и выпустил код, с которым конфликтует ваш код.
— Кевин

@maple_shaft У большинства пользователей такого не было со времен упадка Java-апплетов. Скорее, это просто еще одна платформа для приложений (например, Qt, XUL или Electron).
— user253751

12

Как говорит Википедия на эту тему,

«Спецификация языка Java устанавливает соглашения об именах пакетов, чтобы избежать возможности двух опубликованных пакетов с одинаковыми именами».


В спецификации подробно указано, какое соглашение использовать, если у разработчика нет собственного доменного имени?
— FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner: Нет, это не так .
— Майк Сеймур

@MikeSeymour: Итак ... мы можем назвать их так, как хотим в этом случае? Woohoo! :)
— FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner Вы можете назвать их так, как хотите в любом случае. Если вы хотите, чтобы другие люди использовали ваше программное обеспечение, вы должны следовать спецификации и вывести логическое и, вероятно, уникальное пространство имен, если у вас нет реального домена.
— Джереми

2

Я нашел два опубликованных Oracle документа, в которых обсуждается наименование пакетов. В разделе « Учебники по Java» есть страница « Наименование пакета» и раздел «Пакеты» в спецификации языка Java .

Основная цель этого соглашения - попытаться минимизировать конфликты между пакетами, опубликованными различными организациями.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.