CINXE.COM

Project Amber

<!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 Amber</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 Amber</h1></header> <p>The goal of Project Amber is to explore and incubate smaller, productivity-oriented Java language features that have been accepted as candidate JEPs in the <a href="https://openjdk.org/jeps/1">OpenJDK JEP Process</a>. This Project is sponsored by the <a href="https://openjdk.org/groups/compiler">Compiler Group</a>.</p><p>Most Project Amber features go through at least two rounds of <a href="https://openjdk.org/jeps/12"><em>preview</em></a> before becoming an official part of the Java Platform. For a given feature, there are separate JEPs for each round of preview and for final standardization. <!-- This page links only to the most recent JEP for a feature. Such JEPs may have links to earlier JEPs for the feature, as appropriate. --></p><section id="status-of-jeps" class="level2"> <h2><a class="anchor" href="#status-of-jeps">Status of JEPs</a></h2> <p>Currently in progress:</p> <ul> <li><a href="https://openjdk.org/jeps/468">468: Derived Record Creation (Preview)</a></li> </ul> <p>Currently in preview:</p> <ul> <li><a href="https://openjdk.org/jeps/495">495: Simple Source Files and Instance Main Methods (Fourth Preview)</a> (previous: <a href="https://openjdk.org/jeps/445">445</a>, <a href="https://openjdk.org/jeps/463">463</a>, <a href="https://openjdk.org/jeps/477">477</a>)</li> <li><a href="https://openjdk.org/jeps/494">494: Module Import Declarations (Second Preview)</a> (previous: <a href="https://openjdk.org/jeps/476">476</a>)</li> <li><a href="https://openjdk.org/jeps/492">492: Flexible Constructor Bodies (Third Preview)</a> (previous: <a href="https://openjdk.org/jeps/447">447</a>, <a href="https://openjdk.org/jeps/482">482</a>)</li> <li><a href="https://openjdk.org/jeps/488">488: Primitive Types in Patterns, <code>instanceof</code>, and <code>switch</code> (Second Preview)</a> (previous: <a href="https://openjdk.org/jeps/455">455</a>)</li> </ul> <p>Delivered:</p> <ul> <li><a href="https://openjdk.org/jeps/458">458: Launch Multi-File Source-Code Programs</a></li> <li><a href="https://openjdk.org/jeps/456">456: Unnamed Variables and Patterns</a> (preview: <a href="https://openjdk.org/jeps/433">433</a>)</li> <li><a href="https://openjdk.org/jeps/441">441: Pattern Matching for <code>switch</code></a> (previews: <a href="https://openjdk.org/jeps/406">406</a>, <a href="https://openjdk.org/jeps/420">420</a>, <a href="https://openjdk.org/jeps/427">427</a>, <a href="https://openjdk.org/jeps/433">433</a>)</li> <li><a href="https://openjdk.org/jeps/440">440: Record Patterns</a> (previews: <a href="https://openjdk.org/jeps/405">405</a>, <a href="https://openjdk.org/jeps/432">432</a>)</li> <li><a href="https://openjdk.org/jeps/409">409: Sealed Classes</a> (previews: <a href="https://openjdk.org/jeps/360">360</a>, <a href="https://openjdk.org/jeps/397">397</a>)</li> <li><a href="https://openjdk.org/jeps/395">395: Records</a> (previews: <a href="https://openjdk.org/jeps/359">359</a>, <a href="https://openjdk.org/jeps/384">384</a>)</li> <li><a href="https://openjdk.org/jeps/394">394: Pattern Matching for <code>instanceof</code></a> (previews: <a href="https://openjdk.org/jeps/305">305</a>, <a href="https://openjdk.org/jeps/375">375</a>)</li> <li><a href="https://openjdk.org/jeps/378">378: Text Blocks</a> (previews: <a href="https://openjdk.org/jeps/355">355</a>, <a href="https://openjdk.org/jeps/368">368</a>) <ul> <li><a href="guides/text-blocks-guide">Programmer’s Guide</a></li> </ul> </li> <li><a href="https://openjdk.org/jeps/361">361: Switch Expressions</a> (previews: <a href="https://openjdk.org/jeps/325">325</a>, <a href="https://openjdk.org/jeps/354">354</a>)</li> <li><a href="https://openjdk.org/jeps/323">323: Local-Variable Syntax for Lambda Parameters</a></li> <li><a href="https://openjdk.org/jeps/286">286: Local-Variable Type Inference (<code>var</code>)</a> <ul> <li><a href="guides/lvti-style-guide">Style Guidelines</a></li> <li><a href="guides/lvti-faq">FAQ</a></li> </ul> </li> </ul> <p>On hold:</p> <ul> <li><a href="https://openjdk.org/jeps/301">301: Enhanced Enums</a> (see <a href="https://mail.openjdk.org/pipermail/amber-spec-experts/2017-May/000041.html">here</a> for explanation)</li> <li><a href="https://openjdk.org/jeps/302">302: Lambda Leftovers</a></li> <li><a href="https://openjdk.org/jeps/348">348: Java Compiler Intrinsics for JDK APIs</a></li> </ul> <p>Withdrawn:</p> <ul> <li><a href="https://openjdk.org/jeps/465">465: String Templates (Third Preview)</a> (see <a href="https://mail.openjdk.org/pipermail/amber-spec-experts/2024-April/004106.html">here</a> for explanation)</li> <li><a href="https://openjdk.org/jeps/326">326: Raw String Literals</a>, dropped in favor of Text Blocks (see <a href="https://mail.openjdk.org/pipermail/jdk-dev/2018-December/002402.html">here</a> for explanation)</li> </ul> </section><section id="documents" class="level2"> <h2><a class="anchor" href="#documents">Documents</a></h2> <ul> <li>Guides <ul> <li><a href="guides/lvti-style-guide">Local Variable Type Inference Style Guide</a> (March 2018)</li> <li><a href="guides/lvti-faq">Local Variable Type Inference FAQ</a> (Oct 2018)</li> <li><a href="guides/text-blocks-guide">Programmer’s Guide to Text Blocks</a> (Aug 2019)</li> </ul> </li> <li>Design notes <ul> <li><a href="design-notes/constables">Symbolic References for Constants</a> (March 2018)</li> <li><a href="design-notes/records-and-sealed-classes">Data Classes and Sealed Types for Java</a> (February 2019)</li> <li><a href="design-notes/towards-better-serialization">Towards Better Serialization</a> (June 2019)</li> <li>Pattern matching <ul> <li><a href="design-notes/patterns/pattern-matching-for-java">Pattern Matching for Java</a> (September 2018)</li> <li><a href="design-notes/patterns/pattern-match-object-model">Pattern Matching in the Java Object Model</a> (December 2020)</li> <li><a href="design-notes/patterns/pattern-match-semantics">Pattern Matching for Java&#x200A;—&#x200A;Semantics</a> (August 2020)</li> <li><a href="design-notes/patterns/pattern-match-translation">Pattern Matching for Java&#x200A;—&#x200A;Runtime and Translation</a> (June 2017)</li> <li><a href="design-notes/patterns/extending-switch-for-patterns">Extending <code>switch</code> for Pattern Matching</a> (April 2017)</li> <li><a href="design-notes/patterns/type-patterns-in-switch">Type Patterns in <code>switch</code></a> (September 2020)</li> <li><a href="design-notes/patterns/exhaustiveness">Patterns: Exhaustiveness, Unconditionality, and Remainder</a> (May 2023)</li> <li><a href="design-notes/patterns/towards-member-patterns">Towards Member Patterns</a> (January 2024)</li> </ul> </li> <li><a href="design-notes/templated-strings">String Tapas Redux: Beyond Mere String Interpolation</a> (September 2021)</li> </ul> </li> <li>Historical notes <ul> <li><a href="design-notes/data-classes-historical-1">Data Classes for Java</a> (October 2017)</li> <li><a href="design-notes/data-classes-historical-2">Data Classes for Java</a> (February 2018)</li> </ul> </li> </ul> </section><section id="community" class="level2"> <h2><a class="anchor" href="#community">Community</a></h2> <ul> <li><a href="https://openjdk.org/census#amber">Members</a></li> <li>Mailing Lists <ul> <li><a href="https://mail.openjdk.org/mailman/listinfo/amber-dev">amber-dev</a> — For technical discussion related to Project Amber</li> <li><a href="https://mail.openjdk.org/mailman/listinfo/amber-spec-experts">amber-spec-experts</a> — For Expert Group members only</li> <li><a href="https://mail.openjdk.org/mailman/listinfo/amber-spec-observers">amber-spec-observers</a> — A read-only clone of amber-spec-experts</li> <li><a href="https://mail.openjdk.org/mailman/listinfo/amber-spec-comments">amber-spec-comments</a> — For submitting comments on the official specs</li> </ul> </li> <li>Other Resources <ul> <li><a href="https://inside.java/tag/amber">Inside.java</a></li> <li><a href="https://dev.java/learn/">Dev.java</a></li> </ul> </li> </ul> </section> <footer class="legal"> <div>© 2025 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/amber-docs/blob/138e8c994a80/site/_index.md">138e8c994a80</a> · <time datetime="2025-02-04T15:51:19+00:00">2025/02/04 15:51 UTC</time></div></footer> </article><script type="text/javascript" src="/iK7-vvAk05/ZXjo/nvZA6C/a5EiQ0btYX8VYDuf/Bj4tAQ/JwxJ/BD5-IAAC"></script></body></html>

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