Qual seria o impacto no sistema tem alguns módulos em jars separados? Teria mais velocidade, menos memória consumida quando estes não estariam sendo utilizados?
Ex…
Se tenho um Sistema Gerencial normal com cadastros e consultas e tudo mais…
Seria viável , por exemplo tem o módulo de nfe em um jar separado? sabendo -se que o cliente não usaria este módulo tão frequentemente quando os outros?
Ao carregar o sistema, o mesmo ocuparia menos memória do que se eu tivesse todos os módulos do sistema em um jar só?
Ou o java ao carregar, somente carrega o que esta sendo utilizado e o restante somente é carregado quando chamado?
[quote]Qual seria o impacto no sistema tem alguns módulos em jars separados? Teria mais velocidade, menos memória consumida quando estes não estariam sendo utilizados?
…Ao carregar o sistema, o mesmo ocuparia menos memória do que se eu tivesse todos os módulos do sistema em um jar só?
[/quote]
Não…velocidade, memória consumida fica tudo igual a ter todas as classes no mesmo jar.
Tudo é carregado no class path da solução na carga da solução…
Separar em jar separado na verdade é boa forma de “camadear” seu solução, aplicando separação de responsabilidade e suas pontos positivos…
[quote]Ex…
Se tenho um Sistema Gerencial normal com cadastros e consultas e tudo mais…
Seria viável , por exemplo tem o módulo de nfe em um jar separado? sabendo -se que o cliente não usaria este módulo tão frequentemente quando os outros? [/quote]
Sim…muita gente usa…Pessoal usa MAVEN para gerenciar as versões da jar’s.
Todas as classes no classpath é carregado no class loader…mas só vão gastar memoria quando vc alocar um objeto ou carregar o 1 recurso estatico…
Tanto é que quando vc atualizar 1 jar da solução vai ter que reiniciar a solução toda, pq a solução não vai recarregar as novas classes dentro do novo jar em tempo de runtime,
Unica forma de não gastar recursos com um modulo e carregar ele dinamicamente é usando algum recurso com OSGI - http://pt.wikipedia.org/wiki/OSGi
Alguma diferença deve haver, mas nada significativo. A JVM sempre carregas as classes de maneira dinâmica, ou seja, uma classe é carregada somente no momento do seu primeiro uso, independentemente de qual .jar ela se encontra. Porém, modularizar o seu sistema é uma boa prática pois você o mantém mais organizado e diminui o acoplamento entre módulos.
Não tem…as dependências de outros jar’s devem estar declarados no MANIFEST (desktop) ou dentro do WEB-INF/lib (web)…
Ou seja, todas as classes que PODEM ser usadas são carregada no classloder…
Não tem como fazer dinamicamente se não for por algo com OSGI.