Fact-checked by Grok 2 weeks ago

GraalVM

GraalVM is a high-performance (JDK) distribution developed by Labs, featuring the for just-in-time () optimization and ahead-of-time (AOT) native image to produce standalone executables that start instantly, consume minimal memory, and enhance application efficiency across cloud-native and embedded environments. Originating from research at Labs in on advanced dynamic beginning around 2011, GraalVM evolved from the Graal project—a -based replacement for the traditional C++ —and reached its first production-ready release, version 19.0, in May 2019, supporting Java 8 and 11 with initial polyglot capabilities. The platform supports polyglot programming, allowing seamless interoperability between languages such as , (via GraalJS), (via GraalPy), , , and , all running on a shared that optimizes execution through partial and framework abstractions. Key features include Native Image technology, which statically analyzes and compiles applications into compact binaries without a JVM at , reducing startup time by up to 50x (from seconds to milliseconds) and by up to 5x compared to traditional JVMs; this is particularly beneficial for , serverless functions, and . GraalVM integrates with popular Java frameworks like and via and plugins, and its community edition is based on while the enterprise version offers advanced optimizations and support; as of September 2025, version 25 aligns with JDK 25, decoupling from the strict six-month Java release cadence for more flexible updates. Widely adopted by organizations including (now X), Alibaba, and for production workloads, GraalVM continues to advance through open-source contributions on , emphasizing security enhancements like reduced attack surfaces in native executables and compatibility with tools such as for testing.

Goals and Overview

Primary Objectives

GraalVM aims to serve as a universal that supports just-in-time () compilation, ahead-of-time (AOT) compilation, and for and other programming languages, enabling high-performance execution across diverse environments. This multifaceted approach allows developers to choose the optimal execution mode based on application needs, with leveraging the for dynamic optimizations during runtime, AOT producing native executables for instant startup without warmup, and facilitating and scripting in supported languages. By integrating these capabilities into a single runtime, GraalVM seeks to unify the execution model traditionally fragmented across language-specific virtual machines. A core objective of GraalVM is to reduce , including CPU and memory usage, while accelerating application performance through advanced compiler optimizations such as , aggressive inlining, and partial escape analysis. These techniques enable native executables that use a fraction of the resources required by traditional JVM-based applications, often achieving up to 100x faster startup times and significantly lower peak memory footprints. For instance, by eliminating the need for JIT warmup and minimizing garbage collection overhead with tools like the G1 collector, GraalVM optimizes for efficiency in cloud-native and resource-constrained deployments. GraalVM's design emphasizes seamless polyglot programming, aiming to eliminate overhead in inter-language calls by providing a shared where components from different languages can interact with near-native speed. This is achieved through the framework, which allows embedding languages like or directly into applications, enabling fine-grained access to host resources without performance penalties from context switching or marshalling. The objective is to foster hybrid applications where developers can leverage the strengths of multiple languages within a cohesive . Motivated by the need for a more modular and extensible runtime, GraalVM is engineered to replace or augment traditional JVMs like , offering pluggable components such as the Graal compiler that can integrate with existing ecosystems. This modularity supports custom configurations, including build-time linking for compact binaries and compatibility with standard Java tools like JFR and JMX, ultimately aiming to evolve the JVM landscape toward greater flexibility and maintainability.

Key Benefits

GraalVM's Native Image technology enables ahead-of-time (AOT) compilation of applications into standalone executables, dramatically reducing startup times—up to 100 times faster in some cases, such as from 3.6 seconds to under 100 milliseconds for serverless functions—and minimizing memory footprints by eliminating JVM overhead during runtime. These improvements make GraalVM particularly suitable for cloud-native and serverless environments, where rapid scaling and low-latency responses are critical, allowing applications to deploy more efficiently without the warmup delays typical of traditional JVMs. In just-in-time () mode, the delivers higher peak performance compared to the , with optimizations such as partial enabling up to 50% faster execution in select benchmarks by more effectively eliminating unnecessary object allocations and improving scalar replacement. This enhanced throughput supports demanding workloads while maintaining compatibility with standard applications. By lowering CPU utilization, GraalVM reduces infrastructure costs; for instance, Twitter's adoption resulted in approximately 10% decreased CPU usage across thousands of JVM instances without requiring code changes, leading to substantial savings at scale. GraalVM enhances developer productivity through its polyglot capabilities, allowing seamless interoperability between languages like , , and via the framework, which provides direct object sharing and method invocation without the overhead of traditional foreign function interfaces (FFI). This enables developers to embed and extend applications with multiple languages effortlessly, streamlining polyglot development workflows.

History and Development

Origins

The origins of GraalVM lie in the Virtual Machine project, launched at Laboratories in the mid-2000s to construct a entirely implemented in , fostering a meta-circular design that simplified , , and extension compared to traditional C++-based VMs. This initiative emphasized approachability for developers and researchers, enabling self-hosting and introspection features that blurred the lines between application code and VM internals. was acquired by on January 27, 2010, transferring the Maxine project to Oracle Labs and integrating it into broader ecosystem efforts. Building on Maxine, Graal research commenced around 2011 at Labs, targeting the creation of a high-performance just-in-time () written in to serve as a viable alternative to the JVM's longstanding C++ codebase, which posed maintenance and extensibility challenges. The initial Graal prototype integrated with both Maxine and via the JVM Compiler (JVMCI), allowing Java libraries to contribute optimizations and enabling finer-grained analysis of library code during compilation. From 2012 to 2015, development prioritized modularity and extensibility, evolving the project from research prototypes into deployable tools suitable for JVM integration. Key advancements included a graph-based (IR) that supported declarative, extensible optimizations, separating concerns like control-flow modeling from backend to enhance reusability across VMs. This modular architecture facilitated easier experimentation with advanced features, such as partial evaluation and profile-guided optimizations, while maintaining compatibility with HotSpot's infrastructure. In 2016, Labs open-sourced core Graal components under the GNU General Public License version 2 with Exception, releasing the and related modules on to encourage community contributions and broader adoption in the ecosystem.

Major Milestones

