Java Microbenchmark Harness 1.12
В Maven Central появился патч-релиз JMH 1.12. Несмотря на кажущийся минорным номер версии, он добавляет несколько важных улучшений, добавляющих совместимость с JDK 9 Early Access с интегрированным Jigsaw.
JMH — Java Microbenchmark Harness — это оснастка Java для сборки, запуска и анализа нано/микро/милли/макро-бенчмарков, написанных на Java и других языках с целевой платформой JVM. Один из наиудобнейших инструментов, которые приятно иметь под рукой.
Project Jigsaw — это проект, посвященный реализации способности платформы Java SE и JDK масштабироваться на небольшие устройства и повышению управляемости кода, что достигается реализацией модульной системы, модуляризацией JDK, итп. Так как имеет насущный смысл прямо сейчас, пока не поздно, тестировать свои проекты на совместимость с JDK9+Jigsaw, смотреть что отвалилось, и писать отчеты разработчикам, инструменты типа JMH могут оказаться весьма полезными.
Судя по ченжлогу, за выпуск новой версии JMH надо благодарить Алексея Шипилёва (Shade), который работает на позиции Java Performance Engineer в Oracle.
Исходники проекта можно посмотреть в меркуриале: http://hg.openjdk.java.net/code-tools/jmh
Добавлены следующие изменения:
- Компиляция на 9b111 падает с CNFE: javax.annotation.Generated. Возможно, это проблема в JDK, но мы нашли, как ее обойти. (кому интересно, могут глянуть связанный баг): https://bugs.openjdk.java.net/browse/CODETOOLS-7901643
- Профилировщик GC падает на 9b111, которая форсирует более строгие настройки доступа до MXBeans. Мы переписали это более безопасным способом, и в качестве дополнительной плюшки получили исправление нескольких ошибок с JDK 6: https://bugs.openjdk.java.net/browse/CODETOOLS-7901645
- Выхлоп JSON теперь показывает размер батчей, если эти данные вдруг понадобятся для SingleShot прогонов: https://bugs.openjdk.java.net/browse/CODETOOLS-7901649
- Уже некоторое время, прогоны без форка (-f 0) стали рискованными с точки зрения корректности. Они оставлены для продвинутых пользователей и для отладки. Теперь мы будем более явно напоминать об этом: https://bugs.openjdk.java.net/browse/CODETOOLS-7901650
java, jmh