TornadoVM injects itself deep into the JVM through the JVMCI interface, which means simply opening the project in an IDE and pressing Run will not work out of the box. Every launch configuration must carry the correct module path, a set ofDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Deepak-Sangle/TornadoVM/llms.txt
Use this file to discover all available pages before exploring further.
--add-exports directives, native library references, and the TornadoVM runtime property bindings. The two officially supported launch strategies — the tornado wrapper script and the java @tornado-argfile argfile approach — both solve this problem, but the argfile approach is the friendlier option for IDE users because the flags live in a plain text file the IDE can reference directly.
Why TornadoVM Needs Special IDE Setup
TornadoVM hooks into the JVM using JVMCI (Java VM Compiler Interface), which requires several non-standard JVM options that ordinary application launchers do not set.Module System
TornadoVM ships as a set of named Java modules (
tornado.runtime, tornado.annotation, tornado.drivers.opencl, etc.) that must be placed on the --module-path at launch time.Native Libraries
GPU backends rely on native shared libraries (
libtornado-opencl.so, libtornado-cuda.so). The JVM must find these via -Djava.library.path.Graal Exports
The Graal-based JIT compiler used by TornadoVM requires dozens of
--add-exports and --add-opens flags to access internal JDK packages.Runtime Bindings
Several
-Dtornado.load.* system properties wire together the runtime, annotation processor, and task-graph engine at startup.Build Approaches: Tornado Wrapper vs Argfile
Before diving into IDE-specific steps, it is important to understand the two ways to launch a TornadoVM application.- tornado wrapper
- java @tornado-argfile
The
tornado script is a Python/shell wrapper that constructs the full java command for you, adding every required flag automatically.| Aspect | tornado Wrapper | java @tornado-argfile |
|---|---|---|
| Build tool | Make | Maven |
| IDE support | Limited | Excellent |
| Flags visibility | Hidden in wrapper | Explicit in argfile |
| CI/CD | Traditional scripts | Maven-native |
| Flexibility | Simplified | Full control |
IntelliJ IDEA
IntelliJ is the primary recommended IDE for TornadoVM development. Themake intellijinit target generates pre-configured run configurations automatically.
Install IntelliJ IDEA
Download and install the latest IntelliJ IDEA Community Edition. After installation, increase the maximum heap memory to at least 2 GB via Help → Change Memory Settings (or follow the JetBrains guide).
Import and Configure the Project
Open the TornadoVM directory as a Maven project. Then activate the required Maven profiles under View → Tool Windows → Maven:
graal-jdk-21opencl-backendcuda-backend(if building CUDA support)
- Project SDK is set to a valid JDK 21 (OpenJDK 21 or GraalVM JDK 21).
- Language level is set to 21 for both the project and every module.
Build TornadoVM and Generate Run Configs
Before IntelliJ can run anything, TornadoVM must be compiled and the environment sourced. Open a terminal in the project root:IntelliJ will automatically detect the generated configurations from the
.build/ directory. You will see TornadoVM-Build and TornadoVM-Tests entries under Run → Edit Configurations → Python.Obtain and Apply the TornadoVM Java Flags
For your own application run configurations, retrieve the full set of flags:This outputs the complete
java invocation. Copy everything from -server to the end. Then in IntelliJ go to Run → Edit Configurations → Application → Add new configuration and paste the flags into the VM Options field.Install Required Plugins
Go to Preferences → Plugins → Browse Repositories and install:
- Eclipse Code Formatter — formats code according to the TornadoVM Eclipse XML style.
- Save Actions — triggers formatting automatically on save.
- Python Plugin (optional) — required if you want to run
TornadoVM-Build/TornadoVM-Testsconfigurations. - CheckStyle-IDEA (optional) — enforces the TornadoVM code-style rules.
Configure the Code Formatter
After installing Eclipse Code Formatter:
- Go to File → Settings → Other Settings → Eclipse Code Formatter.
- Select Use the Eclipse code formatter.
- Load the TornadoVM formatter:
./scripts/templates/eclipse-settings/Tornadovm_eclipse_formatter.xml. - Click Apply.
- Go to Settings → Other Settings → Save Actions.
- Enable Activate save actions on save and Activate save actions in shortcut.
- Check Reformat file.
Configure CheckStyle (Optional)
- Go to File → Settings → Tools → CheckStyle.
- Click + to add a new configuration.
- Set the description to
TornadoVM Checkstyle. - Choose Use a local Checkstyle file and point to
tornado-assembly/src/etc/checkstyle.xml. - Click Next → Finish and enable the new configuration.
Eclipse
Eclipse users can configure the TornadoVM code formatter automatically using the provided Python script.Set Up the Formatter
From the project root, run:This script imports
scripts/templates/eclipse-settings/Tornadovm_eclipse_formatter.xml into your Eclipse workspace preferences.VS Code
VS Code support relies on the Maven for Java extension combined with a manually configuredlaunch.json.
Install Extensions
Install the Extension Pack for Java from the VS Code Marketplace, which includes Maven support, debugging, and test runners.
IDE Support Comparison
Feature comparison across IDEs
Feature comparison across IDEs
| Feature | IntelliJ IDEA | Eclipse | VS Code |
|---|---|---|---|
| Auto-generated run configs | ✅ via make intellijinit | ❌ Manual | ❌ Manual |
| Code formatter integration | ✅ Eclipse Code Formatter plugin | ✅ Native | ⚠️ Limited |
| Save-on-format | ✅ Save Actions plugin | ✅ Built-in | ✅ Format on save |
| Maven profile selection | ✅ Maven tool window | ✅ Maven integration | ✅ Maven extension |
| Debugger support | ✅ Full | ✅ Full | ✅ Full |
| CheckStyle integration | ✅ Plugin | ✅ Plugin | ⚠️ Limited |
| Python script runner | ✅ Python plugin | ⚠️ Manual | ⚠️ Manual |