Qual é o objetivo da convenção de nomenclatura de pacotes do Java?

14

Eu não entendo por que o Java usa o inverso de um nome de domínio (provavelmente hipotético) como o nome de um pacote, enquanto na maioria das vezes não há conexão entre o nome de domínio que algumas pessoas usam e os produtos que possuem. Muitos desenvolvedores nem sequer têm domínio.

Quais são os motivos desta convenção de nomenclatura, se houver?

Louis Rhys
fonte
Mesmo sem um domínio, é prática comum no Java-land fingir que você faz para nomear pacotes. Por exemplo, no seu caso, você usaria com.louisrhys.xxx.yyyse é ou não seu proprietáriolouisrhys.com
Wayne Molina

Respostas:

14

Exclusividade global. Se todos, ou pelo menos desenvolvedores sérios que distribuem seu código além de projetos internos, seguirem essa convenção, nunca acontecerá que você tenha conflitos de nome ao adicionar outra biblioteca de terceiros ao seu projeto. Lembre-se de que o Java foi propagado inicialmente como uma solução para implantação de código em qualquer lugar, a qualquer hora (por meio de applets e carregamento de classe remoto pela Internet).

Kilian Foth
fonte
3
No Java 1.4, a Sun usou ferramentas XML de código aberto Apache sem alterar o espaço para nome. Tornou bastante "interessante" tentar ter uma versão mais recente em seus próprios aplicativos.
3
Java was initially propagated as a solution for code deployment anywhere, anytime Ao contrário do que Java é agora? Não conheço você, mas ainda assim utilizo com sucesso o Java WebStart para implantar código do lado do cliente em milhares de PCs em uma rede interna. Isso torna "Liberar mais cedo, liberar frequentemente" muito menos doloroso para todos.
maple_shaft
1
Não é necessariamente verdade. Você acabará por perder um nome de domínio; seja morrendo ou apenas esquecendo de renová-lo. Alguém poderia comprá-lo e, sem perceber, lançar um pacote Java que conflita com o seu. E também há a possibilidade de alguém possuir o domínio antes de você e colocar um código com o qual seu código entra em conflito.
Kevin
@maple_shaft Não é assim para a maioria dos usuários desde o declínio dos applets Java. Pelo contrário, é apenas outra plataforma para aplicativos (como, por exemplo, Qt ou XUL ou Electron).
user253751
12

Como a Wikipedia diz sobre o assunto,

"O Java Language Specification estabelece convenções de nomenclatura de pacotes para evitar a possibilidade de dois pacotes publicados com o mesmo nome."

LaLeX
fonte
A especificação detalha qual convenção usar se o desenvolvedor não tiver seu próprio nome de domínio?
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner: Não, não .
Mike Seymour
@MikeSeymour: Então ... podemos nomeá-los como quisermos nesse caso? Woohoo! :)
FrustratedWithFormsDesigner
1
@FrustratedWithFormsDesigner Você pode nomeá-los como quiser, em qualquer caso. Se você quiser que outras pessoas usem seu software, siga as especificações e inferir um espaço para nome lógico e provavelmente único, se você não tiver um domínio real.
31411 Jeremy