una aplicación que he escrito utiliza varios archivos jar de terceros. A veces, solo se usa una pequeña porción del frasco completo de 50kB a 1.7mB: una o dos llamadas o clases de funciones.Minimización de tamaños de dependencia jar
¿Cuál es la mejor forma de reducir el tamaño de los recipientes? ¿Debo descargar las fuentes y construir un contenedor con solo las clases que necesito? ¿Qué herramientas existentes pueden ayudar a automatizar esto (por ejemplo, miré brevemente al http://code.google.com/p/jarjar/)?
Gracias
EDIT 1: me gustaría reducir el tamaño de mi terceros frascos 'oficiales' como SwingX-1.6.jar (1.4 MB), set-3.6 (1.7 MB) glazedlists -1.8.jar (820KB), etc por lo que sólo contienen las clases mínimum las que necesito
Edición 2: Minimización de un frasco a mano o mediante el uso de un programa como Proguard se complica aún más si se utiliza la biblioteca reflexión. Injection with google guice does not work anymore after obfuscation with proguard
La respuesta por Cletus en otro post es muy bueno How to determine which classes are used by a Java program?
He usado Proguard para la ofuscación de mi jar de aplicación con buen resultado, y noté el tamaño de salida más pequeño. También me encontré con problemas con 'clases rotas' como mencionas, con objetos xstream, hasta que los agregué a la sección "mantener". Aunque no he usado Proguard para reducir el tamaño de mis jarrones de dependencia, ¿es esto posible? –
@brian_d - sí, debería ser posible, utilizando -injars/-outjars. Supongo que el "nivel de dificultad" estará relacionado con la cantidad de jarras que tienes. Un ejemplo de uso que tuve fue de encriptación de bouncycastle. Solo pude incluir las clases que necesitaba, descartando todo el código para los algoritmos no utilizados, etc. –
gracias por la sugerencia, voy a intentar esto. –