Nomeação de Pacotes em Java

7 respostas
R

Bom, sou iniciante em java e em todo tutorial que leio a criação de classes se baseia no seguinte formato de pacote: pacote br.com.agenda.model , porque seguir esse modelo ? qual a boa prática envolvida nisso ?

7 Respostas

fabiocortolan

Dá uma olhada neste artigo, é muito interessante, no seu caso é o item 9 mas o artigo todo é ótimo:

http://www.flaviojmendes.com/blog/2012/02/09/boas-praticas-em-java-guia-definitivo/

R

Bom, li mas confesso que não ficou muito claro. Porque eu deveria identificar no meu projeto um pacote com prefixo br.com ?

moni.s

São parametrizações de boas praticas que permitem um melhor entendimento de um desenvolvimento

este site também tem mais informações de boas praticas, para responder sua pergunta o item A instrução package
http://www.sirmacstronger.eti.br/java/pacotesjava.php

resumindo:

br.com.empresa.nomePacote

o sistema ira ler da seguinte forma como exemplo: local\br\com\empresa\nomePacote.

Permitindo uma boa organização. Imagina criando apenas os pacotes na raiz sem organização.

E

Não precisa ser br.com. Digamos que sua empresa, ou universidade, ou sei lá onde você trabalha, tenha um domínio ac.jp, por exemplo:

keio.ac.jp

Então os pacotes produzidos seriam:

jp.ac.keio.pacote

e assim por diante.

R

Certo, mas no meu caso o sistema é local. COmo fica ?

Rodrigo_Sasaki

Não existe obrigatoriedade, acontece que quando o sistema pertence a um domínio, aquele geralmente é o padrão.

Se você tem um serviço disponível no seu sistema, com um WSDL, quando alguém for gerar as classes automaticamente, através do wsimport por exemplo, se não me engano ele irá gerar o pacote com o domínio invertido, como o entanglement exemplificou.

Agora se isso não faz diferença pra você, deixe como achar mais “bonitinho” :slight_smile:

B

O motivo de seguir esse padrão é o classpath. Imagina que o teu sistema de pacotes vai virar uma estrutura de diretórios, com vários níveis de pastas e arquivos.

Agora pega todos os JARs que o teu sistema carrega, e imagina que cada um deles também vai virar uma estrutura de diretórios.

Agora, o que o Java faz quando carrega o teu sistema com esses JARs?

Ele pega todas essas estruturas de diretório e junta todas elas em uma só. Isso é o classpath.

Agora também imagine que você desenvolveu um arquivo MinhaClasse.java dentro de br.com.minhaempresa. E que outra empresa também criou um MinhaClasse.java dentro de br.com.minhaempresa. O que vai acontecer quando o Java carregar os dois JARs ao mesmo tempo? Provavelmente o teu sistema vai explodir.

O uso desse padrão de pacotes é para prevenir que isso aconteça.

BTW, isso é uma problema comum quando se usa dependências. Uma dependencia depende do Hibernate 3.3, a outra depende do 3.6. Boom.

Por isso existe o OSGi e o Jigsaw(adiado para o Java 9) existem.

Criado 1 de março de 2013
Ultima resposta 1 de mar. de 2013
Respostas 7
Participantes 6