Тип доклада: Доклад

Компилируем Java ahead-of-time с GraalVM

  • Доклад на русском языке
Презентация pdf

Комментарий Программного комитета:

Знаток рантаймов VM и один из немногих, кто может понятно и просто на русском языке объяснить сложные вещи о рантаймах. В частности, Олег из первых рук рассказывает об устройстве GraalVM — именно о ней и будет этот доклад, о том, как писать современный код на Java, не теряя производительности на абстракциях.

GraalVM — высокоэффективная виртуальная машина для разных языков программирования, поддерживающая многие популярные языки: Java, Kotlin, Scala, JavaScript, Python, Ruby, R и даже С и С++ и им подобные. Интересной особенностью GraalVM является способность компилировать JVM bytecode в машинный код ahead-of-time, создавая образы обычных Java-программ, которые не зависят от JVM, запускаются в миллисекундные сроки и требуют для работы меньше памяти. Для этого используется специальная виртуальная машина — SubstrateVM, написанная на Java и предлагающая собственные имплементации для сборки мусора, кэша кода, управление потоками и прочие компоненты JVM.

Мы поговорим об устройстве SubstrateVM, особенности подхода к компиляции кода и его ограничениях. Посмотрим на внутренний анализ Java-программ и на то, что именно происходит на этапе создания образа (тут возникнут смешанные чувства к статическим инициализаторам в коде и библиотекам, которые редко обновляются). Выясним, как и почему нужно конфигурировать использование Reflection API, доступ к файлам ресурсов, JNI, Unsafe и прочие житейские мелочи нормальных Java-приложений. На практике покажем, как применить profile-guided-optimizations для создания быстрых образов, не теряющих информацию о потенциальном профиле использования кода. Поговорим, какие программы имеет смысл компилировать ahead-of-time, посмотрим на примеры приложений, которые уже работают, и характеристики их производительности.

P. S. В ассемблер смотреть не будем, ну разве что чисто для галочки.

  • #vm

Спикеры

Доклады