Реблог с Блог-сайта 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).
Я надеюсь, вам понравилось чтение, пожалуйста, не стесняйтесь делиться любыми конструктивными отзывами, чтобы мы могли улучшить материал для сообщества в целом. Мы многому научились, когда писали этот пост, и надеемся, что вы получите то же самое.