Подтвердить что ты не робот

Минимизация размеров зависимостей банки

приложение, которое я написал, использует несколько сторонних банок. Иногда используется только небольшая часть всей банки размером от 50 кБ до 1,7 мБ - один или два вызова функций или классы.

Каков наилучший способ уменьшить размеры банки. Должен ли я загружать источники и строить банку только с теми классами, которые мне нужны? Какие существующие инструменты могут помочь автоматизировать это (например, я кратко рассмотрел http://code.google.com/p/jarjar/)?

Спасибо

Изменить 1: Я хотел бы уменьшить размер официальных баров третьей стороны, таких как swingx-1.6.jar(1.4 MB), установить 3.6 (1.7 MB) glazedlists-1.8.jar(820kB) и т.д., Чтобы они содержали только голые минимальные классы Мне нужно

Изменить 2: Минимизация банки вручную или использование программы, такой как proguard, еще более усложняется, если библиотека использует отражение. Инъекция с google guice больше не работает после обфускации с помощью proguard

Ответ cletus на другой пост очень хорош Как определить, какие классы используются программой Java?

4b9b3361

Ответ 1

Proguard будет вариант. Он может устранить неиспользуемые классы и методы. Вы также можете использовать его для обфускации, что может дополнительно уменьшить размер вашей последней банки. Имейте в виду, что загрузка класса по имени может нарушиться, если не будет предпринята забота о том, чтобы не затронуть уязвимые классы.

Я нашел Proguard достаточно эффективным - может быть немного загадочным, чтобы понять с самого начала. Но у меня нет опыта с подобным, чтобы предложить сравнение.

Ответ 2

Прежде всего, если вы используете только один класс из JAR файла, это не означает, что этот класс не использует другие классы из этого JAR. Вариант для вас, если вы используете JAR с открытым исходным кодом, заключается в том, чтобы получить источники этого JAR, прикрепить их к вашему проекту, удалить ненужные вещи и самостоятельно внести изменения.

Ответ 3

Вы можете добавить GenJar в качестве задачи Ant и использовать его для создания JAR. Как говорится на домашней странице библиотеки,

GenJar - это специализированная задача Ant, которая создает файлы jar на основе класса а не просто содержимое каталога.

Вы можете найти его на SourceForge.