Was ist der Sinn von Javas Paketnamenskonvention?

14

Ich verstehe nicht, warum Java die Umkehrung eines (wahrscheinlich hypothetischen) Domänennamens als den Namen eines Pakets verwendet, während meistens keine Verbindung zwischen dem Domänennamen, den einige Leute verwenden, und den Produkten besteht, die sie haben. Viele Entwickler haben noch nicht einmal eine Domain.

Was sind die Gründe für diese Namenskonvention, falls vorhanden?

Louis Rhys
quelle
Auch ohne eine Domain ist es in Java-Land üblich, so zu tun, als würden Sie Pakete benennen. ZB in Ihrem Fall würden Sie verwenden, com.louisrhys.xxx.yyyob Sie besitzen oder nichtlouisrhys.com
Wayne Molina

Antworten:

14

Globale Einzigartigkeit. Wenn sich alle oder zumindest seriöse Entwickler, die ihren Code über interne Projekte hinaus verbreiten, an diese Konvention halten, kommt es niemals zu Namenskonflikten, wenn Sie Ihrem Projekt eine andere Drittanbieter-Bibliothek hinzufügen. Denken Sie daran, dass Java ursprünglich als Lösung für die Codebereitstellung überall und jederzeit verbreitet wurde (über Applets und das Remote-Laden von Klassen über das Internet).

Kilian Foth
quelle
3
In Java 1.4 verwendete Sun Open Source-Apache-XML-Tools, ohne den Namensraum zu ändern. Es war ziemlich "interessant" zu versuchen, eine neuere Version in Ihren eigenen Anwendungen zu haben.
3
Java was initially propagated as a solution for code deployment anywhere, anytime Im Gegensatz zu dem, was Java jetzt ist? Ich kenne Sie nicht, aber ich verwende Java WebStart dennoch einigermaßen erfolgreich, um clientseitigen Code auf Tausenden von PCs in einem internen Netzwerk bereitzustellen. Dies macht "Release Early, Release Often" für alle weit weniger schmerzhaft.
maple_shaft
1
Nicht unbedingt wahr. Sie werden irgendwann einen Domainnamen verlieren. ob durch Sterben oder einfach durch das Vergessen, es zu erneuern. Jemand anderes könnte es kaufen und, ohne es zu merken, ein Java-Paket herausbringen, das mit Ihrem in Konflikt steht. Es besteht auch die Möglichkeit, dass jemand die Domain vor Ihnen besaß und den Code herausgab, mit dem Ihr Code in Konflikt steht.
Kevin
@maple_shaft Dies war für die meisten Benutzer seit dem Niedergang der Java-Applets nicht mehr der Fall. Eher ist es nur eine andere Plattform für Anwendungen (wie zB Qt oder XUL oder Electron).
user253751
12

Wie Wikipedia zu diesem Thema sagt,

"Die Java-Sprachspezifikation legt Paketnamenskonventionen fest, um die Möglichkeit zu vermeiden, dass zwei veröffentlichte Pakete denselben Namen haben."

LaLeX
quelle
Gibt die Spezifikation an, welche Konvention zu verwenden ist, wenn der Entwickler keinen eigenen Domainnamen hat?
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner: Nein, tut es nicht .
Mike Seymour
@MikeSeymour: Also ... können wir sie benennen, wie wir wollen? Woohoo! :)
FrustratedWithFormsDesigner
1
@FrustratedWithFormsDesigner Sie können sie auf jeden Fall benennen, wie Sie möchten. Wenn Sie möchten, dass andere Benutzer Ihre Software verwenden, sollten Sie die Spezifikation befolgen und auf einen logischen und wahrscheinlich eindeutigen Namespace schließen, wenn Sie keine tatsächliche Domain haben.
Jeremy