  Contemporary software often becomes vastly complex, and we are required to
use a variety of technologies and different programming languages for its
development. As interoperability between programming languages could cause high
overhead resulting in a performance loss, it is important to examine how a
current polyglot virtual machine with a compiler written in a high-level
object-oriented language deals with it. OpenJDK's Project Metropolis presented
the GraalVM, an open-source, high-performance polyglot virtual machine, mostly
written in Java. This paper presents GraalVM's architecture and its features;
furthermore, examining how it resolves common interoperability and performance
problems. GraalVM makes software ecosystem productive when combining various
programming languages, for example, Java, JavaScript, C/C++, Python, Ruby, R,
and others. The vital part of GraalVM is the Graal compiler written in Java,
which allows developers to maintain and optimize code faster, simpler, and more
efficient, in comparison to traditional compilers in C/C++ languages. Graal can
be used as a just-in-time (JIT) or as static, ahead-of-time (AOT) compiler.
Graal is an aggressively optimizing compiler implementing common compiler
optimizations, with emphasis on outstanding inlining and escape analysis
algorithms. This paper compares Graal with some of the best-specialized
competitors, and presents our results tested within an academic environment.
