GraalVM Native Image has long supported Java 8 code, so the earliest JDK commonly used for native compilation is JDK 8. GraalVM’s documentation also shows support for Java 11 and Java 17 in current distributions, but that is about the bundled JDK/runtime options rather than the minimum Java version that can be compiled to a native executable.

Practical answer

  • Earliest JDK: Java 8 / JDK 8.
  • Common modern support: Java 11 and Java 17 in GraalVM distributions.
  • Native Image target: a standalone native executable built from Java bytecode, not a JVM-specific output.

What this means

If your question is about “what source/bytecode level can Native Image handle,” the safe answer is JDK 8. If you mean “what JDK versions are officially included in today’s GraalVM releases,” then the docs point to 11 and 17.

One nuance

GraalVM itself has evolved over time, and support depends on the GraalVM version you are using. For older projects, JDK 8 is the usual baseline; for newer setups, you should match the application’s JDK level to the GraalVM release notes and supported runtime matrix.

TL;DR: JDK 8 is the earliest commonly supported baseline for native compilation with GraalVM.