CINXE.COM

Project Valhalla

<!DOCTYPE html SYSTEM "html"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"></meta> <title>Project Valhalla</title> <link rel="shortcut icon" href="/images/nanoduke.ico"></link> <link rel="stylesheet" type="text/css" href="/page-serif.css"></link></head> <body><article> <header> <h1 class="title">Project Valhalla</h1></header> <p>Project Valhalla is augmenting the Java object model with <em>value objects</em>, combining the abstractions of object-oriented programming with the performance characteristics of simple primitives. Supplementary changes to Java鈥檚 generics will carry these performance gains into generic APIs.</p><p>This Project is sponsored by the <a href="http://openjdk.org/groups/hotspot">HotSpot Group</a>.</p><section id="jeps" class="level2"> <h2><a class="anchor" href="#jeps">JEPs</a></h2> <p>Valhalla project features will be added to Java over multiple releases. This process is <a href="https://openjdk.org/jeps/1">managed with JEPs</a>, each of which facilitates the development and integration into the JDK of a cohesive set of changes.</p> <p>There are five distinct feature sets under development:</p> <ol type="1"> <li> <p><em><a href="https://openjdk.org/jeps/401">Value Classes and Objects</a></em>, introducing objects that lack identity and thus can have optimized encodings</p> </li> <li> <p><em>Null-Restricted and Nullable Types</em>, providing language support for null-aware types and runtime enforcement of null restrictions</p> </li> <li> <p><em><a href="https://openjdk.org/jeps/8316779">Null-Restricted Value Class Types</a></em>, improving the performance of fields and arrays with null-restricted value class types</p> </li> <li> <p><em><a href="https://openjdk.org/jeps/402">Enhanced Primitive Boxing</a></em>, allowing primitives to be treated more like objects</p> </li> <li> <p><em>Parametric JVM</em>, preserving and optimizing generic class and method parameterizations at runtime</p> </li> </ol> <p>We鈥檝e also worked on some supplementary tasks and features, including:</p> <ul> <li> <p><a href="https://openjdk.org/jeps/181">JEP 181: Nest-Based Access Control</a> (delivered in 11)</p> </li> <li> <p><a href="https://openjdk.org/jeps/309">JEP 309: Dynamic Class-File Constants</a> (delivered in 11)</p> </li> <li> <p><a href="https://openjdk.org/jeps/334">JEP 334: JVM Constants API</a> (delivered in 12)</p> </li> <li> <p><a href="https://openjdk.org/jeps/371">JEP 371: Hidden Classes</a> (delivered in 15)</p> </li> <li> <p><a href="https://openjdk.org/jeps/390">JEP 390: Warnings for Value-Based Classes</a> (delivered in 16)</p> </li> </ul> </section><section id="background-documents-presentations" class="level2"> <h2><a class="anchor" href="#background-documents-presentations">Background Documents &amp; Presentations</a></h2> <p>These documents and presentations present a more holistic view of the Valhalla project鈥檚 goals and design considerations.</p> <ul> <li>The State of Valhalla (December 2021) <ul> <li><a href="design-notes/state-of-valhalla/01-background">1. The Road to Valhalla</a></li> <li><a href="design-notes/state-of-valhalla/02-object-model">2. The Language Model</a></li> <li><a href="design-notes/state-of-valhalla/03-vm-model">3. The JVM Model</a></li> </ul> </li> <li>Parametric JVM <ul> <li><a href="design-notes/in-defense-of-erasure">Background: How We Got the Generics We Have</a> (June 2020)</li> <li><a href="design-notes/parametric-vm/parametric-vm">The Saga of the Parametric VM</a> (April 2021)</li> </ul> </li> <li><a href="https://www.youtube.com/watch?v=a3VRwz4zbdw">Dan Smith: Value Objects in Valhalla</a> (JVM Language Summit, August 2023)</li> </ul> </section><section id="implementation" class="level2"> <h2><a class="anchor" href="#implementation">Implementation</a></h2> <p>Development takes place in a public OpenJDK repository, with occasional early-access builds being published.</p> <p>Interested developers are encouraged to experiment with these early releases.</p> <ul> <li><a href="early-access">Early Access Documentation</a></li> <li><a href="https://jdk.java.net/valhalla/">Early Access Builds</a></li> <li><a href="https://github.com/openjdk/valhalla">GitHub repository</a></li> </ul> <p>Branches in the repository include <code>lworld</code> (the main line of Valhalla development), <code>master</code> (tracking mainline OpenJDK), and various others prototyping proposed features.</p> </section><section id="community" class="level2"> <h2><a class="anchor" href="#community">Community</a></h2> <ul> <li> <p><a href="http://openjdk.org/census#valhalla">Members</a></p> </li> <li> <p>Mailing lists</p> <ul> <li> <p><a href="http://mail.openjdk.org/mailman/listinfo/valhalla-dev">valhalla-dev</a>, for technical discussion related to Project Valhalla (<a href="http://mail.openjdk.org/pipermail/valhalla-dev/">archives</a>)</p> </li> <li> <p><a href="http://mail.openjdk.org/mailman/listinfo/valhalla-spec-experts">valhalla-spec-experts</a>, for moderated design discussion among expert group members only (<a href="http://mail.openjdk.org/pipermail/valhalla-spec-experts/">archives</a>)</p> </li> <li> <p><a href="http://mail.openjdk.org/mailman/listinfo/valhalla-spec-observers">valhalla-spec-observers</a>, for those who wish to monitor discussions in the <em>valhalla-spec-experts</em> list; public replies are allowed, but not forwarded to the experts list (<a href="http://mail.openjdk.org/pipermail/valhalla-spec-observers/">archives</a>)</p> </li> <li> <p><a href="http://mail.openjdk.org/mailman/listinfo/valhalla-spec-comments">valhalla-spec-comments</a>, for sending specification-related comments, suggestions, and other feedback to the expert group (<a href="http://mail.openjdk.org/pipermail/valhalla-spec-comments/">archives</a>)</p> </li> </ul> </li> <li> <p><a href="https://github.com/openjdk/valhalla-docs">Documentation repository</a> (allows updating this page!)</p> </li> </ul> <p>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.</p> </section><section id="legacy-links" class="level2"> <h2><a class="anchor" href="#legacy-links">Legacy Links</a></h2> <p>See the <a href="legacy">legacy page</a> for links to earlier proposed JEPs, design documents, presentations, and prototypes.</p> </section> <footer class="legal"> <div>漏 2024 Oracle Corporation and/or its affiliates</div> <div><a href="/legal/tou">Terms of Use</a> 路 License: <a href="/legal/gplv2+ce.html">GPLv2</a> 路 <a href="https://www.oracle.com/legal/privacy/index.html">Privacy</a> 路 <a href="/legal/openjdk-trademark-notice.html">Trademarks</a></div> <div><a href="https://github.com/openjdk/valhalla-docs/blob/d3f76d17620a/site/_index.md">d3f76d17620a</a> 路 <time datetime="2024-07-30T17:53:25-07:00">2024/07/31 00:53 UTC</time></div></footer> </article><script type="text/javascript" src="/NzNeGH/Vw/i6/NOu5/EwFb8mKAtw/Q3a1kkr6kYStt1/PW02AQ/Fl/cBc2srDW8B"></script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10