Общий код для объектов взаимодействия • Статическая типизация • Глобальные оптимизации кода • Кроссбраузерность * • Знакомые инструменты разработки Java
Помечаем как final поля, методы и классы • Заменяем мономорфные вызовы методов на статический вызов • Вычисляем наиболее точный тип выражений, значений, параметров • Удаляем блоки кода, если точно известно значение условия if • Вычисляем выражения с константами • Встраиваем тело метода на место его вызова, для коротких методов • Заменяем использование перечислений на их Ordinal значения • Если все вызовы метода передают в параметр одно и тоже значение, то создаём версию метода без этого параметра
Заменяем множественные выражения catch для одного try блока • Вставляем явное приведение к типу Long соответствующие • Вставляем вызовы методов для арифметики с типом Long • Заменяем приведения типов и проверки instanceOf на соответствующие вызовы библиотеки GWT • Заменяем операции с массивами на вызовы времени исполнения • Заменяем сравнения через == • Заменяем вызовы getClass() • Заменяет ссылки на типы, используемые в instanceOf
областям видимости • Обфусцируем идентификаторы • Встраиваем короткие функции • Удаляем неиспользуемые функции • Удаляем дубликаты функций • Добавляем информацию для понятных трассировок стека