was launched as a distinct project by Labs in 2018 with the release of version 1.0 in April, integrating the with the framework to provide polyglot programming capabilities across languages like , , , , and on a single . This integration enabled seamless interoperability between languages without performance overhead, marking a significant advancement in multi-language runtime support. A pivotal milestone occurred in May 2019 with the release of GraalVM 19.0, the first production-ready version that introduced a stable Native Image tool for ahead-of-time (AOT) compilation of applications into standalone executables. This release stabilized the experimental features from earlier versions, allowing developers to deploy lightweight binaries with reduced startup times and memory footprints, facilitating broader adoption in cloud-native and microservices environments. In October 2021, GraalVM 21.3 added official support for Java 17 LTS, enhancing enterprise adoption through improved Native Image performance, including better peak throughput and reduced compilation times for AOT builds. This update also incorporated for native executables, underscoring GraalVM's maturation as a reliable platform for production workloads. GraalVM underwent a major evolution in 2023 with the adoption of JDK-aligned versioning, starting with GraalVM for JDK 21 as a (LTS) release in September, synchronizing its cadence with OpenJDK's six-month cycle. Concurrently, renamed the Enterprise Edition to GraalVM and made it freely available under the GraalVM Free Terms and Conditions (GFTC), eliminating previous per-processor licensing costs and broadening accessibility for production use. This licensing shift, effective from June 2023, included support for JDK 17 and JDK 20 onward, promoting wider community and commercial deployment. By September 2025, GraalVM 25 was released, emphasizing enhancements to Native Image technology such as faster build times and expanded platform support, while detaching from strict ecosystem alignment to prioritize standalone native compilation across diverse runtimes. This milestone reflected GraalVM's strategic pivot toward broader applicability beyond Java-centric environments, with GraalVM for JDK 24 marking the final integration within Java SE products.

Editions

Community Edition

The GraalVM Community Edition is the open-source distribution of GraalVM, built on and designed for developers seeking a free, modifiable . It enables the compilation and execution of applications in and other languages, supporting both just-in-time (JIT) compilation via the Graal compiler and ahead-of-time (AOT) native image generation. Licensed under the GNU General Public License version 2 with the Classpath Exception, the Community Edition permits free use, modification, and redistribution without royalties, aligning with 's licensing model to foster broad adoption in non-commercial and open-source projects. This licensing ensures compatibility with the ecosystem while allowing integration into diverse software distributions. The edition incorporates core components such as the Graal compiler for optimized execution, Native Image for creating standalone executables, and the framework for building polyglot applications, though it provides baseline performance optimizations without proprietary enhancements. These features support development of high-performance applications across multiple languages, including , , , and , via the Polyglot API. GraalVM Community Edition binaries are available for download from the official GitHub repository at graalvm/graalvm-ce-builds, offering pre-built installers and container images for , macOS, and Windows operating systems on both and architectures. Installation is straightforward via archive files, SDKMAN!, or , with support for the latest versions such as JDK 25 as of late 2025. Development of the Community Edition is community-driven, with contributions welcomed through GitHub pull requests to the oracle/graal repository, enabling enhancements from industry, academia, and individual developers. Updates follow a flexible release schedule, decoupled from OpenJDK's six-month cadence since September 2025, including critical patch updates for security, but without dedicated commercial support; users rely on public forums, mailing lists, and issue trackers for assistance. Compared to Oracle GraalVM, the Community Edition offers solid baseline performance suitable for most use cases, though it lacks advanced tuning options available in the proprietary variant.

Oracle GraalVM

GraalVM is distribution of the GraalVM high-performance runtime, licensed under the GraalVM Free Terms and Conditions (GFTC) since June 2023 for free use, including in production, and free redistribution. It is built upon the and provides access to advanced features and support as part of the Java SE Universal Subscription. This model supports enterprise customers seeking integrated support within ecosystem, particularly for deploying applications on . A key distinction of Oracle GraalVM lies in its proprietary optimizations for Native Image, which enable the of Java applications into standalone executables with enhanced performance characteristics not available in the Community Edition. For instance, it includes (PGO), which can accelerate startup times and improve throughput by leveraging profiles to refine decisions. Additionally, advanced techniques, such as improved points-to and reporting, aid in reducing image size and through more precise identification of used paths. Oracle GraalVM also incorporates the G1 garbage collector option for Native Images on supported platforms, further optimizing resource usage for long-running applications. Beyond performance enhancements, Oracle GraalVM features closed-source additions tailored for needs, including advanced and diagnostics for and in production environments. A notable capability is the automatic generation of (SBOM) in CycloneDX format during Native Image builds, facilitating scanning, compliance auditing, and assessments. These elements integrate seamlessly with services, supporting secure deployment of and serverless functions with extended logging and tracing tools. While compatible with the same platforms as the Community Edition (such as , Windows, and macOS on x64 and architectures), Oracle GraalVM extends diagnostics through proprietary tools for deeper runtime insights. In 2023, GraalVM emerged as the successor to GraalVM Enterprise Edition, marking a strategic pivot toward emphasizing Native Image for cloud-native workloads over earlier focuses on just-in-time () compilation enhancements. This evolution aligns with growing demands for low-latency, resource-efficient applications in containerized and serverless environments, positioning GraalVM as a cornerstone for cloud development offerings. It shares core components, like the Graal compiler and Truffle framework, with the Community Edition, as explored in the Core Components section.

Core Components

Graal Compiler

The Graal Compiler is a dynamic just-in-time (JIT) compiler written entirely in Java, designed to transform Java bytecode into optimized machine code at runtime. It serves as a drop-in replacement for the HotSpot JVM's traditional C2 compiler, integrating seamlessly through the Java Virtual Machine Compiler Interface (JVMCI), which allows it to be invoked by the HotSpot VM without requiring modifications to the JVM core. This architecture enables Graal to leverage the mature HotSpot infrastructure while introducing advanced compilation techniques tailored for modern workloads. Graal supports a range of sophisticated optimizations to enhance , including speculative optimizations that assume certain program behaviors based on profiles and revert via deoptimization if assumptions fail. For instance, it employs partial to eliminate unnecessary object allocations by speculatively determining object lifetimes. Additionally, profile-guided inlining decisions enable aggressive and polymorphic inlining, where calls are replaced with their bodies based on observed patterns, reducing overhead and exposing further optimization opportunities. Deoptimization mechanisms ensure robustness by allowing the to fall back to slower but safer execution paths when speculative assumptions are invalidated, maintaining correctness across diverse execution scenarios. The compiler's modular design facilitates partial evaluation, where portions of the program are specialized based on known inputs during , and supports tiered compilation pipelines that progress from to lightweight C1 and finally to full Graal optimization. This tiered approach allows for quick initial execution while reserving intensive optimizations for frequently executed "hot" code paths, balancing startup time and peak performance. Furthermore, Graal integrates with the framework to provide JIT , using a shared graph-based that enables high-performance execution of polyglot applications by optimizing across language boundaries without custom per-language backends.

