Result: Graal on the Road to Valhalla – GraalVM Support for Value Classes
Further Information
Projekt Valhalla ist ein Java Enhancement Proposal, das sich auf die Weiterentwicklung der Java Virtual Machine (JVM) und der Programmiersprache Java konzentriert. Das Projekt führt Wertobjekte ein, die eine mit Primitives vergleichbare Leistung bieten sollen. Ziel ist es, Entwicklern die Verwendung von Objekten ohne Leistungseinbußen zu ermöglichen und so die Kluft zwischen Objekten und Primitiven zu schließen. Ein langfristiges Ziel des Projekts Valhalla besteht darin, bestimmte historische Designbeschränkungen zu beseitigen, insbesondere im Zusammenhang mit Generics. Das derzeitige Design von Generics erfordert beispielsweise, dass Entwickler primitive Datentypen nicht als generischen Typ verwenden können. Entwickler müssen auf ihre entsprechenden Wrapper-Klassen zurückgreifen, was zusätzlichen Overhead verursacht. Während die Anpassungen an der Programmiersprache Java geringfügig ausfallen, waren umfangreiche Änderungen an der JVM nötig, um die Nutzung von Wertobjekten zu optimieren. Just-In-Time-Compiler (JIT) ermöglichen es der JVM, die Ausführungszeit zu verkürzen, indem Bytecode zur Laufzeit zu Maschinencode kompiliert wird. Der GraalVM-Compiler, ein in die HotSpot JVM integrierter Just-In-Time (JIT) Compiler, übersetzt und optimiert Java-Bytecode in effizienten Maschinencode. Diese Arbeit untersucht die grundlegenden Schritte, die notwendig sind, um das Projekt Valhalla im GraalVM-Compiler zu unterstützen. Dabei werden zentrale Herausforderungen und potenzielle Schwierigkeiten bei der Integration von Wertobjekten in den GraalVM-Compiler identifiziert, und es werden passende Lösungsansätze zur Bewältigung dieser Probleme vorgeschlagen.
Project Valhalla is a Java Enhancement Proposal focused on advancing both the Java Virtual Machine (JVM) and the Java programming language. The project introduces value classes to the Java language. These are designed to achieve performance comparable to that of primitives. The goal is to enable developers to use objects without sacrificing performance, thereby closing the gap between objects and primitives. A long-term objective of Project Valhalla is to address certain historical design limitations, particularly in the context of generics. For example, the current design of generics requires developers to rely on boxing types for primitives, which introduces additional overhead. While the changes to the Java programming language are intentionally kept minimal, significant modifications were necessary to the underlying JVM. Some of these changes focus on the optimization of value objects. Just-In-Time (JIT) compilers allow the JVM to reduce execution time by compiling bytecode into native machine code at run time. The GraalVM compiler, a JIT compiler integrated into the HotSpot JVM, translates and optimizes Java bytecode into efficient machine code. This thesis explores the foundational steps required to support the Project Valhalla in the GraalVM compiler. We identify key challenges and potential pitfalls in integrating value classes into the GraalVM compiler and propose suitable solutions to address these issues.