Reduzindo o tamanho dos JAR's de uma aplicação Java

Pode ser encontrado no JDK distribuído pela SUN um programa chamado
"pack200" que permite aplicar compressão nos arquivos JAR sem a necessidade
de uma prévio desempacotamento do mesmo.

Com o uso deste programa podemos reduzir o tamanho de um arquivo JAR em
mais de 20% em vários casos. Este programa, além de aplicar uma compressão
maior, permite remover dos arquivos '.class' todas as informações de debug
que são inseridas no bytecode sem a necessidade de recompilação. Por
exemplo, se executarmos a seguinte linha de comando:

   c:\> pack200 --repack --strip-debug --effort=9 hibernate-3.0.5.jar

o pacote do Hibernate, sem a necessidade de recompilação, será reempacotado
com o máximo de compressão (--effort=9) e as informações de debug serão
removidas (--strip-debug) de cada arquivo .class. O pacote original do
Hibernate tem 1.6MB e após o 'repack' passa a ter o tamanho de 1.2MB. No
caso do Spring Framework, o pacote completo tem 1.8MB e após o repack passa
a ter 1.4MB.

Para aplicações distribuídas através do Java Web Start (JWS) pela rede
corporativa, vale a pena aplicar a compressão. O plugin do Maven 1.x para
geração do pacote JNLP para o JWS ainda não suporta a execução deste
programa antes da assinatura dos arquivos JAR's. Mas, na versão Maven 2.x
este recurso poderá ser usado através do seguinte plugin:
http://mojo.codehaus.org/webstart-maven-plugin-parent/webstart-maven-plugin/
introduction.html.