¿Cuál es la convención para los nombres de paquetes java sin una asociación de dominio?

No puedo encontrar una Q / A en SO que responda a mi pregunta exacta , así que creo que la publicaré y veré qué viene.

En lo que respecta a la convención de nomenclatura para los paquetes de Java, entiendo que se supone que es el nombre de dominio inverso: com.whatever.stuff y obtengo las reglas sobre casos mixtos, guiones, palabras clave, etc.

También he leído la sección 7.7 (Nombres de paquetes únicos) de la Especificación del lenguaje Java. Por lo que puedo decir, las reglas de Java son usar el dominio inverso para asegurar la singularidad … y si no tienes uno, ve a obtener uno:

You form a unique package name by first having (or belonging to an organization that has) an Internet domainname, such as sun.com. – Sección 7.7

Entonces, si no estoy interesado en desembolsar el dinero para un nombre de dominio, no pertenezco a una compañía cuyo nombre pueda usar, ¿hay alguna parte de la convención de nombres que no esté y que deba seguir? ? Estoy pensando que solo puedo usar el nombre que se me ocurra en este momento, pero me preguntaba si me estaba perdiendo algo.

Nota: Me gustaría liberar mi paquete para que lo utilicen otros desarrolladores, por lo que no quise hacer simplemente algo que funcionó en mi sistema, sino algo más estándar, si es posible.

Agregué la etiqueta de Android porque los paquetes java que voy a escribir se van a utilizar en una aplicación de Android, no estaba seguro de si había opiniones diferentes de los desarrolladores de Android.

Si vas a distribuir muchas cosas, realmente te sugiero obtener un nombre de dominio. Sin embargo, otra alternativa sería utilizar su correo electrónico: por ejemplo, bob@gmail.com se convertiría en com.gmail.bob . Esto es menos común que usar nombres de dominio, pero todavía lo hace algunos y aún garantiza la exclusividad.

Una convención es usar el nombre de dominio del proveedor de alojamiento, por ejemplo

 com.github.myrepositoryname net.sf.sourceforge.myproject com.googlecode.myproject 

Beneficios:

  • el espacio de nombres de su paquete será único, ya que el proveedor de alojamiento no tendrá dos proyectos del mismo nombre
  • es tan caro como los costos del anfitrión, muchos de los cuales son gratuitos
  • puede ser una manera fácil de cumplir los requisitos de Sonatype si quiere llevar su proyecto a Maven Central

Inconvenientes:

  • Si decide cambiar de proveedor, tiene estructuras de paquetes obsoletas o introduce cambios incompatibles con versiones anteriores para mantener la fuente en línea con su nuevo proveedor.

Los nombres de dominio se pueden tener de forma gratuita. Por ejemplo, dyn.com ofrece nombres de dominio gratuitos con el formato ‘whatever.dyndns.org’ en http://free.domain.name/

Si eres el único progtwigdor, puedes usar tu nombre. Mi nombre es Jannis Froese, entonces usaría

jannisfroese.projectname.stuff

o si quieres quedarte con nombres de dominio ‘válidos’

localhost.jannisfroese.projectname.stuff

(localhost es un dominio de nivel superior reservado)

Por supuesto, esto solo funciona si su nombre es suficientemente único, por lo que una colisión es poco probable

En un entorno profesional, la convención es usar dominio inverso. En un entorno que está más asociado a usted, puede usar org.projectname.packagename.* .

Es una convención, no una regla dura y rápida. Eres libre de usar cualquier estilo de nombre de dominio que te guste.