Да, вы можете сэкономить место, создав JAR, содержащий только те классы, которые требуются вашему апплету.(Я видел, что это называется Uber-JAR.)
Существуют различные инструменты для этого;например, ProGuard, Zelix ClassMaster, плагин Maven, имя которого я забыл и т. д.
Однако есть пара проблем, по крайней мере, в общем случае:
Если ваш код использует динамическую загрузку (например, путем вызова Class.forName(className)
), эти инструменты обычно не могут обнаружить зависимость.Таким образом, чтобы динамически загружаемые классы не попадали в финальный JAR-файл, необходимо сообщить инструменту имена всех классов, которые ваше приложение может явно загрузить таким образом.
Вам нужновзглянуть на лицензию сторонней библиотеки.IIRC, некоторые лицензии требуют, чтобы вы включали библиотеку в свои распределенные артефакты таким образом, чтобы люди могли заменить другую версию библиотеки.Можно утверждать, что Uber-JAR делает это трудно, и, следовательно, может быть проблематичным.
JFreeChart - это LGPL, а LGPL - это лицензия, требования которой указаны выше.Однако MySQL - это GPL, что превосходит LGPL, а это означает, что ваш апплет должен быть под GPL ... если вы распространяете его.
Наконец, если вы хотите минимизировать размер JAR апплета, вам НЕ следует включать исходный код в JAR.Исходный код должен быть в отдельном файле JAR (или ZIP, TAR или где-либо еще).