Clancy Merrick
Clancy Merrick

Reputation: 1017

Could someone please explain the differences between Graal, GraalVM, Truffle & SubstrateVM?

I know these technologies are all related but could someone please explain what each one is used for and how they fit together?

Upvotes: 7

Views: 2772

Answers (1)

BoriS
BoriS

Reputation: 982

Oversimplification:

  • Graal - Java bytecode compiler. Can be used just in time (as part of a JVM) or ahead of time.

  • SubstrateVM - other things (runtime) needed to actually run ahead-of-time compiled Java bytecode without a JVM. This powers the "native-image" command of GraalVM.

  • Truffle - framework for implementing languages as AST interpreters which can be just-in-time compiled using graal. Some notable languages implemented are JavaScript, Ruby, R and LLVM bitcode.

  • GraalVM - most of these technologies packaged together in order to support different use cases, for example: running JVM programs (i.e. anything that compiles to Java bytecode) using Graal as the JIT compiler for better peak performance, ahead-of-time compiling JVM programs for fast startup and low memory footprint, running fast dynamic languages (JS, R, Ruby) that can interoperate without overhead, and so on.

Upvotes: 4

Related Questions