
В начале декабря 2025 года вышла стабильная версия открытого проекта TornadoVM 2.0.0 для запуска Java на гетерогенном оборудовании: CPU, GPU и FPGA. Исходный код проекта выложен на GitHub под лицензией MIT.
TornadoVM — это плагин к OpenJDK и другим дистрибутивам JDK (например, GraalVM, Red Hat Mandrel, Amazon Corretto, Microsoft OpenJDK, Azul Zulu), который позволяет разработчикам автоматически запускать программы Java на гетерогенном оборудовании. TornadoVM нацелен на устройства, совместимые с OpenCL, PTX и Level-Zero, которые включают в себя многоядерные процессоры, выделенные графические процессоры (Intel, NVIDIA, AMD), интегрированные графические процессоры (Intel HD Graphics и ARM Mali) и FPGA (Intel и Xilinx).
Версия TornadoVM 1.0 вышла в декабре 2023 года. В ней появился новый API для размещения объектов вне кучи и коллекций массивов, улучшенная обработка внутреннего байт-кода, поддержка большего количества математических операций в OpenCL/PTX/SPIR-V, 16 векторных типов данных для float/double/int, поддержка драйвера Mesa Rusticl OpenCL, улучшение порядка устройств по умолчанию на основе максимального размера потока, обновление программы установки, а также значительно доработана документация проекта. В начале июля 2025 года вышла версия TornadoVM 1.1.1.

Основные изменения и доработки в TornadoVM 2.0.0:
исправлены ранее обнаруженные ошибки и баги, включая фиксы, специфичные для OpenCL и Nvidia PTX и изменения в CUDA 13;
доработана документация, включая обновлённые инструкции по сборке для запуска на оборудовании RISC‑V;
оптимизировано повторное использование выделенных буферов для пакетной обработки;
улучшена производительность для обработки с использованием динамической реконфигурации;
проведён рефакторинг динамической реконфигурации;
появились новые функции API;
встроенная поддержка типов данных INT8 для Nvidia PTX и OpenCL,
поддержка вывода compressed oops "coops";
экземпляры собственных массивов TornadoVM с опцией zero-copy и сегментами памяти shallow memory.
поддержка преобразования FP32 в FP16 для всех поддерживаемых бэкендов.
поддерживаются байтовые и полуплавающие массивы в локальной памяти для всех бэкендов.
