Что я могу сделать для создания банки / классы меньший?

Я знаю, что я немного вне темы здесь, и ничего не знаю о программном обеспечении распознавания речи; однако, Вы могли бы найти полезным исследовать изменение Вашей клавиатуры к расположению Dvorak, которое я услышал, намного более добро на запястьях.

http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard

13
задан amarillion 24 November 2009 в 13:22
поделиться

10 ответов

Вы можете использовать

javac -g:none

для удаления отладочной информации - хотя я не знаю, насколько это может изменить.

Насколько вы уверены, что время загрузки является узким местом? Насколько велик апплет? Я сомневаюсь, что размер будет иметь большое значение после загрузки, если он не огромен.

11
ответ дан 1 December 2019 в 19:15
поделиться

Посетите эту страницу, чтобы узнать, как можно уменьшить размер файлов jar - http://wiki.java.net/bin/view/Games/4KGamesDesign . Несмотря на то, что некоторые из них могут не применяться, поскольку вы не пытаетесь добиться абсолютной минимизации, есть несколько общих советов, которые вы можете применить без ущерба для качества кода.

но их краткое содержание здесь:

Сведите код к одному классу. Каждый класс добавляет накладные расходы на запись в JAR-файле, а также новый пул констант и список классов.

Сведите количество ваших методов к минимуму. Каждый метод добавляет накладные расходы в файл класса. Все, что вам понадобится, это метод main () и методы для реализации подпрограмм клавиатуры и / или мыши.

Не используйте глобальные переменные. Для идентификации глобальным переменным требуются специальные метаданные в классе. Однако локальные переменные метода являются только записями в стеке и не требуют дополнительных затрат.

Используйте хороший компрессор, такой как 7Zip или KZip, для создания файлов JAR. Утилита JAR в основном предназначена для обеспечения корректности, а не для степени сжатия.

Используйте обфускатор, например ProGuard, JoGa или JShrink, чтобы оптимизировать размер вашего класса.

Используйте один символ для имени файла класса. Это уменьшает его размер внутри, уменьшает объем информации, хранящейся в программе Zip, и уменьшает размер манифеста.

Указывайте как можно меньше классов. Каждый класс, на который вы ссылаетесь, добавляет полное имя пакета и класса, а также сигнатуру метода, который вы вызываете.

Избыточность (например, использование одного и того же имени для всех ваших методов, классов и полей) улучшает степень сжатия.

Используемые методы private и final могут быть встроены оптимизатором классов.

Используйте String. valueOf () для преобразования примитивов в строки. Например, "" + число расширяется до: new StringBuffer? (). Append (""). Append (number) .toString () , тратя много места на новый ссылки на классы и методы.

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

Вы можете свободно использовать статические конечные переменные для констант. Это сделает ваш код более читабельным, и ProGuard оптимизирует его, чтобы не было дополнительных накладных расходов.

11
ответ дан 1 December 2019 в 19:15
поделиться

Proguard - это бесплатное средство сжатия, оптимизатора, обфускатора и предварительной проверки файлов классов Java. Он обнаруживает и удаляет неиспользуемые классы, поля, методы и атрибуты. Он оптимизирует байт-код и удаляет неиспользуемые инструкции.

Отчеты на сайте proguard показывают примеры сокращения от 19 до 90%.

6
ответ дан 1 December 2019 в 19:15
поделиться

pack200 (и gzip) создает файлы гораздо меньшего размера, чем jar-файлы (фактически zip-файлы).

2
ответ дан 1 December 2019 в 19:15
поделиться

Classdepandjar используется в мире Jini для уменьшения размеров файлов jar (Jini поставляет много удаленного кода, отсюда и это требование). Он удаляет классы, на которые нет ссылок, из того же самого jar-файла.

Очевидно, есть исключения из этого (классы, загружаемые по имени и т. Д.), Поэтому вы можете включить их в конфигурацию. Скорее всего, вам следует протестировать свою "встряхнутую" банку, чтобы определить, остались ли соответствующие зависимости.

3
ответ дан 1 December 2019 в 19:15
поделиться

Насколько я могу судить, вы не можете удалить символы из файлов классов Java, но вы можете сократить идентификаторы. Однако это, вероятно, сделает трассировку стека бесполезной, поэтому я не защищаю это.

Однако вы можете без потерь уменьшить размер файла, повторно сжав файлы .jar, используя улучшенные алгоритмы дефлятирования из AdvanceCOMP проект (архивы .jar - это просто файлы .zip внутри).

1
ответ дан 1 December 2019 в 19:15
поделиться

Вы можете использовать инструмент для применения обфускации кода. Это часто приводит к сокращению имен переменных и методов и значительному уменьшению размеров классов. Это часто делается при развертывании кода на платформе J2ME.

0
ответ дан 1 December 2019 в 19:15
поделиться

попробуйте этот инструмент. http://proguard.sourceforge.net/

1
ответ дан 1 December 2019 в 19:15
поделиться

Если вы используете NetBeans, вы можете настроить сценарий сборки на создание сжатого файла JAR в конфигурации проекта (в разделе «Сборка-> Упаковка»). Может быть, не так эффективно, как другие решения, но это всего лишь флажок. : -)

-1
ответ дан 1 December 2019 в 19:15
поделиться

Некоторые предложения по улучшению размера апплета:

  1. Obfuscate - Proguard был лучшим для меня с точки зрения общей производительности - более чем 25% снижение для меня. Кроме того, это обеспечит приличную компрессию во время работы с банкой.

  2. Оптимизируйте любые ресурсы - уменьшите прикрепленные изображения с помощью оптимизаторов изображения, при необходимости уменьшите качество.

  3. Изменения в коде - я вижу, что вы на самом деле не хотите этого делать, но стоит взглянуть на свои Jar-файлы и проверить, сколько классов произведено. Самый тривиальный класс будет стоить около 500 байт. Если у вас много анонимных внутренних классов, возможно, стоит рефакторинг.

  4. Загружайте ресурсы по мере необходимости - Загружайте начальный апплет. Загружайте дополнительные ресурсы асинхронно после запуска.

3
ответ дан 1 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: