Aplikacja, którą napisałem, wykorzystuje kilka słoików stron trzecich. Czasami używana jest tylko niewielka część całego słoika o pojemności od 50kB do 1,7mB - jedno lub dwa wywołania funkcji lub klasy.Minimalizowanie rozmiarów zależnych od słoiczka
Jaki jest najlepszy sposób na zmniejszenie rozmiarów słoików. Czy powinienem pobrać źródła i zbudować słoik tylko z klasami, których potrzebuję? Jakie istniejące narzędzia mogą pomóc w automatyzacji tego procesu (np. Krótko omówiłem http://code.google.com/p/jarjar/)?
Dziękuję
Edit 1: chciałbym obniżyć wielkość mojej strony trzeciej słoików 'urzędowy' jak SwingX-1.6.jar (1,4 MB), set-3.6 (1.7 MB) glazedlists -1.8.jar (820kB), itd., tak by zawierać tylko niezbędne minimum klas muszę
Edit 2: Minimalizacja słoik ręcznie lub przy użyciu programu jak PROGUARD komplikuje jeśli zastosowań bibliotecznych odbicie. Injection with google guice does not work anymore after obfuscation with proguard
Odpowiedź przez cletus na innym stanowisku jest bardzo dobra How to determine which classes are used by a Java program?
Użyłem Proguard do zaciemniania mojego słoika aplikacji z dobrym wynikiem i zauważyłem mniejszy rozmiar wyjściowy. Wpadałem też na problemy z "uszkodzonymi klasami", jak wspomniałeś, z obiektami Xstream, dopóki nie dodałem ich do sekcji "keep". Nie użyłem proguarda, aby zmniejszyć rozmiar moich słoików zależności - czy to możliwe? –
@brian_d - tak powinno być możliwe, używając -injars/-outjars. Myślę, że "poziom trudności" będzie zależał od liczby posiadanych słoików. Przykładem zastosowania miałem szyfrowanie bouncycastle. Udało mi się dołączyć klasy, których potrzebowałem, odrzucając cały kod dla nieużywanych algorytmów itp. –
dzięki za sugestię, spróbuję. –