Native Image

Native Image is a key technology in GraalVM that enables ahead-of-time (AOT) compilation of , along with its dependencies, into a standalone binary. This process transforms the application into a self-contained program that runs directly on the host operating system without requiring a (JVM) at runtime. The core of Native Image relies on static analysis, particularly points-to analysis, to determine all reachable classes, methods, fields, and objects from the application's entry points. This analysis identifies the exact code and data needed during execution, excluding any unused components to produce a lean binary. Operating under a —where all possible code paths and dependencies are assumed to be fully known at build time—the tool performs this , linking the optimized code with a lightweight runtime substitute for the full JDK. Native Image delivers substantial efficiency gains, particularly in startup time and resource consumption. Executables start in milliseconds—often under 10 ms for simple applications—contrasting with the seconds required for JVM warm-up, making it ideal for cloud-native deployments like and functions-as-a-service. Peak memory usage is also dramatically lower; for instance, a basic compiled as a native image peaks at approximately 7.6 MB of resident set size (), representing a small fraction of typical JVM requirements. To accommodate dynamic Java features that challenge static analysis, such as , dynamic loading, , JNI calls, and creation, users configure the build via files in format. These files explicitly declare elements like reflective accessors or interfaces, ensuring their inclusion without violating the or bloating the binary. In GraalVM 25, released in 2025, Native Image saw enhancements to points-to analysis precision through the default enablement of Whole-Program Sparse (WP-SCCP), which improves and can reduce binary sizes by better propagating constants across the program. Support for dynamic proxies was refined via advanced that preserves essential names guided by metadata and annotations. The Graal Compiler contributes to these optimizations by generating high-performance during the AOT phase.

Truffle Framework

The framework is an open-source library designed for implementing high-performance interpreters for programming languages on the (JVM). It enables developers to build language runtimes as modular Java libraries that interpret programs using self-modifying Abstract Syntax Trees (ASTs), which are automatically optimized and just-in-time () compiled by the Graal compiler. This AST-based approach allows interpreters to start with a simple, high-level structure that evolves through runtime profiling and deoptimization, achieving near-native performance without manual low-level optimizations. Key features of include partial evaluation, which specializes the interpreter code based on observed program behavior to eliminate unnecessary computations, and speculative optimizations that assume certain conditions (such as type stability) and fall back via deoptimization if assumptions fail. These mechanisms facilitate the transfer of optimizations across polyglot programs by sharing common node types and leveraging the Graal compiler's interprocedural analysis. Languages implemented with Truffle can thus benefit from cross-language inlining and , enhancing overall system performance in multi-language environments. Truffle supports metacircular execution of JVM languages through "Java on Truffle," also known as , which reimplements the as a Truffle-based interpreter. This allows to run interpretively on Truffle ASTs, enabling seamless polyglot integration where Java acts as both host and guest language, with full access to Truffle's optimization infrastructure. To simplify development, Truffle includes domain-specific languages (DSLs) for generating interpreter components; notably, the Truffle Bytecode DSL, introduced in GraalVM 24.2, automates the creation of optimizing bytecode interpreters from high-level operation definitions, reducing while preserving Truffle's self-optimization capabilities.

Polyglot API and Tooling

The Polyglot API, part of the org.graalvm.polyglot package in the GraalVM SDK, enables Java applications to embed and interact with multiple guest languages supported by GraalVM. It provides classes such as Context for managing the global runtime state of installed languages and Engine for controlling shared resources like the JIT compiler across multiple contexts. Developers create a Context instance using Context.create(String...) to specify permitted languages, then execute guest code via methods like Context.eval(Source, String mimeType), which returns a Value object representing the result. Interoperability between languages is handled through the Value interface, allowing seamless passing of objects, primitives, and functions across language boundaries without explicit marshalling, as the API abstracts the underlying Truffle-based representations. The framework in GraalVM, built on the Truffle API (com.oracle.truffle.api.instrumentation), supports and of polyglot execution by allowing tools to attach listeners to (AST) nodes and execution events. Tools implement TruffleInstrument to access an Instrumenter from the language environment, enabling event notifications for node execution, source section coverage, and allocation tracking across all languages in a polyglot context. This framework facilitates AST visualization by exposing node structures for inspection and supports guest language breakpoints through SourceSectionFilter configurations, where instruments can suspend execution at specific source locations in any Truffle-implemented language. Although not directly based on JVMTI, it extends Java-level for low-overhead, language-agnostic , as detailed in foundational work on polyglot support. GraalVM provides specialized tools for analyzing and debugging polyglot applications. The Ideal Graph Visualizer (IGV) is a desktop application for examining Graal graphs generated during polyglot execution, particularly useful for Truffle language developers to inspect intermediate representations from ASTs to . Users enable graph dumps via JVM options like -Dgraal.Dump=:1 and view them in IGV to analyze optimization phases, interactions, and performance bottlenecks in mixed-language scenarios. For , GraalVM integrates with the DevTools , allowing languages to be inspected using Chrome's developer tools for setting breakpoints, stepping through code, and examining variables in guest languages like or . Launch applications with --inspect to expose a endpoint (default port 9229), then connect via Chrome at the provided devtools:// for polyglot-aware sessions. Introduced in GraalVM 22.0, polyglot isolates enable running guest languages in fully isolated contexts to enhance and prevent between executions. Each isolate operates as a separate Native Image process with its own garbage collector and compiler, configurable via Engine options like --engine.SpawnIsolate=true. This feature requires language-specific isolate artifacts (e.g., js-isolate for ) on the and supports scoped host access policies to limit interactions, making it suitable for sandboxed environments. Available initially for in GraalVM for JDK 21 and later, it extends to other languages like from version 24.1, providing a robust for secure polyglot . As of GraalVM 25.0, is supported as a polyglot isolate named wasm-isolate.

Language Support

JVM Languages

