un'applicazione che ho scritto utilizza diversi contenitori di terze parti. A volte viene utilizzata solo una piccola parte dell'intero jar da 50kB a 1,7mB - una o due chiamate o classi di funzioni.Ridurre al minimo le dimensioni delle dipendenze del vaso
Qual è il modo migliore per ridurre le dimensioni del barattolo. Dovrei scaricare i sorgenti e costruire un barattolo con solo le classi che mi servono? Quali strumenti esistenti possono aiutare ad automatizzare questo (ex ho brevemente guardato a http://code.google.com/p/jarjar/)?
Grazie
Modifica 1: vorrei abbassare le dimensioni del mio terzo vasetti 'ufficiali' come swingx-1.6.jar (1.4 MB), set-3.6 (1,7 MB) glazedlists -1.8.jar (820KB), ecc in modo che contengono solo le classi minimo indispensabile ho bisogno
Edit 2: Minimizzare un vaso a mano o utilizzando un programma come proguard si complica ulteriormente se gli usi libreria riflessione. Injection with google guice does not work anymore after obfuscation with proguard
La risposta da Cletus su un altro post è molto buono How to determine which classes are used by a Java program?
Ho usato Proguard per offuscare il mio jar di applicazione con un buon risultato e ho notato la dimensione di output più piccola. Ho anche avuto a che fare con le "classi spezzate" come hai detto, con gli oggetti xstream, fino a quando non li ho aggiunti alla sezione "continua". Non ho usato proguard per ridurre la dimensione dei miei barattoli di dipendenza però - è possibile? –
@brian_d - sì dovrebbe essere possibile, usando -injars/-outjars. Immagino che il "livello di difficoltà" sia legato al numero di vasi che hai. Un esempio di utilizzo che ho avuto era la crittografia di bouncycastle. Sono stato in grado di includere solo le classi di cui avevo bisogno, scartando tutto il codice per gli algoritmi inutilizzati, ecc. –
grazie per il suggerimento, darò una prova. –