GraalVM
A high-performance runtime supporting Java and JVM languages, JavaScript, Python, WebAssembly, and more. It can run standalone or embedded in OpenJDK / OracleJDK as well as Oracle Database and MySQL.
GraalVM
GraalVM
A high-performance runtime supporting Java and JVM languages, JavaScript, Python, WebAssembly, and more. It can run standalone or embedded in OpenJDK / OracleJDK as well as Oracle Database and MySQL.
Project Overview
GraalVM is a high performance JDK that speeds up the performance of Java and JVM-based applications and simplifies the building and running of Java cloud native services. The optimized compiler generates faster code and uses fewer compute resources, enabling microservices to start instantly.
GraalVM also provides runtimes for other languages such as JavaScript, Python, WebAssembly, and a number of other languages. Those runtimes can be efficiently and securely embedded in GraalVM's Java-based applications. Those polyglot capabilities make it possible to mix multiple programming languages in a single application while eliminating any foreign language interoperability costs.
Learn more and get started with GraalVM: graalvm.org
Thomas Wuerthinger is a researcher in Oracle Labs Switzerland. His research interests include Virtual Machines, Feedback-directed Runtime Optimizations, and Static Program Analysis. His current focus is the Graal project that aims at developing a new dynamic compiler for Java. Additionally, he is the architect of the Truffle self-optimizing runtime system, which uses partial evaluation for automatically deriving high-performance compiled code from AST interpreters.
Before joining Oracle Labs, he has worked on the IdealGraphVisualizer, the Crankshaft/V8 optimizing compiler, and the Dynamic Code Evolution VM. He received a PhD degree from the Johannes Kepler University Linz.
Publications
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
Conference Publication
GraalSP: Polyglot, Efficient, and Robust Machine Learning-Based Static Profiler
Conference Publication
Diagnosing Compiler Performance by Comparing Optimization Decisions
Andrej Pecimuth, David Leopoldseder, Petr Tůma
Conference Publication
Comparing Rapid Type Analysis with Points-To Analysis in GraalVM Native Image
Conference Publication
ML-SOCO: Machine Learning-Based Self-Optimizing Compiler Optimizations
Raphael Mosaner, David Leopoldseder, Wolfgang Kisling, Lukas Stadler, Hanspeter Moessenboeck
Conference Publication
TruffleTaint: Polyglot Dynamic Taint Analysis on GraalVM
Jacob Kreindl, Daniele Bonetta, Lukas Stadler, David Leopoldseder, Hanspeter Moessenboeck
Conference Publication
Automatic Array Transformation to Columnar Storage at Run Time
Lukas Makor, Sebastian Kloibhofer, David Leopoldseder, Daniele Bonetta, Lukas Stadler, Hanspeter Moessenboeck
Conference Publication
Constant Blinding on GraalVM
Matthias Neugschwandtner, Gergo Barany, Felix Berlakovich
Conference Publication
Toward Just-in-time and Language-agnostic Mutation Testing
Stefan Reschke, Toni Mattis, Fabio Niephaus, Robert Hirschfeld
Conference Publication
Lightweight On-Stack Replacement in Languages with Unstructured Loops
Matt D'Souza, Gilles Duboscq
Conference Publication
CompGen: Generation of Fast Compilers in a Multi-Language VM
Florian Latifi, David Leopoldseder, Christian Wimmer, Hanspeter Moessenboeck
Slides
Low-Overhead Multi-Language Dynamic Taint Analysis on Managed Runtimes through Speculative Optimization
Jacob Kreindl, Daniele Bonetta, David Leopoldseder, Lukas Stadler, Hanspeter Moessenboeck
Conference Publication
Language-Agnostic Integrated Queries in a Managed Polyglot Runtime
Filippo Schiavio, Walter Binder, Daniele Bonetta
Conference Publication
Compiler-Assisted Object Inlining with Value Fields
Rodrigo Bruno, Vojin Jovanovic, Christian Wimmer, Gustavo Alonso
Slides
GraalVM: introduction and experiences from the implementation of R and Python
Stepan Sindelar
In Proceedings
Example-based Live Programming for Everyone: Building Language-agnostic Tools for Live Programming With LSP and GraalVM
Fabio Niephaus, Patrick Rein, Jakob Edding, Jonas Hering, Bastian König, Kolya Opahle, Nico Scordialo, Robert Hirschfeld
In Proceedings
User-defined Interface Mappings for the GraalVM
Alexander Riese, Fabio Niephaus, Robert Hirschfeld
In Proceedings
Polyglot Code Finder
Jan Ehmueller, Alexander Riese, Hendrik Tjabben, Fabio Niephaus, Robert Hirschfeld
In Proceedings
Toward Presizing and Pretransitioning Strategies for GraalPython
Johannes Henning, Tim Felgentreff, Fabio Niephaus, Robert Hirschfeld
Slides
Towards Efficient, Multi-Language Dynamic Taint Analysis
Daniele Bonetta, Hanspeter Moessenboeck, Jacob Kreindl
Slides
Towards Efficient, Multi-Language Dynamic Taint Analysis
Daniele Bonetta, Hanspeter Moessenboeck, Jacob Kreindl
In Proceedings
GraalSqueak: Toward a Smalltalk-based Tooling Platform for Polyglot Programming
Fabio Niephaus, Tim Felgentreff, Robert Hirschfeld
In Proceedings
PolyJuS: A Squeak/Smalltalk-based Polyglot Notebook System for the GraalVM
Fabio Niephaus, Eva Krebs, Christian Flach, Jens Lincke, Robert Hirschfeld
Journal Publication
Live Multi-language Development and Runtime Environments
Fabio Niephaus, Tim Felgentreff, Tobias Pape, Robert Hirschfeld, Marcel Taeumel
In Proceedings
Dominance-Based Duplication Simulation (DBDS)
David Leopoldseder, Lukas Stadler, Thomas Wuerthinger, Josef Eisl, Doug Simon, Hanspeter Mössenböck
In Proceedings
Sulong, and Thanks For All the Bugs: Finding Errors in C Programs by Abstracting from the Native Execution Model
Manuel Rigger, Roland Schatz, Rene Mayrhofer, Matthias Grimmer, Hanspeter Moessenboeck
Conference Publication
Simulation-based Code Duplication for Enhancing Compiler Optimizations
David Leopoldseder
Slides
FastR update: Interoperability, Graphics, Debugging, Profiling, and other hot topics
Lukas Stadler
Conference Publication
Trace Register Allocation Policies: Compile-time vs. Performance Trade-offs
Josef Eisl, Stefan Marr, Thomas Wuerthinger, Hanspeter Moessenboeck
In Proceedings
Practical partial evaluation for high-performance dynamic language runtimes
Thomas Wuerthinger, Christian Wimmer, Christian Humer, Andreas Woess, Lukas Stadler, Chris Seaton, Gilles Duboscq, Doug Simon, Matthias Grimmer
In Proceedings
Lenient Execution of C on a JVM -- How I Learned to Stop Worrying and Execute the Code
Manuel Rigger, Roland Schatz, Matthias Grimmer, Hanspeter Moessenboeck
Slides
Building Reusable, Low-Overhead Tooling Support into a High-Performance Polyglot VM
Michael Van De Vanter
In Proceedings
Language-Independent Information Flow Tracking Engine for Program Comprehension Tools
Michael Van De Vanter, Mohammad Reza Azadmanesh
Conference Publication
FAD.js: Fast JSON Data Access Using JIT-based Speculative Optimizations
Daniele Bonetta, Matthias Brantner
In Proceedings
Increasing the Robustness of C Libraries and Applications through Run-time Introspection
Manuel Rigger, Rene Mayrhofer, Roland Schatz, Matthias Grimmer, Hanspeter Moessenboeck
In Proceedings
Fast, Flexible, Polyglot Instrumentation Support for Debuggers and other Tools
Michael Van De Vanter, Chris Seaton, Christian Humer, Thomas Wuerthinger
Conference Publication
Just-In-Time GPU Compilation of Interpreted Programs with Profile-Driven Specialization
Juan Fumero, Lukas Stadler, Michael Steuwer, Christophe Dubach
In Proceedings
Practical Partial Evaluation for High-Performance Dynamic Language Runtimes
Thomas Wuerthinger, Christian Wimmer, Christian Humer, Andreas Woess, Lukas Stadler, Chris Seaton, Gilles Duboscq, Douglas Simon, Matthias Grimmer
In Proceedings
Bringing Low-Level Languages to the JVM: Efficient Execution of LLVM IR on Truffle
Manuel Rigger, Matthias Grimmer, Christian Wimmer, Thomas Wuerthinger, Hanspeter Moessenboeck
In Proceedings
One Compiler: Deoptimization to Optimized Code
Christian Wimmer, Vojin Jovanovic, Thomas Wuerthinger
Conference Publication
Efficient and Thread-Safe Objects for Dynamically-Typed Languages
Benoit Daloze, Stefan Marr, Daniele Bonetta, Hanspeter Moessenboeck
Conference Publication
Gems: shared-memory parallel programming for Node.JS
Daniele Bonetta, Luca Salucci, Stefan Marr, Walter Binder
Conference Publication
Sulong: Memory Safe and Efficient Execution of LLVM-Based Languages
Manuel Rigger
In Proceedings
Sulong - Execution of LLVM-Based Languages on the JVM
Manuel Rigger, Matthias Grimmer, Hanspeter Moessenboeck
PhD Thesis
Combining speculative optimizations with flexible scheduling of side-effects
Gilles Duboscq
In Proceedings
An Efficient and Generic Event-based Profiler Framework for Dynamic Languages
Gülfem Savrun-Yeniçeri, Michael Van De Vanter, Per Larsen, Stefan Brunthaler, Michael Franz
In Proceedings
Building Debuggers and Other Tools: We Can “Have it All” (Position Paper)
Michael Van de vanter
Journal Publication
Snippets: Taking the High Road to a Low Level
Douglas Simon, Christian Wimmer, Bernhard Urban, Gilles Duboscq, Lukas Stadler, Thomas Wuerthinger
Journal Publication
Workload characterization of JVM languages
Aibek Sarimbekov, Lukas Stadler, Lubomír Bulej, Andreas Sewe, Andrej Podzimek, Yudi Zheng, Walter Binder
In Proceedings
Partial Escape Analysis and Scalar Replacement for Java
Lukas Stadler, Thomas Wuerthinger, Hanspeter Mössenböck
In Proceedings
One VM to rule them all
Thomas Wuerthinger, Christian Wimmer, Andreas Woess, Lukas Stadler, Gilles Duboscq, Christian Humer, Gregor Richards, Douglas Simon, Mario Wolczko
In Proceedings
An intermediate representation for speculative optimizations in a dynamic compiler
Gilles Duboscq, Thomas Wuerthinger, Lukas Stadler, Christian Wimmer, Douglas Simon, Hanspeter Mössenböck
In Proceedings
An Intermediate Representation for Speculative Optimizations in a Dynamic Compiler
Gilles Duboscq, Thomas Wuerthinger, Lukas Stadler, Christian Wimmer, Doug Simon, Hanspeter Mössenböck
In Proceedings
An Experimental Study of the Influence of Dynamic Compiler Optimizations on Scala Performance
Lukas Stadler, Gilles Duboscq, Hanspeter Mössenböck, Thomas Wuerthinger, Doug Simon
In Proceedings
Graal IR: An Extensible Declarative Intermediate Representation
Gilles Duboscq, Lukas Stadler, Thomas Wuerthinger, Doug Simon, Christian Wimmer, Hanspeter Mössenböck
In Proceedings
Compilation Queuing and Graph Caching for Dynamic Compilers
Lukas Stadler, Gilles Duboscq, Hanspeter Mössenböck, Thomas Wuerthinger