GraalVM serves as a for the standard Java VM, providing full compatibility for applications written in across supported JDK versions including 17, 21, and 25. This includes support for the (JPMS), enabling modularized applications to run without modifications, as well as recent language features like virtual threads introduced in JDK 21 for lightweight concurrency. Through integration with the Java Virtual Machine Compiler Interface (JVMCI), GraalVM delivers optimized just-in-time (JIT) compilation for popular JVM languages such as , Kotlin, and , leveraging the Graal compiler to achieve superior peak performance over traditional optimizations by reducing object allocations and enabling aggressive inlining. and other JVM languages similarly run on GraalVM with enhanced efficiency, particularly benefiting from partial that identifies non-escaping objects to minimize heap allocations and thereby reduce garbage collection pauses. GraalVM's Native Image capability extends compatibility to JVM applications by compiling them ahead-of-time into standalone native executables, while accommodating dynamic behaviors like through explicit registration for classes implementing the Serializable interface. This ensures proper handling of and classes during deserialization, making it suitable for cloud-native deployments of JVM-based code.

Truffle-Based Languages

The Truffle framework enables the implementation of high-performance interpreters for various programming languages on GraalVM, allowing them to execute efficiently alongside other languages through partial evaluation and . These Truffle-based languages are primarily non-JVM runtimes, focusing on extensibility and polyglot integration without relying on interpretation. Key implementations include GraalJS for , GraalPy for , TruffleRuby for , FastR for , as well as support for and LLVM bitcode, with experimental languages like SimpleLanguage demonstrating the framework's versatility. GraalJS provides a high-performance, ECMAScript-compliant runtime for , supporting the full ECMAScript 2025 specification, verified through the test262 suite and compatibility tables. It offers compatibility with applications, passing a significant portion of unit tests, and achieves V8-comparable performance after warmup in JVM mode, where peak execution speeds approach those of the in benchmarks like and JetStream. In native mode, GraalJS emphasizes fast startup times suitable for serverless environments, though with slightly lower peak performance than JVM mode. GraalPy serves as a compliant Python 3.12 runtime with strong compatibility, including for a of popular libraries such as and for tasks, as well as partial integration with and Hugging Face Transformers. It delivers approximately 4x faster execution than CPython on the official Python Performance Benchmark Suite when JIT-compiled, leveraging GraalVM's optimizations for numerical computations and object-oriented code. Additionally, GraalPy enables rapid startup in Native Image mode, reducing initialization overhead for embedded use cases compared to traditional CPython interpreters. TruffleRuby implements a high-performance Ruby runtime compatible with MRI 3.3, including support for web frameworks like Rails and many gems with C extensions, aiming for full MRI compatibility over time. It optimizes Ruby's dynamic features through Truffle's AST interpretation and Graal compilation, providing faster execution for concurrency-heavy applications and Rails workloads compared to standard MRI, with reduced in polyglot scenarios. TruffleRuby's design facilitates seamless integration with other Truffle languages while maintaining Ruby's idiomatic semantics. FastR offers a GNU R-compatible runtime based on R 4.3, supporting base R packages and select extensions for statistical computing, with high performance derived from GraalVM's compilation for vectorized operations and loops common in ; FastR entered in 2024. It executes R scripts faster than vanilla GNU R in compute-intensive tasks, such as matrix operations, while enabling polyglot workflows with languages like for mixed analytics pipelines. FastR's Truffle-based interpreter ensures low-latency REPL interactions and efficient handling of R's functional paradigms. GraalVM supports through GraalWasm, a compliant with WebAssembly 2.0 and extensions like WASI, allowing execution of WASM modules compiled from languages such as or in format without browser dependencies. This enables portable native extensions in polyglot applications, with performance optimizations for and via 's object model. For LLVM bitcode, the Sulong interpreter executes code from languages like , C++, and , transforming bitcode into Truffle ASTs for Graal optimization, though it requires pre-compilation to LLVM rather than direct source support. Experimental languages, such as the SimpleLanguage, illustrate Truffle's ease of implementation for custom interpreters, often achieving near-native speeds post-compilation.

Features and Capabilities

Embedding Languages

GraalVM's Polyglot API facilitates the integration of languages into host applications, such as those written in , by leveraging the Polyglot to establish isolated execution environments for . A Polyglot encapsulates the global runtime state for all permitted languages within it, enabling the evaluation of scripts or expressions while maintaining separation from the host application's state. By default, each context operates with its own isolated engine, which can be shared across multiple contexts to optimize resource usage like caching, ensuring that compiled is reused without reparsing sources. This isolation supports secure embedding, particularly in scenarios where untrusted must run without compromising the host. To enable data exchange between and languages, GraalVM employs the API, which binds values seamlessly without the overhead of explicit marshalling. The interface represents polyglot values accessible via language-agnostic operations, supporting primitive types, objects, and proxies that allow code to invoke methods or access fields directly. For instance, a can pass objects to a language like , where public methods and fields become available as members, facilitating bidirectional through polyglot bindings that exchange symbols between environments. This approach ensures efficient, transparent value passing, as languages can directly manipulate values embedded in the application. Configuration of the Polyglot occurs during its creation, allowing fine-tuned control over language options and execution constraints. Using the .Builder, developers can specify permitted languages, enable features like script engines for dynamic evaluation, and impose resource limits such as or allocation to prevent excessive consumption by code. By default, the restricts access to sensitive functionalities like file I/O, but these can be adjusted—such as by setting allowIO(true) or using @HostAccess annotations—to balance and functionality, with inner contexts inheriting outer limits for nested executions. policies, including ISOLATED for basic restrictions and UNTRUSTED for enhanced mitigation of untrusted code risks, further enforce these configurations at the context level. When building native executables that embed guest , GraalVM's Native Image tool incorporates the necessary components through reachability to support dynamic features at . Developers generate files, such as reachability-metadata.[json](/page/JSON) placed in META-INF/native-image/<group-id>/, to register , resources, and proxies required for polyglot interactions, ensuring that runtimes and code caches are included without manual intervention. This enables the polyglot engine to operate within a dedicated Native Image isolate, providing VM-level isolation and efficient execution of embedded guest code in ahead-of-time compiled binaries.

Polyglot Programming

