{"slug": "tornadovm-7-enables-gpu-native-workloads-from-java-applications", "title": "TornadoVM 7 Enables GPU-Native Workloads From Java Applications", "summary": "TornadoVM released version 7.3, an open-source heterogeneous GPU programming framework that lets Java applications offload code to multi-core CPUs and GPUs, with the backends now using the Foreign Function & Memory (FFM) API in place of JNI and the experimental JVMCI dependency removed. The release adds an optimized CUDA backend supporting Nvidia's cuTile programming model via a new TileContext, direct calls to CUDA libraries such as cuBLAS and CUTLASS from within TornadoVM TaskGraphs, equivalent Apple MXL library access, and multi-GPU execution. TornadoVM sources all compiler metadata through a reflection + ASM + Unsafe layer on JDKs 21, 25, 26 and 27, and integrates with Quarkus, Lang4j, Flink and Spring AI.", "body_md": "TornadoVM, an open-source [heterogeneous GPU programming framework for Java](https://github.com/beehive-lab/TornadoVM) has reached version 7.3, a major milestone for the project.\n\nInfoQ previously covered the project in [December 2025](https://www.infoq.com/news/2025/12/tornadovm-20-gpu-llm/) and in [2022](https://www.infoq.com/articles/java-performance-tornadovm/).\n\nTornadoVM automatically accelerates Java programs on multi-core CPUs and GPUs. Rather than replacing existing JVMs, it works alongside them and provides a rich GPU programming ecosystem in Java that you can use with any mainstream JDK distribution such as OpenJDK, Graalvm, Temurin, or Zulu.\n\nIt offloads Java code to hardware backends, manages memory between the Java heap and accelerators, and runs the resulting compute kernels. This makes it a useful building block for modern cloud and machine learning workloads.\n\nDuring development, TornadoVM compiles the source Java code to OpenCL and Apple Metal backends. The idea is that you can develop locally on your laptop and use the hardware available locally, and then deploy into a server that has Nvidia GPUs, and achieve major performance improvements - a form of \"Write Once, Run Anywhere\" for modern ML workloads.\n\nVersion 7 brings several architectural changes. The backends now use the Foreign Function & Memory (FFM) API in place of the Java Native Interface (JNI). The experimental JVM Compiler Interface (JVMCI) dependency has also been removed. According to the team, TornadoVM now sources \"all compiler metadata through a reflection + ASM + Unsafe layer\" which is the single, uniform path on every supported JDK (21, 25, 26 and 27).\n\nThe release also deepens integration with the Nvidia ecosystem through an optimized CUDA backend. This includes support for the cuTile programming model (via a new TileContext) and the ability to call CUDA libraries such as cuBLAS and CUTLASS directly from within TornadoVM [TaskGraphs](https://www.tornadovm.org/cuda-for-java). Developers can swap JIT-generated kernels for CUDA library calls, or chain the two together, depending on their performance and portability needs. Similarly, TornadoVM adds the same functionality for Apple's MXL library again via the hybrid API. Finally, support for multi-GPU execution has been added.\n\nNot every Java computation benefits from offloading. The best candidates are data-parallel workloads, such as loops with no dependencies between iterations, because their iterations can run in parallel on the accelerator.\n\nOne of the goals of recent TornadoVM versions is to produce an idiomatic JVM environment for accessing the libraries that Nvidia have been tuning for different hardware platforms. The aim is for Java developers to tap into things like Linear Algebra, Fast Fourier Transforms (for Signal Analysis), Deep Neural Networks and hand-optimized matrix multiplication for sparse matrices. TornadoVM has library integrations with Quarkus, Lang4j, Flink, Spring AI and others and is also available through SDKMan.\n\nFor example, consider the integration of Apache Flink with TornadoVM - the main idea is that the developer writes a standard query as they normally would with the Table API. A configuration flag is used to indicate that this query should potentially be accelerated on a GPU.\n\nThen, when the computation reaches the task manager, the framework checks if there is a GPU available in the node it is executing on and, if so, it connects to a library provider - which analyzes the intermediate representation (IR) of the query to see if the computation is actually suitable for GPU execution.\n\nIn total, TornadoVM offers four ways to program Nvidia GPUs as a Java programmer - Firstly, the parallel API which is really just an annotation that annotates a loop, and provides a hint for the compiler that this loop can be potentially paralyzed. This simple API did not prove to be sufficient in the long-term to get the desired performance for production applications, so additional APIs were added - such as the kernel context API and the already-mentioned TileContext.\n\nAlongside the 7.3 release, the TornadoVM team introduced [jitLLM](https://www.tornadovm.org/jitllm) v2.0, its next-generation Java AI inference engine built on TornadoVM. The team positions jitLLM as a direct competitor to llama.cpp and Ollama in performance, and it ships as a single JAR file.\n\nBoth TornadoVM and jitLLM are being commercialized through [Beestream.ai](https://www.beestream.ai), a spin-off founded by the TornadoVM team.\n\nFurther details can be found on the TornadoVM site, and also in recent videos from Devoxx Belgium, including: \"[Tap into the NVIDIA Ecosystem from Java with TornadoVM's Hybrid API](https://www.youtube.com/watch?v=6SPnBmQrYEk)\".", "url": "https://wpnews.pro/news/tornadovm-7-enables-gpu-native-workloads-from-java-applications", "canonical_source": "https://www.infoq.com/news/2026/10/tornadovm-7-gpu/?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global", "published_at": "2026-10-21 03:00:00+00:00", "updated_at": "2026-10-21 03:18:32.924794+00:00", "lang": "en", "topics": ["artificial-intelligence", "machine-learning", "ai-infrastructure", "developer-tools", "ai-chips"], "entities": ["TornadoVM", "Nvidia", "CUDA", "cuBLAS", "CUTLASS", "Apple", "Apache Flink", "Quarkus"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/tornadovm-7-enables-gpu-native-workloads-from-java-applications", "markdown": "https://wpnews.pro/news/tornadovm-7-enables-gpu-native-workloads-from-java-applications.md", "text": "https://wpnews.pro/news/tornadovm-7-enables-gpu-native-workloads-from-java-applications.txt", "jsonld": "https://wpnews.pro/news/tornadovm-7-enables-gpu-native-workloads-from-java-applications.jsonld"}}