The video on-demand of this session is available to logged in QCon attendees only. Please login to your QCon account to watch the session.

Session + Live Q&A

Level Up Your Java Performance with TornadoVM

Heterogeneous hardware such as Graphics Processing Units (GPUs) and Field Programmable Gate Arrays (FPGAs) are widely used for specific domains of applications such as Machine Learning, Data Science, Numerical Analytics and Fintech, due to the offer of a higher level of performance.

The increased performance, however, comes at the cost of programmability since different programming models and frameworks are required to program different classes of devices (GPUs, FPGAs, CPUs), thereby leading to code fragmentation. This makes the programmability of these devices more difficult to develop, and harder to understand and maintain, especially from high-level programming languages such as Java.

This talk will give an overview of the TornadoVM project, a parallel programming framework, and a Virtual Machine for transparently offloading Java programs onto GPUs and FPGAs. We will explain why and when it is beneficial to run on heterogeneous hardware. Besides, we will explain how developers can program and benefit from the GPUs and FPGAs processing power from Java using TornadoVM. Finally, we will give an overview regarding how TornadoVM compiles, optimizes and selects the best possible device for execution for different backends, totally transparent to the user. 

Main Takeaways

1 Find out about TornadoVM, a plugin for JDK that allows software developers to accelerate their Java applications by using heterogeneous devices.

2 Learn how to program and get performance benefits by accessing GPUs/FPGAs directly from Java via TornadoVM.

Juan, what is the focus of your work these days?

I'm a Research Fellow at the University of Manchester. I work in the Advanced Processor Technology Group (APT) at the University. We do research on new parallel programming models and ways to improve programmability for modern computer architectures, such as GPUs and FPGAs. We do research at the programming language level as well as the runtime system and compiler levels. One of the use cases we have is the TornadoVM, which is a high performance computing platform for the JVM. So Java developers can run their applications on heterogeneous hardware, ideally with minimal effort.

How would you describe the persona and the level of the target audience for your presentation?

I think the target audience is developers and software engineers that are interested in accelerating applications by using GPUs and FPGAs from Java, and not necessarily experts on parallel hardware. So these developers are interested in getting some hints about how this acceleration can be done from Java, where to start looking, and some ideas about how to program. My talk also targets developers who want to achieve better performance because they are running specific domains of applications, such as ML, DL, Fintech. These developers usually require high powered devices. And I think TornadoVM is a good target, if their applications are written in Java.

What do you want these people to walk away from your talk with?

I would like people to remember what TornadoVM is and the reasons to use it. Why are we creating this technology now?  What can we achieve? and how? Also, I would like people to remember that TornadoVM can offer a bit of extra performance for a specific domain of applications. So if your application is a good target for the device being used, you might get extra performance. Besides, I would like people to remember that TornadoVM is not a replacement of the existing Java VM, but rather a complement, in which developers can access heterogeneous hardware and increase performance for certain specific domains of applications like machine learning, deep learning, computer vision, and fintech, just to name a few.


Juan Fumero

Lead Architect of the TornadoVM Project & Research Fellow @OfficialUoM

Juan Fumero is a Research Fellow at the University of Manchester. His research topics are Heterogeneous High-Level Languages Virtual Machines, GPGPUs, and distributed computing. Currently, he is working as part of the TornadoVM project for bringing automatic GPU and FPGA JIT...

Read more
Find Juan Fumero at:


Monday Nov 1 / 01:10PM EDT (40 minutes)


Modern JVM Innovations


JavaJVMVirtual MachinesJava EEDevelopmentProgramming

Add to Calendar

Add to calendar


From the same track

Session + Live Q&A JVM

Cloud Native JVMs (Part 1): Cloud Native Compilation

Monday Nov 1 / 02:10PM EDT

JVMs power and run our applications and common infrastructure. JVM based languages (Java, Scala, Kotlin, Clojure, Groovy, JRuby, etc.) power dominant portions of most companies' compute footprint. And in the cloud, that same dominance continues. But JVMs, like other managed code...

Gil Tene

CTO @AzulSystems

Session + Live Q&A JVM

Understanding JIT Optimisations By Decompilation

Monday Nov 1 / 12:10PM EDT

How does the JIT compiler transform your code as it optimises it? We can try to understand what the compiler has done by looking at JIT logs, compiler data structures, and directly at the machine code, but these are all advanced options needing expert-level knowledge of compilers. How can we make...

Chris Seaton

Researcher (Senior Staff Engineer) @Shopify


Java 17: The Path, Features, Tips and Tricks Panel

Monday Nov 1 / 03:10PM EDT

Java 17 has arrived. With 14 new JEPs and thousands of updates, Java 17 delivers performance, stability, and security enhancements to continue to improve on the already solid platform. Java 17 is the latest long-term support (LTS) release under Java’s 6-month release cadence. Join our...

Simon Ritter

Deputy CTO @Azul

Kristen O'Leary

Senior Developer Relations Engineer @Google

Rory Preddy

Senior Cloud Advocate @Microsoft

View full Schedule