GraalVM enables polyglot programming by allowing applications to integrate multiple programming languages within a single runtime environment, leveraging the framework to facilitate direct without the overhead typically associated with foreign function interfaces. This approach supports seamless value passing and function calls across languages, such as a application invoking functions or code calling methods, achieved through a standardized polyglot that exposes objects, methods, and primitives uniformly. The protocol ensures zero-overhead interop by executing all code in the same memory space, eliminating marshalling costs and enabling the Graal compiler to optimize cross-language interactions as if they were monolingual. In practice, developers can evaluate guest language code from a host language using APIs like Context.eval in , for instance, creating a JavaScript array from with polyglot.eval("js", "[1,2,42,4]") and accessing its elements directly. This bidirectional capability extends to more complex scenarios, such as Python scripts invoking Java libraries for performance-critical computations or JavaScript defining domain-specific languages (DSLs) embedded in applications for configuration scripting. A notable use case is in pipelines, where backend services integrate for statistical analysis or for , as demonstrated by the Dutch National Police's collaboration between data scientists and developers running code within environments to process large datasets efficiently. Cross-language handling of exceptions, threads, and I/O is unified through the Polyglot API, which propagates errors as PolyglotException instances that include stack traces from both host and guest languages, allowing centralized error management. Threads are managed via context binding, with options to enforce single-threaded execution for languages like to avoid concurrency issues, while I/O operations use shared streams configurable through Context builders (e.g., allowIO(true)). For optimization, GraalVM shares compilation units across languages via the Graal compiler's partial evaluation, enabling techniques like inlining and devirtualization of interop calls; engine modes such as --engine.Mode=throughput maximize profiling to achieve peak performance by compiling shared hot paths once for all involved languages.

Releases

Version History

GraalVM's development began with its initial release in April 2018 as 1.0, an experimental polyglot supporting and select JVM languages alongside early implementations for , , , and via the framework. This focused on demonstrating high-performance across languages but was not intended for production use, with non-JVM language support marked as experimental. The project advanced to its first production-ready release with GraalVM 19.0 on May 9, 2019, introducing stable Native Image capabilities for of Java applications into standalone executables, alongside mature polyglot interoperability. Subsequent updates in the 19.x series, such as 19.0.2 in June 2019, addressed compilation performance and bug fixes to solidify its foundation for enterprise adoption. In the JDK 17 era, GraalVM 21.3 arrived on October 19, 2021, as a release aligned with 17, providing full 17 compatibility and enhanced Native Image performance optimizations. This version marked a milestone for production deployments requiring LTS stability, with ongoing quarterly updates. Following in October 2022, GraalVM 22.3 introduced enhancements to the framework, including improved polyglot runtime efficiency and support for JDK 19 features like virtual threads in preview. From 2023 onward, GraalVM transitioned to JDK version-based numbering to align with 's six-month release cadence, starting with GraalVM for JDK 21 on , 2023, an LTS distribution incorporating 21 innovations such as virtual threads and . This shift facilitated closer integration with upstream JDK developments. More recent releases include GraalVM for JDK 24.0.2 on July 15, 2025, delivering fixes and refinements via the quarterly Critical . GraalVM for JDK 25 followed on September 16, 2025, featuring Native Image precision improvements for better resource usage and experimental advanced capabilities. The October 2025 Critical , GraalVM 25.0.1, was released on October 21, 2025, incorporating fixes from the corresponding update. GraalVM maintains a quarterly release rhythm for Critical Patch Updates on the third Tuesday of January, April, July, and October, ensuring security patches and minor enhancements across active branches without introducing new features.
Key ReleaseDateMajor Innovations
1.0April 2018Experimental polyglot support
19.0May 2019Production Native Image
21.3October 2021JDK 17 LTS alignment
22.3October 2022 enhancements, JDK 19 support
JDK 21September 2023JDK 21 LTS features
JDK 24.0.2July 2025CPU security updates
JDK 25September 2025Native Image precision improvements
25.0.1October 2025Critical Patch Update with security fixes

Support Lifecycle

GraalVM's support lifecycle is closely aligned with the underlying (JDK) release cadence, providing maintenance through security patches, bug fixes, and critical updates for active versions. (LTS) releases, such as those based on JDK 21 and JDK 25, receive extended maintenance for over eight years, encompassing Premier Support for approximately five years followed by three years of Extended Support, during which security patches and bug fixes are delivered. For example, GraalVM for JDK 21 offers Premier Support until September 2028 and Extended Support until September 2031. Non-LTS versions of GraalVM are supported for six months under Premier Support, aligning with the JDK's biannual feature release schedule, after which they transition to indefinite Sustaining Support without further fixes. This shorter window ensures users adopt the latest features promptly, with support ending upon the next major release. Critical Patch Updates (CPUs) are issued quarterly for all active GraalVM branches—on the third of , , , and —to address vulnerabilities and critical issues. For instance, the 2025 CPU applied to JDK 25-based GraalVM, incorporating fixes from the corresponding update. Support policies differ between editions: the Community Edition adheres to the OpenJDK timeline, providing free updates solely for the latest JDK version with approximately six months of security support per release, while the GraalVM Edition extends coverage through , including additional enterprise-specific patches available via My for entitled customers. In 2025, announced deprecation notices detaching GraalVM from its Java SE Products after JDK 24, marking the final inclusion of the experimental compiler and discontinuing Native Image as an technology within those products, with a shift in focus toward Native Image advancements via OpenJDK's Project Leyden and reduced emphasis on Java JIT in favor of the default C2 JIT. Legacy versions remain eligible for updates through Support channels.

