Paquetes Java com y org

126

¿Cuál es el significado de los paquetes orgy comen Java?

Gabriel
fuente

Respuestas:

113

Según Sun , los paquetes deben tener un espacio de nombres de acuerdo con el inverso de su nombre de dominio, y luego ir seguido de lo que mejor le parezca. La mayoría de las empresas u organizaciones tienen un nombre de dominio .como .org, por lo tanto, la mayoría de los paquetes comienzan con com.o org.. Para citar de los Convenios del Código de Sun :

El prefijo de un nombre de paquete único siempre se escribe en letras ASCII en minúsculas y debe ser uno de los nombres de dominio de nivel superior, actualmente com, edu, gov, mil, net, org o uno de los códigos de dos letras en inglés identificando países como se especifica en la Norma ISO 3166, 1981.

Los componentes posteriores del nombre del paquete varían según las convenciones de nomenclatura internas de una organización. Tales convenciones pueden especificar que ciertos componentes de nombres de directorio sean nombres de división, departamento, proyecto, máquina o inicio de sesión.

Y los ejemplos que dan, dejan en claro que debe utilizar el nombre DNS de la empresa:

com.sun.eng

com.apple.quicktime.v2

edu.cmu.cs.bovik.cheese

También verá edu.y net.paquetes en la naturaleza , aunque son menos comunes.

Paul Wagland
fuente
3
¿Qué pasa si la empresa cambia de dominio?
Leonardo Raele
44
@LeonardoRaele Normalmente, en este caso, entras en un mundo de dolor ;-) Más en serio, hay dos opciones, cambiar el nombre de todas las clases, que pueden funcionar si el código es interno de todos modos, o dejarlo con el nombre anterior, ya que probablemente Todavía sea único de todos modos.
Paul Wagland
2
¿Cuál es la mejor convención de nomenclatura para cuando no eres parte de una organización o no tienes un sitio web? He visto me.usernamesugerencias antes, pero no estoy seguro de si ese es el mejor o el único estándar.
Aaron Franke
2
@AaronFranke He visto a personas usar su nombre de usuario de GitHub como su dominio, por lo que, por ejemplo: com.guthub.pwagland.xxx, el objetivo principal es obtener un nombre único, para que no tenga que cambiarlo, y nunca entrará en conflicto con el nombre que otra persona ha elegido.
Paul Wagland
1
lo que si su compañía tiene 2 dominios es decir wordpress.com y wordpress.org
Janáč Meena
48

También puede ver los nombres de paquetes como nombres de dominio de Internet invertidos (que a menudo también es cierto en el mundo real, consulte, por ejemplo, los org.apache.commonsque se correlacionan con http://commons.apache.org ). El com(comercial) y org(organización) están aquí, en realidad, nombres de dominio de nivel superior .

Los nombres de los paquetes son en general solo para identificar al fabricante / proveedor del código que está enfrentando.

BalusC
fuente
16
Y para garantizar la unicidad del nombre del paquete. Creo que es una forma bastante inteligente de hacerlo
Thorbjørn Ravn Andersen el
2
Puedo estar equivocado, pero com parece innecesario en este punto si todos lo van a usar. Prefiero usar el nombre de la compañía por sí mismo. Prefiero el sistema de nombres que tienen para otros sistemas de empaque como npm y compositor. Usan 'username / packageName' o algo similar. Así que nombraría mis paquetes en java como 'username.packagename'
OzzyTheGiant
9

Por comlo general, las empresas lo utilizan para nombrar los paquetes, comseguido del nombre de la empresa. Por ejemplo, tiene los com.sunpaquetes en la JVM.

El orgprefijo del paquete es utilizado principalmente por organizaciones sin fines de lucro o para código fuente abierto, como apache, w3c, etc.

Guillaume
fuente
La convención de usar una URL .com de comapany para el código interno y .org para cualquier código hecho público es una buena idea. Eso es lo que resumí de esta respuesta.
Dennis
3
Dennis, no creo que sea una buena idea. Significa que liberar el código cambiaría los nombres de los paquetes y rompería el software interno que está usando los nombres originales. Además, habría una colisión en el espacio de nombres si example.com y example.org son propiedad de diferentes compañías y ambos desean lanzar código Java.
proski
3

Consulte el documento de Oracle para la denominación de paquetes

Consulte Convenciones de nomenclatura para la clase / interfaz / anotaciones / etc.

nombre del paquete y sintaxis estándar de la clase:
<su dominio en reversa>. <nombre del proyecto>. <controlador / dao / service / handlers, etc.>. <su clase>

ejemplo1: (aquí dominio: - "stackoverflow.com", proyecto: - "Prueba")
com.stackoverfllow.test.handler.TestHandler

ejemplo2: (aquí dominio: - "www.google.co.in", proyecto: - "Mi proyecto")
in.co.google.myproj.controller.MainController

pero para dominios reservados como java. *, javax. *, sun. *, etc., debe obtener permiso de la comunidad Oracle

Dharmendrasinh Chudasama
fuente