Java-Pakete com und org

126

Was bedeuten die Pakete orgund comin Java?

Gabriel
quelle

Antworten:

113

Laut Sun sollten Pakete entsprechend der Umkehrung Ihres Domainnamens benannt werden, gefolgt von dem, was Sie für richtig halten. Die meisten Unternehmen oder Organisationen haben einen .comoder einen .orgDomainnamen, und daher beginnen die meisten Pakete mit com.oder org.. Um aus den Sun Code-Konventionen zu zitieren :

Das Präfix eines eindeutigen Paketnamens wird immer in ASCII-Kleinbuchstaben geschrieben und sollte einer der Domänennamen der obersten Ebene sein, derzeit com, edu, gov, mil, net, org oder einer der englischen Zwei-Buchstaben-Codes Identifizierung von Ländern gemäß ISO-Standard 3166, 1981.

Nachfolgende Komponenten des Paketnamens variieren gemäß den internen Namenskonventionen einer Organisation. Solche Konventionen können festlegen, dass bestimmte Verzeichnisnamenskomponenten Abteilungs-, Abteilungs-, Projekt-, Maschinen- oder Anmeldenamen sind.

Und die Beispiele, die sie geben, machen ziemlich deutlich, dass Sie den DNS-Namen des Unternehmens verwenden sollen:

com.sun.eng

com.apple.quicktime.v2

edu.cmu.cs.bovik.cheese

Sie werden auch in freier Wildbahn sehen edu.und net.verpacken , obwohl sie weniger verbreitet sind.

Paul Wagland
quelle
3
Was ist, wenn das Unternehmen die Domain wechselt?
Leonardo Raele
4
@LeonardoRaele Normalerweise betritt man in diesem Fall eine Welt voller Schmerzen ;-) Im Ernst, es gibt zwei Möglichkeiten, alle Klassen umzubenennen, die funktionieren können, wenn der Code trotzdem intern ist, oder ihn unter dem alten Namen zu belassen, da dies wahrscheinlich der Fall sein wird trotzdem einzigartig sein.
Paul Wagland
2
Was ist die beste Namenskonvention, wenn Sie nicht Teil einer Organisation sind oder keine Website haben? Ich habe schon me.usernameVorschläge gesehen , bin mir aber nicht sicher, ob dies der beste oder der einzige Standard ist.
Aaron Franke
2
@AaronFranke Ich habe gesehen, dass Leute ihren GitHub-Benutzernamen als Domain verwenden. Beispiel: com.guthub.pwagland.xxx Der Hauptzweck besteht darin, einen eindeutigen Namen zu erhalten, damit Sie ihn nicht ändern müssen wird niemals mit dem Namen in Konflikt geraten, den jemand anderes gewählt hat.
Paul Wagland
1
Was ist, wenn Ihr Unternehmen 2 Domains hat, dh wordpress.com und wordpress.org
Janac Meena
48

Sie können Paketnamen auch als umgekehrte Internet-Domain-Namen anzeigen (was häufig auch in der realen Welt der Fall ist, siehe beispielsweise org.apache.commonsdie mit http://commons.apache.org korrelierten ). Die com(kommerziellen) und org(Organisation) sind hier dann eigentlich Top Level Domain Namen.

Paketnamen dienen im Allgemeinen nur dazu, den Hersteller / Anbieter des Codes zu identifizieren, mit dem Sie konfrontiert sind.

BalusC
quelle
16
Und um die Eindeutigkeit des Paketnamens sicherzustellen. Ich denke, es ist eine ziemlich kluge Art, es zu tun
Thorbjørn Ravn Andersen
2
Ich kann mich irren, aber com klingt an dieser Stelle unnötig, wenn jeder es benutzen wird. Ich würde lieber nur den Firmennamen alleine verwenden. Ich bevorzuge das Benennungssystem, das sie für andere Verpackungssysteme wie npm und composer haben. Sie verwenden 'Benutzername / Paketname' oder ähnliches. Also würde ich meine Pakete in Java als 'username.packagename'
benennen
9

Wird normalerweise comvon Unternehmen bei der Benennung der Pakete verwendet, comgefolgt vom Firmennamen. Zum Beispiel haben Sie die com.sunPakete in der JVM.

Das orgPaketpräfix wird hauptsächlich von gemeinnützigen Organisationen oder für Open Source-Code wie Apache, W3C usw. verwendet.

Guillaume
quelle
Die Konvention, die .com-URL eines Unternehmens für internen Code und .org für jeden veröffentlichten Code zu verwenden, ist eine gute Idee. Das habe ich aus dieser Antwort zusammengefasst.
Dennis
3
Dennis, ich denke nicht, dass es eine gute Idee wäre. Dies bedeutet, dass das Freigeben des Codes die Paketnamen ändern und die interne Software beschädigen würde, die die ursprünglichen Namen verwendet. Außerdem würde es zu einer Namespace-Kollision kommen, wenn example.com und example.org verschiedenen Unternehmen gehören und beide Java-Code veröffentlichen möchten.
Proski
3

Informationen zur Paketbenennung finden Sie im Oracle-Dokument

Siehe Namenskonventionen für die Standardbenennung von Klassen / Schnittstellen / Anmerkungen / usw.

Paketname und Klassenstandardsyntax:
<Ihre Domain in umgekehrter Reihenfolge>. <Projektname>. <controller / dao / service / handlers etc>. <Ihre Klasse>

Beispiel 1: (hier Domäne: - "stackoverflow.com", Projekt: - "Test")
com.stackoverfllow.test.handler.TestHandler

Beispiel 2: (hier Domain: - "www.google.co.in", Projekt: - "My Proj")
in.co.google.myproj.controller.MainController

Für reservierte Domains wie Java. *, Javax. *, Sun. * usw. sollten Sie jedoch die Erlaubnis der Orakel-Community einholen

Dharmendrasinh Chudasama
quelle