Melhor estrutura de packages para distribuir

E aí pessoal…
Estou com uma dúvida interessante, eu possuo uma estrutra de pacotes onde hj é mais ou menos o seguinte:

-- com.minhaEmpresa.produto.
                                            |-- moduloDoSistema1.
                                                                           |-- arquivo1.java
                                                                           |-- arquivo2.java
                                                                           |-- arquivo3.java
                                            |-- moduloDoSistema2.
                                                                           |-- arquivo1.java
                                                                           |-- arquivo2.java
                                                                           |-- arquivo3.java

Entretanto dentro de cada módulo existem classes que pertencem apenas para a camada server. Outras que pertencem somente ao Client e outras que são utilizadas nas duas camadas.
A minha dúvida é: O mais correto seria criar mais uma divisão separando o q é client do q é server? ou então, criar dois jars com a mesma estrutura porém com classes diferentes dentro de cada um??? Outras idéias???

Fallow

Olá

Separe o que é cliente do que é servidor. As classes comuns ficarão em outros jars.

[]s
Luca

E aí Luca, valeu!!!

Mas a minha dúvida é, como fazer isso???

Coloco em packages separadas??? Ou seria possível deixar a mesma estrutura e fazer a geração dos jars separadas??? Só que assim eu teria dois jars com a mesma estrutura de packages porém com classes diferentes dentro de cada Jar (essa com certeza seria a opção mais fácil, mas não sei se fica bom??? :roll: )

Olá

Certo, separe os packages. Use a própria API Java como modelo. Vários critérios são válidos:

  1. Em cada package uma família de classes com algo a ver entre si.

  2. Em cada package uma árvore de classes relativas a uma determinada facilidade do sistema. Neste caso poderão existir vários subdiretórios:
    Exemplos:
    com.sua-empresa.seu-sistema.faturas.proxi
    com.sua-empresa.seu-sistema.faturas.model
    com.sua-empresa.seu-sistema.faturas.security
    etc.

  3. Packages separados de acordo com a probabilidade de futuro reaproveitamento.

É válido montar diferentes jars (wars e ears) contendo as mesmas classes, istó é, apontando para as mesmas classes. Quando atualizar uma destas classes, o ant (ou maven) perceberá, recompilará e montará todos os jars necssários.

Existe uma pessoa que conhece bem seu sistema e poderá dizer exatamente qual a melhor organização que ele deve ter: você!

Não importa se errar (desde que o sistema funcione), talvez seja até melhor. Assim poderá melhorar no futuro.

[]s
Luca