References

  1. [1]
    GraalVM
    GraalVM is an advanced JDK with ahead-of-time Native Image compilation.Download Oracle GraalVMIntroductionDocumentationGetting Started with Oracle ...Graal-VM
  2. [2]
    oracle/graal: GraalVM compiles applications into native ... - GitHub
    GraalVM is a high-performance JDK distribution that compiles your Java applications ahead of time into standalone binaries.
  3. [3]
    Announcing GraalVM 19.0. First production release - Medium
    May 9, 2019 · Therefore, we today officially release GraalVM 19.0. The core download contains the following components: Java 8 SE compliant Java Virtual ...
  4. [4]
    [PDF] GraalVM - Oracle
    • Graal compiler team, Oracle Labs Zurich. • Research area: dynamic ... Get Started! Documentation https://www.graalvm.org/ · https://medium.com/graalvm. Open ...
  5. [5]
    [PDF] Native Image: GraalVM Enterprise Edition vs. GraalVM Community ...
    GraalVM Enterprise Edition has been under development in Oracle Labs for 10 years. It has a dedicated support and development staff and is a strategic ...<|control11|><|separator|>
  6. [6]
    GraalVM Release Calendar
    Consult the GraalVM Community Roadmap on GitHub to discover what features are currently in development as well as what to expect from upcoming releases.
  7. [7]
    Detaching GraalVM from the Java Ecosystem Train - Oracle Blogs
    Sep 15, 2025 · History: ... In 2022, the Oracle Labs GraalVM team announced a plan to align the development of GraalVM technologies with that of Java.<|control11|><|separator|>
  8. [8]
    [PDF] GraalVM Twitter case study - Oracle
    Dec 11, 2019 · The adoption of Oracle GraalVM, on the other hand, lowered Twitter's CPU utilization around 10 percent, usually not feasible without changing ...
  9. [9]
    Introduction - GraalVM
    Introduction to GraalVM. GraalVM accelerates application performance while consuming fewer resources—improving application efficiency and reducing IT costs.Missing: history | Show results with:history
  10. [10]
    Why GraalVM?
    GraalVM offers low resource usage, fast startup, improved security, and compact packaging by compiling Java applications ahead of time.Missing: goals objectives
  11. [11]
    GraalVM: Run Programs Faster Anywhere by Thomas Wuerthinger ...
    Jan 19, 2019 · Our vision was to create a single VM that would provide high performance for all programming languages, therefore facilitating communication ...
  12. [12]
    [PDF] A race of two compilers: Graal JIT vs. C2 JIT. Which one offers better ...
    Scalar Replacement: nice optimizations by Graal JIT (e.g. Partial Escape Analysis). Virtual Calls: better optimized by Graal JIT (e.g. megamorphic call sites).
  13. [13]
    [PDF] Investigating and Reducing the Energy Consumption of Software
    Nov 15, 2021 · 5.4 Energy consumption when tuning JIT settings on HOTSPOT, GRAALVM ... GRAALVM was able to be 50% faster than HOTSPOT-8 and J9 and consuming the ...
  14. [14]
    Polyglot Programming - GraalVM
    The protocol allows GraalVM to support interoperability between any combination of languages without requiring them to know of each other. For more details, ...Running Polyglot... · Start Language C · Passing Options To Language...
  15. [15]
    GraalVM: Reimagining the Future of Polyglot Programming and ...
    Oct 26, 2025 · The Truffle framework allows different languages to interoperate with minimal overhead. This isn't your typical FFI (Foreign Function Interface) ...Missing: productivity | Show results with:productivity
  16. [16]
    Maxine: An Approachable Virtual Machine For, and In, Java
    Aug 6, 2025 · Maxine VM [6, 18] is a meta-circular VM, for Java, written in Java. Initially developed by Sun and Oracle Labs, it is now maintained as an open ...
  17. [17]
    Extending the graal compiler to optimize libraries
    The Graal compiler is an optimizing just-in-time compiler written in Java that works with both the Maxine VM and the HotSpot VM. It allows Java libraries to ...
  18. [18]
    Graal IR: An Extensible Declarative Intermediate Representation
    We present an intermediate representation (IR) for a Java just in time (JIT) compiler written in Java. It is a graph-based IR that models both control-flow ...Missing: early | Show results with:early
  19. [19]
    [PDF] Exploring Aspects of Polyglot High-Performance Virtual Machine ...
    Graal compiler from the OpenJDK Graal project started in 2012, as a part of the Maxine VM project, with a goal to create an advanced compiler in high-level OOP ...
  20. [20]
    [PDF] Polyglot on the JVM with Graal - Oracle Labs
    Sep 20, 2016 · Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |. Open Source. • github.com/graalvm/. • graal-core: dynamic compiler ...Missing: announcement | Show results with:announcement
  21. [21]
    Oracle Releases GraalVM 1.0, a Polyglot Virtual Machine and Platform
    Apr 27, 2018 · Oracle has announced the 1.0 release of GraalVM, a polyglot virtual machine and platform. The initial release includes the capability to run Java and JVM ...Missing: Maxine | Show results with:Maxine
  22. [22]
    Oracle Ships GraalVM 1.0 To "Run Programs Faster Anywhere"
    Apr 18, 2018 · For the 1.0 release, they say the JVM-based language support is production ready while the R / Python / Ruby / LLVM support is considered ...
  23. [23]
    GraalVM 19.0: the Anticipated GA Release - InfoQ
    Jun 17, 2019 · Oracle has released the GA version of GraalVM 19.0, a polyglot virtual machine and platform created by Oracle Labs.
  24. [24]
    GraalVM 21.3 Supports Java 17 - InfoQ
    Nov 8, 2021 · Oracle Labs released GraalVM 21.3, featuring support for Java 17 and JDK Flight Recorder (JFR) for low-overhead production profiling of native Java executables.
  25. [25]
    GraalVM 21.3 is here: Java 17, Native Image performance updates ...
    Oct 19, 2021 · 21.3 is the last release of the year, which means that for GraalVM Community Edition it will keep receiving updates for the next 12 months.
  26. [26]
    Introducing the GraalVM Free License - Oracle Blogs
    Jun 13, 2023 · Oracle is making Oracle GraalVM for JDK 17, Oracle GraalVM for JDK 20, and subsequent releases available for free!
  27. [27]
    A New GraalVM Release and New Free License! - Medium
    Oracle GraalVM. It is available for JDK 17 and JDK 20 and released under the GraalVM Free Terms and ...
  28. [28]
    Oracle Shifts GraalVM Focus Away from Java, Highlights Native ...
    Oracle has released GraalVM for JDK 25, introducing new features for its native image technology, while confirming that future development ...Missing: milestone | Show results with:milestone
  29. [29]
    Frequently Asked Questions - GraalVM
    How is GraalVM Licensed? Oracle GraalVM is licensed under GraalVM Free Terms and Conditions (GFTC) including License for Early Adopter Versions. Subject to ...Missing: change 2023<|control11|><|separator|>
  30. [30]
  31. [31]
    Download GraalVM
    A popular tool that helps you install and switch between JDKs, including GraalVM. Oracle GraalVM is free to use in production and free to redistribute.Missing: sourced 2016 GPL
  32. [32]
    GraalVM Community Edition - endoflife.date
    Oct 22, 2025 · It can be downloaded from the graalvm-ce-builds GitHub repository. More information is available on the GraalVM Community Edition website. You ...
  33. [33]
    GraalVM Community
    The GraalVM project embraces an open and inclusive community. We welcome users and contributors alike. Also, we support projects that extend the platform.Contribute to GraalVM · GraalVM Project Advisory Board · Academic Publications
  34. [34]
  35. [35]
  36. [36]
    Get Started with Oracle GraalVM Enterprise Edition
    Here you will find information about downloading and installing GraalVM Enterprise, running basic applications with it, and adding support for its accompanying ...
  37. [37]
    Embed an SBOM in a Native Executable to Identify Its Dependencies
    Native Image embeds a Software Bill of Materials (SBOM) into the resulting binary by default. (Not available in GraalVM Community Edition.) An SBOM is an ...
  38. [38]
    Oracle GraalVM Downloads
    Oracle GraalVM for JDK 24 was the final version of Oracle GraalVM licensed and supported as part of Oracle Java SE products and in the Oracle Cloud Service ...<|control11|><|separator|>
  39. [39]
    Announcing Oracle GraalVM for JDK 21
    Sep 19, 2023 · With these latest results, we can see that Oracle GraalVM Native Image can provide faster startup time, reduced memory requirements, and lower ...
  40. [40]
    Graal Compiler - GraalVM
    The Graal JIT compiler provides optimized performance for applications running on a Java Virtual Machine (JVM) through unique approaches to code analysis and ...Missing: C2 50% faster<|separator|>
  41. [41]
    An intermediate representation for speculative optimizations in a ...
    An intermediate representation for speculative optimizations in a dynamic compiler. Authors: Gilles Duboscq. Gilles Duboscq. Johannes Kepler University Linz ...
  42. [42]
    An Optimization-Driven Incremental Inline Substitution Algorithm for ...
    Inlining is one of the most important compiler optimizations. It reduces call overheads and widens the scope of other optimizations.
  43. [43]
    An Empirical Study on Deoptimization in the Graal Compiler - DROPS
    Jun 16, 2017 · In this paper, we analyze the behavior of the Graal dynamic ... Thomas Würthinger, Christian Wimmer, Andreas Wöß, Lukas Stadler ...
  44. [44]
    Native Image - GraalVM
    Native Image is a technology to compile Java code ahead-of-time to a binary—a native executable. A native executable includes only the code required at run time ...Native Image Basics · Guides · Reachability Metadata · Build Configuration<|control11|><|separator|>
  45. [45]
    Points-to Analysis Reports - GraalVM
    Points-to Analysis Reports. The points-to analysis produces two kinds of ... Oracle GraalVM · Oracle Developers · Oracle Help Center · Oracle Labs · Brand ...Call tree · Object Tree · Reachability Report
  46. [46]
    Reachability Metadata - GraalVM
    Providing the builder with correct and exhaustive reachability metadata guarantees application correctness and ensures compatibility with third-party libraries ...Tracing Agent · Native Image compatibility guide · Experimental Agent OptionsMissing: Clojure | Show results with:Clojure
  47. [47]
    Oracle GraalVM 25.0.1
    Oracle GraalVM 25.0.1. (2025-10-21). This is the October 2025 Oracle Critical Patch Update (CPU) for GraalVM Community Edition.Missing: milestone | Show results with:milestone
  48. [48]
  49. [49]
    [PDF] Truffle: a self-optimizing runtime system
    Oct 26, 2012 · Truffle: A Self-Optimizing Runtime System. Christian Wimmer. Thomas Würthinger. Oracle Labs christian.wimmer@oracle.com thomas.wuerthinger ...
  50. [50]
    Truffle Language Implementation Framework - GraalVM
    We provide extensive Truffle API documentation. Start by looking at the TruffleLanguage class, which you should subclass to start developing a language. Truffle ...Truffle Options · Truffle Strings Guide · Profiling Truffle Interpreters
  51. [51]
    Espresso - GraalVM
    Using GraalVM, you can run Java applications normally on HotSpot, in Native Image, and on Truffle. Espresso, also known as Java on Truffle, is an implementation ...Enhanced HotSwap · Running Demo Applications · Continuation API · FAQs
  52. [52]
    Package com.oracle.truffle.api.bytecode - GraalVM
    The Bytecode DSL is a DSL and runtime support component of Truffle that makes it easier to implement bytecode interpreters.
  53. [53]
    GraalVM for JDK 24
    Mar 18, 2025 · Optimized encoding negotiation for ASCII-compatible encodings. Find a complete list of updates and bug fixes in the TruffleRuby changelog.Graalvm For Jdk 24.0. 1 · Native Image · Improvements And New...
  54. [54]
    org.graalvm.polyglot (GraalVM SDK Java API Reference)
    The GraalVM SDK polyglot API allows to embed Graal languages in Java applications. Create a Context and evaluate guest language code.
  55. [55]
    Context (GraalVM SDK Java API Reference)
    A polyglot context represents the global runtime state of all installed and permitted languages. Permitted languages are initialized lazily, when they are used ...
  56. [56]
    Package com.oracle.truffle.api.instrumentation - GraalVM
    The instrumentation API provides a way to introspect and inject behavior into interpreters written using the Truffle framework. To adopt instrumentation ...<|control11|><|separator|>
  57. [57]
    TruffleInstrument (GraalVM Truffle Java API Reference)
    The Instrumenter available in the provided environment allows the instrument instance to bind listeners for execution and source events, as well as node ...
  58. [58]
    [PDF] Fast, Flexible, Polyglot Instrumentation Support for Debuggers and ...
    Mar 29, 2018 · He is working on Graal and Truffle. Contact him at christian. humer@oracle.com. Thomas Würthinger is a Senior Research Director at Oracle Labs.<|control11|><|separator|>
  59. [59]
    Ideal Graph Visualizer - GraalVM
    Ideal Graph Visualizer (IGV) is a developer tool to analyze compilation graphs and investigate performance issues, viewing intermediate representation graphs.Get Started · Dump Graphs Using a Ruby... · Browse Graphs
  60. [60]
    Chrome Debugger - Oracle Help Center
    GraalVM supports debugging of guest language applications and provides a built-in implementation of the Chrome DevTools Protocol.Missing: integration | Show results with:integration
  61. [61]
    Embedding Languages - GraalVM
    GraalVM can run polyglot applications written in any language implemented with the Truffle language implementation framework. These languages are henceforth ...Host Access · Build Native Executables... · Polyglot IsolatesMissing: Instrumentation JVMTI<|control11|><|separator|>
  62. [62]
    Sandboxing - GraalVM
    For memory accesses where masking is not applicable, GraalVM inserts speculative execution barrier instructions to prevent attackers from crafting speculative ...
  63. [63]
    GraalVM as a Java Virtual Machine
    GraalVM is based on the Java HotSpot Virtual Machine, so any application that runs on the Java HotSpot Virtual Machine will also on GraalVM.Missing: origins Maxine Sun Microsystems
  64. [64]
    Build Java Modules into a Native Executable - GraalVM
    GraalVM Native Image supports the Java Platform Module System, introduced in Java 9, which means you can convert a modularized Java application into a native ...
  65. [65]
    22.3.3 - GraalVM
    This change brings better startup performance and memory footprint while retaining good JIT-compiled performance. For example, the development time actions ...Missing: benefits | Show results with:benefits
  66. [66]
    Advantages for Java - GraalVM
    GraalVM offers faster performance, lower resource usage, reduced costs, and no code changes for better performance, with 1.55x speedup over OpenJDK 8.Missing: primary objectives
  67. [67]
    Graal Languages - GraalVM
    GraalVM provides runtimes for JavaScript, Python, and a number of other languages. GraalVM's polyglot capabilities make it possible to mix multiple programming ...Missing: JVM | Show results with:JVM
  68. [68]
    Frequently Asked Questions - GraalVM
    Compatibility. Is GraalJS compatible with the JavaScript language? GraalJS is compatible with the ECMAScript 2024 specification and is further developed ...Compatibility · Performance · Typeerror: Message Not...
  69. [69]
    GraalJS Compatibility
    JavaScript Modules. GraalJS supports modules as defined by ECMAScript 6 and later. Be aware that the support for this feature continues to increase. Be sure ...
  70. [70]
    GraalPy - Compatibility - GraalVM
    GraalPy is compatible with many packages for Data Science and Machine Learning, including the popular PyTorch, NumPy, and Huggingface Transformers.Missing: features performance
  71. [71]
    GraalPy - Documentation - GraalVM
    A primary goal is to support PyTorch, SciPy, and their constituent libraries, as well as to work with other data science and machine learning libraries from ...Missing: objectives | Show results with:objectives
  72. [72]
    GraalPy – A high-performance embeddable Python 3 runtime for Java
    GraalPy is a high-performance implementation of the Python language for the JVM built on GraalVM. GraalPy is a Python 3.11 compliant runtime.
  73. [73]
    TruffleRuby - Oracle Help Center
    TruffleRuby can run Rails and is compatible with many gems, including C extensions. However, TruffleRuby is not 100% compatible with MRI 3.0 yet. Please report ...
  74. [74]
    GraalVM R Runtime
    GraalVM provides a GNU-compatible R runtime to run R programs directly or in the REPL mode. It can run R code at unparalleled performance.Missing: features | Show results with:features
  75. [75]
    oracle/fastr: A high-performance implementation of the R ... - GitHub
    FastR is a high-performance implementation of the R programming language, built on GraalVM. FastR aims to be: efficient: executing R language scripts faster ...
  76. [76]
    GraalVM R Runtime Compatibility
    The GraalVM R runtime is based on GNU R and reuses the base packages. It is currently based on GNU R 4.0.3, and moves to new major versions of R as they become ...
  77. [77]
    GraalWasm - GraalVM
    WebAssembly 2.0 Support. Full WebAssembly 2.0 compatibility and support for many feature extensions, including WASI. speed icon. Portable Native Extensions ...
  78. [78]
    GraalVM LLVM Runtime
    The GraalVM LLVM runtime can execute programming languages that can be transformed to LLVM bitcode. This includes languages like C/C++, Fortran and others.
  79. [79]
    Implementing a New Language with Truffle - GraalVM
    The Truffle framework enables you to implement a programming language and run it efficiently on GraalVM. We provide extensive Truffle API documentation.
  80. [80]
    Context.Builder (GraalVM SDK Java API Reference)
    By default, every context has its own isolated engine. If multiple contexts are created from one engine, then they may share/cache certain system resources like ...
  81. [81]
    Value (GraalVM SDK Java API Reference)
    A Value represents a polyglot value, accessible with language-agnostic operations, from host or guest languages, and bound to a context.
  82. [82]
    Enterprise Sandbox Resource Limits - GraalVM
    A guest language might choose to create an inner context within the outer execution context. The limits are applied to the outer context and all inner contexts ...
  83. [83]
    Polyglot Programming
    ### Summary of Polyglot Programming in GraalVM
  84. [84]
    GraalVM Use Cases
    ... 10%-42% and reduce memory and CPU usage. Learn More. GraalVM Twitter usecase. Twitter, one of the most visible social networks, runs ~1,000s of JVMs in ...
  85. [85]
    PolyglotException (GraalVM SDK Java API Reference)
    A polyglot exception represents errors that contain Graal guest languages on the stack trace. In addition to the Java stack trace it also returns a polyglot ...Missing: O | Show results with:O
  86. [86]
    Optimizing Truffle Interpreters - GraalVM
    This document discusses tools for optimizing or debugging Truffle interpreters for peak temporal performance. Strategy. Run with a profiler to sample the ...Observing Compilations · Debugging Deoptimizations · Automatic Detection Of...
  87. [87]
    19.0.2 - GraalVM
    May 9, 2019 · This is a bug fix release for 19.0 and we recommend upgrading for all 19.0.x users. Java. Improved compilation performance of scheduler phase.
  88. [88]
    GraalVM 22.3 is here: JDK 19 builds, jlink support, new monitoring ...
    Oct 25, 2022 · Today we're releasing GraalVM 22.3! This release brings JDK 19 builds, jlink support, new monitoring features, new Native Image APIs, and more!
  89. [89]
    GraalVM for JDK 21 is here! - Medium
    Sep 19, 2023 · Today we are releasing GraalVM for JDK 21! This release brings many new GraalVM features, as well as Java 21 features.Missing: versioning | Show results with:versioning
  90. [90]
    Release Notes - Oracle GraalVM for JDK 24.0.2
    Mar 18, 2025 · This is the April 2025 Oracle Critical Patch Update (CPU) for Oracle GraalVM for JDK 24. This release contains fixes to security vulnerabilities.
  91. [91]
    Oracle Java SE Support Roadmap
    Sep 16, 2025 · GraalVM for JDK 24 was the final version of GraalVM licensed and supported as part of Oracle Java SE Products. Any entitled customers seeking ...Oracle Jdk And Openjdk... · End Of Public Updates Of... · Web Deployment Technology...Missing: history | Show results with:history
  92. [92]
    Oracle GraalVM - endoflife.date
    Oct 22, 2025 · Oracle GraalVM ; 25, 1 month and 2 weeks ago. (16 Sep 2025). Ends in 4 years and 11 months. (30 Sep 2030). Ends in 7 years and 11 months. (30 Sep ...<|control11|><|separator|>
  93. [93]
    Oracle GraalVM Release Calendar
    Starting in 2023, Oracle GraalVM will align with the six-month JDK release cadence. There will be two feature releases per year to support the latest JDK ...