¿Cuál es el punto de la convención de nomenclatura de paquetes de Java?

14

No entiendo por qué Java usa el reverso de un nombre de dominio (probablemente hipotético) como el nombre de un paquete, mientras que en su mayoría no hay conexión entre el nombre de dominio que usan algunas personas y los productos que tienen. Muchos desarrolladores ni siquiera tienen ningún dominio.

¿Cuáles son las razones de esta convención de nomenclatura, si hay alguna?

Louis Rhys
fuente
Incluso sin un dominio, es una práctica común en Java-land fingir que lo haces para nombrar paquetes. Por ejemplo, en su caso, usaría com.louisrhys.xxx.yyyindependientemente de si es suyo o nolouisrhys.com
Wayne Molina

Respuestas:

14

Singularidad global. Si todos, o al menos los desarrolladores serios que distribuyen su código más allá de los proyectos internos, se adhieren a esa convención, nunca sucederá que haya conflictos de nombres cuando agregue otra biblioteca de terceros a su proyecto. Tenga en cuenta que Java se propagó inicialmente como una solución para la implementación de código en cualquier lugar, en cualquier momento (a través de applets y carga de clases remota a través de Internet).

Kilian Foth
fuente
3
En Java 1.4, Sun utilizaba herramientas de código abierto Apache XML sin cambiar el espacio de nombres. Lo hizo bastante "interesante" intentar tener una versión más nueva en sus propias aplicaciones.
3
Java was initially propagated as a solution for code deployment anywhere, anytime ¿A diferencia de lo que Java es ahora? No sé sobre usted, pero todavía uso Java WebStart con éxito para implementar el código del lado del cliente en miles de PC en una red interna. Esto hace que "Liberar temprano, liberar a menudo" sea mucho menos doloroso para todos.
maple_shaft
1
No necesariamente cierto. Eventualmente perderá un nombre de dominio; ya sea muriendo o simplemente olvidando renovarlo. Alguien más podría comprarlo y, sin darse cuenta, lanzar un paquete Java que entre en conflicto con el suyo. Y también existe la posibilidad de que alguien sea dueño del dominio antes que usted y publique el código con el que su código entra en conflicto.
Kevin
@maple_shaft No ha sido así para la mayoría de los usuarios desde el declive de los applets de Java. Más bien es solo otra plataforma para aplicaciones (como, por ejemplo, Qt o XUL o Electron).
user253751
12

Como dice Wikipedia sobre el tema,

"La especificación del lenguaje Java establece convenciones de nomenclatura de paquetes para evitar la posibilidad de que dos paquetes publicados tengan el mismo nombre".

LaLeX
fuente
¿La especificación detalla qué convención usar si el desarrollador no tiene su propio nombre de dominio?
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner: No, no lo hace .
Mike Seymour
@ MikeSeymour: Entonces ... ¿podemos nombrarlos como queramos en ese caso? Woohoo! :)
FrustratedWithFormsDesigner
1
@FrustratedWithFormsDesigner Puede nombrarlos como quiera en cualquier caso. Si desea que otras personas usen su software, debe seguir la especificación e inferir un espacio de nombres lógico y probablemente único si no tiene un dominio real.
Jeremy