Что такое sjavac, для кого он предназначен и как его использовать?
Там был какой-то гул об инструменте под названием sjavac
в списках рассылки OpenJDK. Кроме того, есть два связанных JEP: JEP 139: улучшение javac для повышения скорости сборки и JEP 199: компиляция Smart Java, фаза вторая.
Мои вопросы:
- Что именно
sjavac
инструмент? - Для кого это предназначено?
- Как мне это использовать?
Отказ от ответственности: Самостоятельно ответил на вопрос. Просто хотел поделиться знаниями об этом инструменте с сообществом Stackru и создать ссылку на будущие часто задаваемые вопросы по sjavac.
2 ответа
Что именно представляет собой инструмент sjavac?
sjavac
инструмент (якобы умный) обертка вокруг javac
, разработанный в Oracle и предназначенный для предоставления следующих функций:
- инкрементные компиляции - перекомпилируйте только то, что необходимо
- параллельная компиляция - использовать более одного ядра во время компиляции
- держать компилятор в горячей ВМ - повторно использовать JIT-экземпляр JIT для последовательных вызовов
При перекомпиляции набора исходных файлов javac просматривает временные метки файлов.java и.class, чтобы определить, что сохранить и что перекомпилировать. Это невероятно грубо и может иметь разрушительные последствия для больших баз кода. В дополнение к меткам времени sjavac проверяет открытый API зависимостей, чтобы определить, какие файлы необходимо перекомпилировать.
Sjavac также пытается разделить компиляцию на несколько вызовов javac. Другими словами, это приносит высокий уровень параллелизма процессу сборки.
Наконец, инструмент sjavac разделен на клиентскую часть и серверную часть, что позволяет оставить sjavac запущенным в фоновом режиме, с JIT-поддержкой и готовым для использования в последовательных вызовах.
Для кого это предназначено?
Людям, которые работают над большими проектами и часто перекомпилируют базу кода во время разработки, рекомендуется попробовать sjavac
, (Имейте в виду, однако, что инструмент в настоящее время находится в стадии разработки и все еще остаются открытые вопросы.)
Как мне это использовать?
Инструмент еще не поставляется с OpenJDK, поэтому вам придется получить его из репозитория OpenJDK jdk9/dev. Кроме того, пока нет места для запуска, так что вы вызываете его с java com.sun.tools.sjavac.Main
,
Вы можете попробовать jdk8 бэкпорт sjavac здесь: http://sjavac.s3-website-eu-west-1.amazonaws.com/