Pacotes Java com e org

126

Qual é o significado dos pacotes orge comem Java?

Gabriel
fonte

Respostas:

113

De acordo com a Sun , os pacotes devem ser espaçados de acordo com o inverso do seu nome de domínio e seguidos pelo que você achar melhor. A maioria das empresas ou organizações tem um nome de domínio .comou .org, portanto, a maioria dos pacotes começa com com.ou org.. Para citar as Convenções do Código Sun :

O prefixo de um nome de pacote exclusivo é sempre escrito em letras ASCII minúsculas e deve ser um dos nomes de domínio de nível superior, atualmente com, edu, gov, mil, net, org ou um dos códigos de duas letras em inglês identificação de países, conforme especificado na norma ISO 3166, 1981.

Os componentes subsequentes do nome do pacote variam de acordo com as convenções de nomenclatura internas da própria organização. Tais convenções podem especificar que determinados componentes de nome de diretório sejam nomes de divisão, departamento, projeto, máquina ou login.

E os exemplos que eles dão, deixam bem claro que você deve usar o nome DNS da empresa:

com.sun.eng

com.apple.quicktime.v2

edu.cmu.cs.bovik.cheese

Você também verá edu.e net.embrulhará na natureza , embora sejam menos comuns.

Paul Wagland
fonte
3
E se a empresa mudar de domínio?
Leonardo Raele
4
@LeonardoRaele Normalmente, nesse caso, você entra em um mundo de dor ;-) Mais seriamente, existem duas opções: renomear todas as classes, que podem funcionar se o código for interno de qualquer maneira, ou deixá-lo usando o nome antigo, pois provavelmente ainda seja único de qualquer maneira.
Paul Wagland
2
Qual é a melhor convenção de nomenclatura quando você não faz parte de uma organização ou não possui um site? Já vi me.usernamesugestões antes, mas não tenho certeza se esse é o melhor ou o único padrão.
Aaron Franke
2
@AaronFranke Já vi pessoas usarem o nome de usuário do GitHub como domínio, por exemplo: com.guthub.pwagland.xxx, o objetivo principal é obter um nome exclusivo, para que você não precise alterá-lo, e ele nunca entrará em conflito com o nome que outra pessoa escolheu.
Paul Wagland
1
E se a sua empresa tem 2 domínios ie wordpress.com e wordpress.org
Janac Meena
48

Você também pode ver os nomes dos pacotes como nomes de domínio da Internet invertidos (o que geralmente também é verdadeiro no mundo real, veja, por exemplo, os org.apache.commonsque se correlacionam com http://commons.apache.org ). Os com(comercial) e org(organização) estão aqui, na verdade, os nomes de domínio de nível superior .

Os nomes dos pacotes geralmente são apenas para identificar o fabricante / fornecedor do código que você está enfrentando.

BalusC
fonte
16
E para garantir a exclusividade do nome do pacote. Eu acho que é uma maneira bastante inteligente de fazer isso #
Thorbjørn Ravn Andersen
2
Posso estar errado, mas com parece desnecessário neste momento se todo mundo vai usá-lo. Prefiro usar apenas o nome da empresa. Prefiro o sistema de nomes que eles têm para outros sistemas de empacotamento, como npm e compositor. Eles usam 'username / packageName' ou algo semelhante. Então, eu
nomearia
9

Geralmente comé usado pelas empresas ao nomear os pacotes, comsendo seguido pelo nome da empresa. Por exemplo, você tem os com.sunpacotes na JVM.

O orgprefixo do pacote é usado principalmente por organizações sem fins lucrativos ou para código-fonte aberto, como apache, w3c, etc.

Guillaume
fonte
A convenção de usar a URL .com de uma comapany para código interno e .org para qualquer código tornado público é uma boa idéia. Isso é o que eu resumi desta resposta.
Dennis
3
Dennis, não acho que seria uma boa ideia. Isso significa que a liberação do código alteraria os nomes dos pacotes e interromperia o software interno que está usando os nomes originais. Além disso, haveria uma colisão de namespace se example.com e example.org pertencerem a empresas diferentes e ambos desejarem liberar o código Java.
proski
3

Consulte o documento Oracle para nomeação de pacotes

Consulte Convenções de nomenclatura para obter nomes padrão de classe / interface / anotações / etc

nome do pacote e sintaxe padrão da classe:
<seu domínio ao contrário>. <nome do projeto>. <controller / dao / service / handlers etc>. <sua classe>

exemplo1: (aqui domínio: - "stackoverflow.com", projeto: - "Teste")
com.stackoverfllow.test.handler.TestHandler

exemplo2: (aqui domínio: - "www.google.co.in", projeto: - "Meu projeto")
in.co.google.myproj.controller.MainController

mas para domínios reservados como java. *, javax. *, sun. *, etc., você deve obter permissão da comunidade oracle

Dharmendrasinh Chudasama
fonte