Oracle has set out on a mission to create a universal virtual machine that can support multiple languages while providing consistent performance, tooling and configuration. The company announced GraalVM 1.0, a virtual machine designed to accomplish that mission with high performance and interoperability with no overhead when building polyglot apps.
According to the company, most virtual machines today only support specific languages or a very small set of languages. “Compilation, memory management, and tooling are maintained separately for different languages, violating the ‘don’t repeat yourself’ (DRY) principle. This leads not only to a larger burden for the VM implementers,” the GraavlVM team wrote in a post.
GraalVM allows objects and arrays to be used by foreign languages without having to convert them into different languages first. For example, this tool would allow Node.js code to access the functionality of a Java library, or to call a Python routine from within Java. With this flexibility, programmers will be able to use whatever language they think is best suited to the task they are trying to complete, Oracle explained.
This first release will allow developers to run JVM-based languages such as Java, Scala, Groovy, or Kotlin; JavaScript; LLVM bitcode; and experimental versions of Ruby, R, and Python. It can run on its own, be embedded as part of platforms or run inside databases.
The core installation provides developers with a language-agnostic debugger, profiler, and heap viewer. Oracle is encouraging third-party developers to use the instrumentation API or the language-implementation API to make tools that will further improve the GraalVM ecosystem. According to the company, it envisions “GraalVM as a language-level virtualization layer that allows leveraging tools and embeddings across all languages.”
“This first release is only the beginning. We are working on improving all aspects of GraalVM; in particular the support for Python, R and Ruby. GraalVM is an open ecosystem and we encourage building your own languages or tools on top of it. We want to make GraalVM a collaborative project enabling standardized language execution and a rich set of language-agnostic tooling,” Oracle said in a statement announcing the virtual machine.