Oracle GraalVM — это высокопроизводительный комплект разработчика JDK, который может ускорить работу Java и приложений на базе JVM с помощью альтернативного компилятора just-in-time (JIT). GraalVM Enterprise снижает задержки приложений, повышает пиковую пропускную способность за счет сокращения времени сборки мусора и обеспечивает круглосуточную поддержку Oracle.
Также предлагается утилита нативных образов, выполняющая АОТ-компиляцию байтового кода Java и генерирующая нативные исполняемые файлы для некоторых приложений, которые выполняются почти мгновенно и используют очень мало ресурсов памяти.
Виртуальная машина GraalVM была запущена в 2011 году как исследовательский проект в Oracle Labs по созданию платформы среды выполнения, которая может работать с несколькими языками программирования с высокой производительностью. Основным элементом проекта GraalVM является оптимизирующий компилятор GraalVM, который используется как компилятор just-in-time (JIT) для виртуальной машины Java (JVM) или с помощью функции нативного образа GraalVM для АОТ-компиляции байтовых кодов Java в нативный машинный код. Среда реализации языка Truffle от GraalVM работает с компилятором GraalVM для выполнения JavaScript, Python, Ruby и других поддерживаемых языков на JVM с непревзойденной производительностью.
При использовании GraalVM в режиме JIT JVM использует компилятор GraalVM JI для создания специфичного для платформы машинного кода из байтового кода Java во время работы приложения. Компиляция выполняется постепенно во время работы программы, при этом код, который часто выполняется, дополнительно оптимизируется. Такой подход гарантирует, что код в активных зонах будет выполняться чрезвычайно быстро благодаря агрессивному встраиванию кода, частичному анализу локальности и другим расширенным возможностям оптимизации. Некоторые оптимизации уменьшают выделение объектов, что снижает нагрузку на сборщик мусора. Это позволяет повысить пиковую производительность долго работающих приложений.
Утилита нативного образа GraalVM также может компилировать байтовый код Java для генерации исполняемых файлов нативной машины заранее (то есть во время сборки). Эти исполняемые файлы выполняются практически мгновенно и потребляют только малую часть памяти, которую использовало бы то же Java-приложение, выполняемое на JVM. Нативные исполняемые файлы также компактны, поскольку включают только те классы, методы и зависимые библиотеки, которые необходимы приложению.
Кроме того, GraalVM поддерживает многоязыковую совместимость посредством среды реализации языка Truffle. Truffle позволяет программам, написанным на поддерживаемых языках, использовать многоязыковые библиотеки. Например, программа на JavaScript может вызывать методы Ruby и совместно использовать значения, не создавая копий. Если среда Truffle работает на JVM, ее вместе с компилятором GraalVM можно использовать для компиляции поддерживаемых языков в нативный машинный код для оптимальной производительности, так же как и Java.
Узнайте больше о компиляторе GraalVM, прочитав электронную книгу «GraalVM для начинающих»
Компилятор GraalVM включает в себя ряд дополнительных алгоритмов оптимизации, которые обеспечивают значительное улучшение в плане производительности и потребления ресурсов. Нативные образы GraalVM поддерживают ряд передовых функций, включая сборщик мусора G1, сжатые указатели и оптимизацию с учетом профиля, что помогает компилятору генерировать более эффективный код.
GraalVM поставляется с продуктами Java SE без дополнительной платы. Версия включает круглосуточную поддержку Oracle с доступом к исправлениям безопасности и обновлениям критического пути для более предсказуемой производительности и надежности. Для миграции Java в облако версию GraalVM можно бесплатно использовать в Oracle Cloud Infrastructure (OCI).
GraalVM позволяет разработчикам создавать более эффективный код с лучшей изоляцией и большей гибкостью для облачных или гибридных сред. Вот некоторые из причин, по которым все больше и больше предприятий сегодня используют GraalVM.
Инновации GraalVM помогают коду Java соответствовать современным вычислительным требованиям, обеспечивая более высокую производительность для быстрого реагирования на потребности клиентов. Усовершенствованный оптимизатор повышает пиковую пропускную способность. Также оптимизируется потребление памяти за счет минимизации распределения объектов для сокращения времени, затрачиваемого на сборку мусора. При работе GraalVM в режиме JIT можно увеличить производительность до 50 %. Таким образом можно быстрее освободить память, чтобы выполнять другие рабочие нагрузки на той же инфраструктуре и снизить затраты на ИТ.
Создание приложений Cloud NativeУтилита нативного образа Oracle GraalVM заранее компилирует Java-приложения в двоичные файлы машины. Нативные исполняемые файлы выполняются почти в 100 раз быстрее и потребляют почти в пять раз меньше памяти по сравнению с тем, как если бы они выполнялись на JVM.
Поскольку организации переносят рабочие нагрузки в облако и платят почасовую оплату за использование системных ресурсов, GraalVM может помочь сэкономить на операционных затратах. Таким образом, генерируемые GraalVM нативные исполняемые файлы становятся идеальным выбором для развертывания микросервисов — области, поддерживаемой основными платформами микросервисов, такими как Helidon, Micronaut, Quarkus и Spring Boot.
Разработка многоязыковых программ и повышение производительностиJava и другие языки, такие как JavaScript, могут очень эффективно работать на JVM. SuiteScript от Oracle NetSuite — это дополнительный язык для конечных пользователей, позволяющий им расширить возможности настройки приложений, работающих в NetSuite. Благодаря Oracle GraalVM в NetSuite теперь есть встроенная, основанная на Truffle среда выполнения JavaScript, которая может компилировать JavaScript в машинный код, выполняющийся в 4 раза быстрее, чем SuiteScript, работающий на JVM.
GraalVM включает усовершенствованный оптимизирующий компилятор, который генерирует машинный код во время выполнения программой JIT-компиляции для ускорения производительности Java-приложений. Благодаря предварительной компиляции нативный образ быстро запускается и использует меньше памяти, что делает его идеальным для развертывания в решениях Cloud Native. Он поддерживает многоязыковые программы для повышения производительности, позволяя разработчикам использовать лучшие библиотеки, необходимые для решения бизнес-задач, независимо от того, на каком языке они написаны.