Oracle GraalVM

Доступна в рамках Java SE Universal Subscription без дополнительной платы для расширения возможностей разработки современных Java–приложений путем создания приложений на базе микросервисов для развертываний Cloud Native с улучшением производительности и экономии средств.

Что такое Oracle GraalVM?

Определение GraalVM

Oracle GraalVM — это высокопроизводительный комплект разработчика JDK, который может ускорить работу Java и приложений на базе JVM с помощью альтернативного компилятора just-in-time (JIT). GraalVM Enterprise снижает задержки приложений, повышает пиковую пропускную способность за счет сокращения времени сборки мусора и обеспечивает круглосуточную поддержку Oracle.

Также предлагается утилита нативных образов, выполняющая АОТ-компиляцию байтового кода Java и генерирующая нативные исполняемые файлы для некоторых приложений, которые выполняются почти мгновенно и используют очень мало ресурсов памяти.

GraalVM (компилятор Graal, Truffle и Oracle Java Development Kit [JDK])

Виртуальная машина 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 для начинающих»

Oracle GraalVM

Компилятор GraalVM включает в себя ряд дополнительных алгоритмов оптимизации, которые обеспечивают значительное улучшение в плане производительности и потребления ресурсов. Нативные образы GraalVM поддерживают ряд передовых функций, включая сборщик мусора G1, сжатые указатели и оптимизацию с учетом профиля, что помогает компилятору генерировать более эффективный код.

GraalVM поставляется с продуктами Java SE без дополнительной платы. Версия включает круглосуточную поддержку Oracle с доступом к исправлениям безопасности и обновлениям критического пути для более предсказуемой производительности и надежности. Для миграции Java в облако версию GraalVM можно бесплатно использовать в Oracle Cloud Infrastructure (OCI).

Преимущества использования Oracle GraalVM

GraalVM позволяет разработчикам создавать более эффективный код с лучшей изоляцией и большей гибкостью для облачных или гибридных сред. Вот некоторые из причин, по которым все больше и больше предприятий сегодня используют GraalVM.

  • Быстрая адаптация к изменениям рынка. Современные бизнес-приложения должны обрабатывать растущие объемы данных и быстро реагировать на запросы клиентов. Java-приложения идут в ногу со временем и помогают разработчикам повысить эффективность работы приложений и одновременно сократить расходы на ИТ.
  • Способность создавать современные Java-приложения, использующие микросервисы и контейнеры для нативных облачных приложений. Микросервисы — это небольшие, независимые мини-приложения, выполняющие одну функцию. Бизнес-приложения обычно используют сотни сервисов, и каждый из них должен запускаться быстро, чтобы минимизировать задержки и снизить затраты на потребление облака. Другими словами, Вы платите только за то, что используете.
  • Повышение производительности труда разработчиков за счет создания экосистемы, в которой разные языки программирования могут работать вместе на одной машине JVM.

Варианты использования GraalVM

Повышение производительности и расширение возможностей существующих Java-приложений

Инновации GraalVM помогают коду Java соответствовать современным вычислительным требованиям, обеспечивая более высокую производительность для быстрого реагирования на потребности клиентов. Усовершенствованный оптимизатор повышает пиковую пропускную способность. Также оптимизируется потребление памяти за счет минимизации распределения объектов для сокращения времени, затрачиваемого на сборку мусора. При работе GraalVM в режиме JIT можно увеличить производительность до 50 %. Таким образом можно быстрее освободить память, чтобы выполнять другие рабочие нагрузки на той же инфраструктуре и снизить затраты на ИТ.

Создание приложений Cloud Native

Утилита нативного образа Oracle GraalVM заранее компилирует Java-приложения в двоичные файлы машины. Нативные исполняемые файлы выполняются почти в 100 раз быстрее и потребляют почти в пять раз меньше памяти по сравнению с тем, как если бы они выполнялись на JVM.

Нативный образ Graalvm enterprise
Рис. 1. Нативные исполняемые файлы выполняются практически мгновенно и потребляют очень мало памяти по сравнению с Go или Java HotSpot.

Поскольку организации переносят рабочие нагрузки в облако и платят почасовую оплату за использование системных ресурсов, 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. Он поддерживает многоязыковые программы для повышения производительности, позволяя разработчикам использовать лучшие библиотеки, необходимые для решения бизнес-задач, независимо от того, на каком языке они написаны.