TornadoVM es un marco de código abierto diseñado para acelerar programas Java delegando tareas de computación intensiva a CPUs multinúcleo y GPUs. En lugar de reemplazar la Máquina Virtual Java (JVM) estándar, opera junto con distribuciones existentes como OpenJDK, GraalVM, Temurin o Zulu. El marco gestiona la memoria entre el heap de Java y los aceleradores de hardware, compilando el código fuente Java en backends de OpenCL y Apple Metal. Esta arquitectura permite a los desarrolladores mantener un flujo de trabajo de "Escribir una vez, ejecutar en cualquier lugar", donde el código puede desarrollarse en hardware local y desplegarse en servidores de producción equipados con GPUs de alto rendimiento de Nvidia.
La versión 7.3 introduce cambios arquitectónicos significativos, siendo el más notable la transición de la Java Native Interface (JNI) a la API Foreign Function & Memory (FFM) para la comunicación con el backend. El proyecto también eliminó su dependencia de la interfaz experimental JVM Compiler Interface (JVMCI), pasando a una ruta uniforme para los metadatos del compilador utilizando una combinación de capas de reflexión, ASM y Unsafe a través de los JDK compatibles (del 21 al 27). Estos cambios tienen como objetivo proporcionar un entorno más estable e idiomático para que los desarrolladores de Java accedan a bibliotecas de alto rendimiento.
Para profundizar la integración con el ecosistema de Nvidia, la actualización incluye un backend CUDA optimizado que admite el modelo de programación cuTile y llamadas directas a bibliotecas como cuBLAS y CUTLASS. Los desarrolladores pueden optar por intercambiar los kernels generados por JIT por estas llamadas de biblioteca optimizadas manualmente, dependiendo de sus necesidades específicas de rendimiento o portabilidad. Si bien no todas las computaciones en Java son adecuadas para la delegación, el marco está optimizado para cargas de trabajo de datos paralelos —como bucles sin dependencias entre iteraciones—, lo que permite a las aplicaciones Java aprovechar el álgebra lineal, las transformadas rápidas de Fourier y el procesamiento de redes neuronales profundas directamente desde la JVM.
