Який сенс угоди про іменування пакунків Java?


14

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

Які причини цієї угоди про іменування, якщо такі є?


Навіть без домену загальноприйнята практика в Java-land робити вигляд, що ви займаєтесь іменуванням пакунків. Наприклад, у вашому випадку ви б використовували, com.louisrhys.xxx.yyyчи є у васlouisrhys.com
Wayne Molina

Відповіді:


14

Глобальна унікальність. Якщо всі, або принаймні серйозні розробники, які розповсюджують свій код поза власними проектами, дотримуються цієї конвенції, ніколи не станеться, що ви отримаєте зіткнення з іменами, додавши до свого проекту ще одну сторонній бібліотеку. Майте на увазі, що Java спочатку розповсюджувалася як рішення для розгортання коду в будь-якому місці та в будь-який час (за допомогою аплетів та віддаленого завантаження класів через Інтернет).


3
У Java 1.4 Sun використовували інструменти XML з відкритим кодом без зміни простору імен. Це зробило досить "цікавим" спробувати мати нову версію у власних додатках.

3
Java was initially propagated as a solution for code deployment anywhere, anytime На відміну від того, що зараз є Java? Я не знаю про вас, але я все ще дещо успішно використовую Java WebStart для розгортання коду клієнта на тисячах ПК у внутрішній мережі. Це робить "Випуск рано, звільнення часто" набагато менш болючим для всіх.
maple_shaft

1
Не обов'язково правда. Ви з часом втратите доменне ім’я; чи вмираючи, чи просто забувши відновити його. Хтось ще міг його придбати і, не розуміючи, викласти пакет Java, який суперечить вашому. І також є можливість, щоб хтось володів доменом перед вами і виставив код, з яким ваш код суперечить.
Кевін

@maple_shaft Для більшості користувачів це не було з часу зниження програми аплетів Java. Скоріше, це просто інша платформа для додатків (наприклад, Qt або XUL або Electron).
користувач253751

12

Як говорить Вікіпедія з цього приводу,

"Специфікація мови Java встановлює умови іменування пакунків, щоб уникнути можливості двох опублікованих пакетів з однаковою назвою."


Чи деталізує специфікація, яку умову використовувати, якщо розробник не має власного доменного імені?
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner: Ні, це не так .
Майк Сеймур

@MikeSeymour: Отже ... ми можемо назвати їх, як би ми захотіли в такому випадку? Woohoo! :)
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner Ви можете назвати їх, як вам завгодно, у будь-якому випадку. Якщо ви хочете, щоб інші користувалися вашим програмним забезпеченням, вам слід дотримуватися специфікації та робити висновок про логічний і, ймовірно, унікальний простір імен, якщо у вас немає фактичного домену.
Джеремі

2

Я знайшов два опубліковані Oracle документи, які обговорюють найменування пакетів. У розділі « Навчальні програми Java» є сторінка « Іменування пакета» та розділ « Пакети» у специфікації мови Java .

Основна мета цієї конвенції - спробувати мінімізувати конфлікти між пакетами, опублікованими різними організаціями.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.