Jaki jest sens konwencji nazewnictwa pakietów Java?

14

Nie rozumiem, dlaczego Java używa odwrotności (prawdopodobnie hipotetycznej) nazwy domeny jako nazwy pakietu, podczas gdy przeważnie nie ma związku między nazwą domeny, której używają niektóre osoby, a posiadanymi przez nich produktami. Wielu programistów nie ma nawet żadnej domeny.

Jakie są przyczyny tej konwencji nazewnictwa, jeśli taka istnieje?

Louis Rhys
źródło
Nawet bez domeny powszechną praktyką w Java-land jest udawanie, że robisz to dla nazewnictwa pakietów. Np. W twoim przypadku użyłbyś com.louisrhys.xxx.yyytego, czy jesteś właścicielemlouisrhys.com
Wayne Molina

Odpowiedzi:

14

Globalna wyjątkowość. Jeśli wszyscy, a przynajmniej poważni programiści, którzy rozpowszechniają swój kod poza projektami wewnętrznymi, przestrzegają tej konwencji, nigdy nie zdarzy się, aby doszło do konfliktów nazw, gdy dodasz do projektu inną bibliotekę innej firmy. Należy pamiętać, że Java była początkowo propagowana jako rozwiązanie do wdrażania kodu w dowolnym miejscu i czasie (poprzez aplety i zdalne ładowanie klas przez Internet).

Kilian Foth
źródło
3
W Javie 1.4 Sun używał otwartych narzędzi Apache XML bez zmiany przestrzeni nazw. Sprawiło, że próba posiadania nowszej wersji we własnych aplikacjach była raczej „interesująca”.
3
Java was initially propagated as a solution for code deployment anywhere, anytime W przeciwieństwie do tego, czym jest teraz Java? Nie wiem o tobie, ale nadal z powodzeniem używam Java WebStart do wdrażania kodu po stronie klienta na tysiącach komputerów w sieci wewnętrznej. To sprawia, że ​​„Early Release, Release Release” jest o wiele mniej bolesne dla wszystkich.
wałek klonowy
1
Niekoniecznie prawda. W końcu stracisz nazwę domeny; czy umierając, czy po prostu zapominając o jego odnowie. Ktoś inny mógłby go kupić i, nie zdając sobie z tego sprawy, wydał pakiet Java, który jest w konflikcie z twoim. Istnieje również możliwość, że ktoś był właścicielem domeny przed tobą i opublikował kod, z którym jest on w konflikcie.
Kevin
@maple_shaft Nie było tak u większości użytkowników od czasu upadku apletów Java. Raczej jest to po prostu kolejna platforma dla aplikacji (np. Qt lub XUL lub Electron).
user253751,
12

Jak mówi Wikipedia na ten temat,

„Specyfikacja języka Java ustanawia konwencje nazewnictwa pakietów, aby uniknąć możliwości opublikowania dwóch opublikowanych pakietów o tej samej nazwie”.

LaLeX
źródło
Czy specyfikacja szczegółowo określa, jakiej konwencji należy użyć, jeśli programista nie ma własnej nazwy domeny?
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner: Nie, nie ma .
Mike Seymour
@MikeSeymour: Więc ... możemy je nazwać, jakkolwiek chcemy w takim przypadku? Łał! :)
FrustratedWithFormsDesigner
1
@FrustratedWithFormsDesigner Możesz nazywać je w dowolny sposób. Jeśli chcesz, aby inne osoby korzystały z twojego oprogramowania, powinieneś postępować zgodnie ze specyfikacją i wnioskować logiczną i prawdopodobnie unikalną przestrzeń nazw, jeśli nie masz rzeczywistej domeny.
Jeremy