
Дмитрий Соломенников
Компания: Axiom JDK
Скорость компиляции Java в силу целого ряда причин невысокая, особенно если сравнивать с некоторыми другими языками. Мы поставили и успешно решили задачу ускорения компиляции, добившись двукратного прироста скорости, а также заметного снижения потребления памяти и CPU при компиляции. Это важная задача, способная облегчить труд Java-разработчиков и использование вычислительных ресурсов на CI.
Достигли мы этого с помощью технологии AOT, выполненной средствами Axiom NIK Pro. Ускорение достигается путем преобразования кода javac в машинный код. Такое преобразование возможно, поскольку в самом коде javac не используется Java Reflection. В тех местах, где она все же используется (флаг -processor
), производится откат на Java-реализацию javac. Для этих целей модифицирован код Java launcher, он обрабатывает параметры командной строки и принимает решение, запускать ли AOT версию или запускать Java-версию javac.
Приведу статистическую информацию о результатах компиляции. Например, компиляция Hadoop из исходников ускорена с более чем 6 минут до менее чем 3 минут как раз за счет уменьшения времени на компиляцию с помощью javac. Остальное время работы Maven (или Gradle в других проектах) не изменяется. Кроме этого, рассмотрим другие способы ускорения, которые могут быть интересны Java-программистам.
Компания: Axiom JDK