Advantages

box

Small Footprint

Ahead-of-time compiled applications use only a fraction of the resources required by the JVM which means they cost less to run and improve utilization.

box

Improved Security

Native image reduces attack surface area by removing all unused classes, method, and fields from your application and libraries while making reverse engineering difficult by converting Java bytecode into native machine code.

box

Fast Startup

Ahead-of-time compiled applications start in milliseconds and deliver peak performance with no warmup.

box

Ideal for Containers

Compact native executables can be packaged in lightweight container images for more secure, faster, and efficient deployments.

box

Framework Support

Native Image is supported by all the leading microservice frameworks including Micronaut, Spring, Helidon, and Quarkus.

box

Polyglot Programming

Native Image compiled applications can use GraalVM polyglot embedding to leverage non-Java language libraries and capabilities.

Performance Comparison

Execution time in ms
RSS in MBs

Native Image at Scale

Alibaba, a global e-commerce company, uses Native Image to compile microservices into native executables, which results in faster startup times and rapid horizontal scaling. For example, compiling for a typical microservice application which uses Spring Boot, Tomcat, and MySQL-Connector with GraalVM Native Image decreased startup time from 60 sec to just 3.

Alibaba case

Java Framework Support

Simplify Native Image usage with integrated support from leading frameworks

Micronaut

Micronaut is a modern full-stack application framework for microservices and serverless functions. Micronaut eliminates Java reflection so that applications start fast, run fast, and enjoy reduced memory requirements. With out-of-the-box support for Native Image, applications can be easily compiled into native executables, packaged in containers, and deployed.

Learn more

Spring

Spring is an application framework and inversion of control container, providing a productive programming and configuration model for Java applications. The Spring Native project provides support for compiling Spring Boot applications into native executables using GraalVM Native Image.

Learn more

Helidon

Helidon is a collection of Java libraries for creating microservices-based applications that run on a fast web core powered by Netty. With integrated GraalVM Native Image support, Helidon applications can be compiled ahead-of-time into small native executables, packaged in containers, and deployed.

Learn more

Quarkus

Quarkus is an open source, full-stack, Kubernetes-native Java framework made for Java virtual machines (JVMs) and native compilation with GraalVM Native Image, designed to optimize Java making it efficient for containers, cloud, and serverless environments.

Learn more

Developing with Native Image

Maven logo Gradle logo

Native Maven/Gradle Plugin

Maven and Gradle plugins for Native Image make building, testing, and running Java applications as native executables a breeze. Learn more →

Gradle Native Image plugin declaration
JUnit logo

JUnit Testing

Native Image support for JUnit generates native binaries that include tests, application classes, and required libraries so that tests can be run against native machine code executables. Learn more →

JUnit 5 testing support
Debugging icon

Native Debugging

Generate native executables with debug information and use GDB just like you would for C and C++ applications. For an even better experience, use the GraalVM tools for Java in VS Code to set breakpoints, attach to a native executable, inspect values, and step through code the same way you would when debugging a Java app on the JVM. Learn more →

Native Image debugging
Docker logo

Docker

Native executables are ideal for containers given their size and simplicity. With static, "mostly static", and dynamic linking options along with support for both glibc and musl C libraries, native executables can be deployed on virtually any lightweight base image. Learn more →

Docker images

Try GraalVM Native Image

Connect with us