2010-01-23 18 views

risposta

42

È inoltre possibile vedere i nomi dei pacchetti come nomi di domini Internet invertiti (che è spesso vero anche nel mondo reale, vedere ad esempio lo org.apache.commons correlato a http://commons.apache.org). Il com (commercial) e org (organization) sono qui quindi effettivamente nomi Top Level Domain.

I nomi dei pacchetti sono in genere solo per identificare il produttore/fornitore del codice che si sta affrontando.

+15

E per garantire il pacchetto nome unicità. Penso che sia un modo abbastanza intelligente per farlo –

+0

I può essere sbagliato, ma com suoni non necessari a questo punto se tutti sta per usarlo. Preferirei semplicemente usare il nome dell'azienda da solo. Preferisco il sistema di denominazione che hanno per altri sistemi di packaging come npm e compositore. Usano 'username/packageName' o qualcosa di simile. Quindi mi sento di chiamare i miei pacchetti in Java come 'username.packagename' – OzzyTheGiant

85

In base a Sun, i pacchetti devono essere assegnati a un nome in base all'inverso del nome di dominio e quindi seguiti da qualsiasi cosa riteniate opportuno. La maggior parte delle aziende o organizzazioni hanno un dominio .com o .org e quindi la maggior parte dei pacchetti inizia con com. o org.. Per citare dal Sun Code Conventions:

Il prefisso di un nome di un pacchetto unico è sempre scritto in lettere ASCII all-minuscole e deve essere uno dei nomi di dominio di primo livello, attualmente com, edu, gov, mil, al netto , org o uno dei codici a due lettere inglesi che identificano i paesi come specificato nella norma ISO 3166, 1981.

I componenti successivi del nome del pacchetto variano in base alle convenzioni di denominazione interne di un'organizzazione. Tali convenzioni potrebbero specificare che determinati componenti del nome della directory siano nomi di divisione, reparto, progetto, macchina o login.

E gli esempi che danno, rendono abbastanza chiaro che sono destinati a utilizzare il nome DNS aziende:

com.sun.eng

com.apple.quicktime.v2

edu.cmu.cs.bovik.cheese

Si vedrà anche edu. e net. pacchetti fuori in the wild anche se sono meno comuni.

+0

E se la società cambia domini? –

+3

@LeonardoRaele Tipicamente in questo caso, allora si entra in un mondo di dolore ;-) Più seriamente, ci sono due opzioni, rinominare tutte le classi, che possono funzionare se il codice è interno in ogni caso, o lasciare usando il vecchio nome, dal momento che la volontà probabilmente sarà comunque unico. –

+1

Qual è la migliore convenzione di denominazione per quando non fai parte di un'organizzazione o non hai un sito web? Ho già visto "me.username" suggerito in precedenza, ma non sono sicuro che sia il migliore o l'unico standard. –

7

Solitamente com viene utilizzato dalle aziende quando si assegnano i nomi ai pacchetti, com seguito dal nome dell'azienda. Ad esempio, hai i pacchetti com.sun nella JVM.

Il prefisso org pacchetto è in gran parte utilizzato da organizzazioni senza scopo di lucro o per codice open source, come Apache, w3c, ecc

+0

La convenzione di usare URL .com di un comapany per codice interno e .org per qualsiasi pubblico codice composto è una buona idea. Questo è quello che ho riassunto da questa risposta. – Dennis

+2

Dennis, non penso sarebbe una buona idea. Significa che il rilascio del codice cambierebbe i nomi dei pacchetti e interromperà il software interno che utilizza i nomi originali. Inoltre, ci sarebbe una collisione di namespace se example.com e example.org fossero di proprietà di società diverse e entrambi volessero rilasciare il codice Java. – proski

1

Vedere Oracle doc per denominazione dei pacchetti

Vedere Naming Conventions per la classe/interfaccia/annotazioni/etc standard di denominazione

nome del pacchetto e la sintassi standard di classe:
< il dominio in re verse>. < nome del progetto>. < controller/dao/servizio/gestore ecc.>.< la classe>

example1: (qui dominio: - "stackoverflow.com", progetto: - "Test")
com.stackoverfllow.test.handler.TestHandler

example2: (qui dominio: - "www.google.co.in", progetto: - "Il mio Proj")
in.co.google.myproj.controller.MainController

ma per domini riservati come Java. *, Javax. *, Il sole. *, Ecc Si dovrebbe ottenere il permesso da Oracle comunità