Реблог с Блог-сайта ZeroTurnaround’s Rebellabs

Одним из наиболее интересных дополнений к Java 9 является JVMCI: Java-Level JVM Compiler Interface, интерфейс компилятора на основе Java, который позволяет нам подключать динамический компилятор к JVM. Одним из основных источников вдохновения для включения его в Java 9 стал проект Graal — современный динамический компилятор, написанный на Java.

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

Как и все остальные, нас вдохновила сессия vJUG Криса Ситона о Graal — это похоже на отличный инструмент и технологию, поэтому мы решили поиграть с технологией и поделиться ею с сообществом.

…остальное можно прочитать в Блогах ZeroTurnaround’s Rebellabs

В случае, если вам интересно, о чем некоторые из изображений ASCII-арта в одном из абзацев, вот небольшое объяснение, надеюсь, оно прояснит любые сомнения.

Как это на самом деле работает?

Типичный процесс выглядит следующим образом:

AST → Абстрактное синтаксическое дерево (явные структуры данных в памяти)

Все мы знаем, что JIT встроен в HotSpot или JVM. Он старый, сложный, написанный на C++ и ассемблере, и его довольно сложно понять. Это черный ящик, и нет возможности подключиться или связать JIT. Все языки JVM должны пройти один и тот же маршрут:

(ASM = сборка)

Поток или маршрут при работе с традиционными компиляторами и виртуальными машинами будет следующим:

Но с Graal мы получаем следующий маршрут или поток:

(обратите внимание, что Graal пропускает этапы создания байт-кода путем непосредственного создания машинного кода для конкретной платформы)

Graal в основном помогает переместить поток управления из кода в JIT, минуя JVM (в нашем случае HotSpot).

Я надеюсь, вам понравилось чтение, пожалуйста, не стесняйтесь делиться любыми конструктивными отзывами, чтобы мы могли улучшить материал для сообщества в целом. Мы многому научились, когда писали этот пост, и надеемся, что вы получите то же самое.

Оригинальный пост от @theNeomatrix369 и @shelajev !