Project Valhalla plans to augment the Java object model withvalue objects anduser-defined primitives, combining the abstractions of object-oriented programming with the performance characteristics of simple primitives. These features will be complemented with changes to Java’s generics to preserve performance gains through generic APIs.
This Project is sponsored by theHotSpot Group.
Valhalla project features will be added to Java over multiple releases. This process ismanaged with JEPs, each of which facilitates the development and integration into the JDK of a cohesive set of changes.
Preparatory changes
JEP 181: Nest-Based Access Control (delivered in 11)
JEP 309: Dynamic Class-File Constants (delivered in 11)
JEP 371: Hidden Classes (delivered in 15)
JEP 390: Warnings for Value-Based Classes (delivered in 16)
Value objects
Value Objects (Preview) (submitted draft)
JEP 401: Primitive Classes (Preview) (candidate)
JEP 402: Classes for the Basic Primitives (Preview) (candidate)
Enhanced generics
Universal Generics (Preview) (submitted draft)
Parametric JVM (no draft yet)
These documents present a more holistic view of the Valhalla project’s goals and design considerations.
Prototyping for the project takes place in a public OpenJDK repository, with occasional early-access builds being published.
Interested developers are encouraged to experiment with these prototypes.
Branches in the repository includelworld
(the main line of Valhalla development),master
(tracking mainline OpenJDK),jep*
(staging areas for the production-ready implementations of JEPs), and various others prototyping proposed features.
Mailing lists
valhalla-dev, for technical discussion related to Project Valhalla (archives)
valhalla-spec-experts, for moderated design discussion among expert group members only (archives)
valhalla-spec-observers, for those who wish to monitor discussions in thevalhalla-spec-experts list; public replies are allowed, but not forwarded to the experts list (archives)
valhalla-spec-comments, for sending specification-related comments, suggestions, and other feedback to the expert group (archives)
Documentation repository (allows updating this page!)
We welcome input from interested Java developers. Keep in mind that most theoretical ideas have been well explored over the last few years! The greatest help can be provided by those who try out concrete prototypes and can share their experiences with real-world code bases.
See thelegacy page for links to earlier proposed JEPs, design documents, presentations, and prototypes.