С таким претенциозным названием Oracle представляет то, что она считает Святым Граалем виртуальных машин. Но о чем мы говорим?
GraalVM — это экосистема, основанная на JDK 8 (Java Development Kit 8), которая включает универсальную виртуальную машину собщейсредой выполнения.
Почему он такой особенный? GraalVM запускает многоязычные приложения, в которых сочетаются сильные стороны разных языков программирования. Это может быть, например, веб-приложение, такое как Предсказатель погоды, где JavaScript, Ruby и R работают вместе без каких-либо компромиссов — конфликтов — и с очень высокой производительностью.
В настоящее время поддерживаются следующие языки: JavaScript, Python, Ruby, R, языки на основе JVM, такие как Java, Scala, Kotlin, и языки на основе LLVM, такие как C иС++.
Как экосистема, GraalVM представляет собой набор компонентов, каждый из которых имеет свою особую функцию:
Грааль
Динамический компилятор Just-In-Time (JIT), повышающий эффективность и скорость работы приложений.
Полиглот API Graal
API, объединяющий языки программирования в общую среду выполнения.
SDK Graal
Полезный API для интеграции языков Graal и настройки нативных образов.
JVM Oracle HotSpot
Среда выполнения для языков на основе JVM.
ОСОБЕННОСТИ GraalVM
Это решение Oracle открывает новые перспективы в обработке данных, содержащихся в базах данных Oracle 12c и MySQL, в дополнение к возможности запуска многоязычных приложений.
Используя многоязычный движок (MLE) базы данных, можно выполнять модули Node.js, написанные на JavaScript, в двух запросах и процедурах БД.
GraalVM также может ускорять приложения Java с помощью новой технологии компиляции Just In Time и, что немаловажно, компилировать байт-код Java в машинный код.
Он содержит функцию, позволяющую создавать собственные образы для существующих приложений на основе JVM. В процессе генерации образа используется статический анализ для поиска любого кода, который может быть доступен из основного метода Java, а затем выполняется компиляция с опережением времени (AOT).
Полученный собственный двоичный файл содержит всю программу в виде машинного кода для ее немедленного выполнения.
Эти функции позволяют вам создать собственную функцию Java, как описано в этом руководстве. Или вы можете связать другие нативные программы и включить компилятор необязательно.
GraalVM может также запускать приложения JavaScript, написанные для Node.js, заменяя V8 (движок Google JavaScript, также используемый Node.js). Основные преимущества этой операции заключаются, во-первых, в многоязычных приложениях (например, в библиотеках Java, R или Python), затем в запущенных процессах с большими конфигурациями кучи и сборщиками мусора Java и, наконец, в использовании возможностей взаимодействия GraalVM для определить структуры данных в C/C++, чтобы поделиться ими с JavaScript. Эти функции позволяют использовать существующие библиотеки Java или платформы Java, такие как Spark, процессами Node.js. Кроме того, вы можете использовать R или Python, например, для обработки данных непосредственно из приложения JavaScript.
3 НАПРАВЛЕНИЯ ПРИМЕНЕНИЯ INTERLOGICA
В настоящее время вInterlogicaмы тестируем потенциал этой технологии в трех основных направлениях, поскольку Twitter уже использует GraalVM в производстве с превосходными результатами, как они утверждают. .
- Первый этап касается оптимизации использования ресурсов и повышения производительности существующих приложений Java;
- Во-вторых, создание многоязычных решений с максимальным использованием сильных сторон каждого языка, особенно в таких областях, как наука о данных и машинное обучение, где Python занимает львиную долю, а C/C++ по-прежнему сохраняется. иметь лучшие выступления.
- Возможность создавать машинные коды для их немедленного выполнения внутри встроенных устройств и IoT (Интернета вещей), где ресурсы меньше, и важно, чтобы код оставался минимальным, для экономия памяти и времени выполнения.
GraalVM все еще содержит некоторые ошибки молодости, что вполне понятно, поскольку версия 1.0 все еще становится серебряной.
Потенциал этого продукта по-прежнему остаетсявысоким,и открывает новые сценарии в разработке множества программных решений.
Первоначально опубликовано на www.interlogica.it 20 августа 2018 г.