PageSourceSearch

https://openjdk.org/projects/amber/

html openjdk.org collected 2026-10-01 07:42:55 UTC 9,659 bytes, 130 lines download raw bytes

1<!DOCTYPE html SYSTEM "html">
2<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
3<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>
4<title>Project Amber</title>
5<link rel="shortcut icon" href="/images/nanoduke.ico"></link>
6<link rel="stylesheet" type="text/css" href="/page-serif.css"></link>
7<script src="https://cdn.usefathom.com/script.js" data-site="KCYJJPZX" defer></script>
7</head>
8<body><article>
9<header>
10<h1 class="title">Project Amber</h1></header>
11<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. <!--
12This page links only to the most recent JEP for a feature. Such JEPs may
13have links to earlier JEPs for the feature, as appropriate.
14--></p><section id="status-of-jeps" class="level2">
15<h2><a class="anchor" href="#status-of-jeps">Status of JEPs</a></h2>
16<p>Currently in progress:</p>
17<ul>
18<li>
19<p><a href="https://openjdk.org/jeps/530">530: Primitive Types in Patterns, <code>instanceof</code>, and <code>switch</code></a> (previous: <a href="https://openjdk.org/jeps/507">507</a>, <a href="https://openjdk.org/jeps/455">455</a>, <a href="https://openjdk.org/jeps/488">488</a>)</p>
20</li>
21<li>
22<p><a href="https://openjdk.org/jeps/468">468: Derived Record Creation (Preview)</a></p>
23</li>
24</ul>
25<p>Delivered:</p>
26<ul>
27<li><a href="https://openjdk.org/jeps/513">513: Flexible Constructor Bodies</a> (previews: <a href="https://openjdk.org/jeps/447">447</a>, <a href="https://openjdk.org/jeps/482">482</a>, <a href="https://openjdk.org/jeps/492">492</a>)</li>
28<li><a href="https://openjdk.org/jeps/512">512: Compact Source Files and Instance Main Methods</a> (previews: <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>, <a href="https://openjdk.org/jeps/495">495</a>)</li>
29<li><a href="https://openjdk.org/jeps/511">511: Module Import Declarations</a> (previews: <a href="https://openjdk.org/jeps/476">476</a>, <a href="https://openjdk.org/jeps/494">494</a>)</li>
30<li><a href="https://openjdk.org/jeps/458">458: Launch Multi-File Source-Code Programs</a></li>
31<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>
32<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>
33<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>
34<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>
35<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>
36<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>
37<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>)
38<ul>
39<li><a href="guides/text-blocks-guide">Programmer’s Guide</a></li>
40</ul>
41</li>
42<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>
43<li><a href="https://openjdk.org/jeps/323">323: Local-Variable Syntax for Lambda Parameters</a></li>
44<li><a href="https://openjdk.org/jeps/286">286: Local-Variable Type Inference (<code>var</code>)</a>
45<ul>
46<li><a href="guides/lvti-style-guide">Style Guidelines</a></li>
47<li><a href="guides/lvti-faq">FAQ</a></li>
48</ul>
49</li>
50</ul>
51<p>On hold:</p>
52<ul>
53<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>
54<li><a href="https://openjdk.org/jeps/302">302: Lambda Leftovers</a></li>
55<li><a href="https://openjdk.org/jeps/348">348: Java Compiler Intrinsics for JDK APIs</a></li>
56</ul>
57<p>Withdrawn:</p>
58<ul>
59<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>
60<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>
61</ul>
62</section><section id="documents" class="level2">
63<h2><a class="anchor" href="#documents">Documents</a></h2>
64<ul>
65<li>Guides
66<ul>
67<li><a href="guides/exhaustiveness-guide">
67Preparing for Change: Safe Switching over Sealed APIs</a> (Aug 2026)</li>
68<li><a href="guides/text-blocks-guide">Programmer’s Guide to Text Blocks</a> (Aug 2019)</li>
69<li><a href="guides/lvti-faq">Local Variable Type Inference FAQ</a> (Oct 2018)<br></li>
70<li><a href="guides/lvti-style-guide">Local Variable Type Inference Style Guide</a> (March 2018)</li>
71</ul>
72</li>
73<li>Design notes
74<ul>
75<li><a href="design-notes/beyond-records">Data-Oriented Programming for Java: Beyond Records</a> (January 2026)</li>
76<li><a href="design-notes/templated-strings">String Tapas Redux: Beyond Mere String Interpolation</a> (September 2021)</li>
77<li><a href="design-notes/towards-better-serialization">Towards Better Serialization</a> (June 2019)</li>
78<li><a href="design-notes/records-and-sealed-classes">Data Classes and Sealed Types for Java</a> (February 2019)</li>
79<li><a href="design-notes/constables">Symbolic References for Constants</a> (March 2018)</li>
80<li>Pattern matching
81<ul>
82<li><a href="design-notes/patterns/towards-member-patterns">Towards Member Patterns</a> (January 2024)</li>
83<li><a href="design-notes/patterns/exhaustiveness">Patterns: Exhaustiveness, Unconditionality, and Remainder</a> (May 2023)</li>
84<li><a href="design-notes/patterns/pattern-match-object-model">Pattern Matching in the Java Object Model</a> (December 2020)</li>
85<li><a href="design-notes/patterns/type-patterns-in-switch">Type Patterns in <code>switch</code></a> (September 2020)</li>
86<li><a href="design-notes/patterns/pattern-match-semantics">Pattern Matching for Java&#x200A;—&#x200A;Semantics</a> (August 2020)</li>
87<li><a href="design-notes/patterns/pattern-matching-for-java">Pattern Matching for Java</a> (September 2018)</li>
88<li><a href="design-notes/patterns/pattern-match-translation">Pattern Matching for Java&#x200A;—&#x200A;Runtime and Translation</a> (June 2017)</li>
89<li><a href="design-notes/patterns/extending-switch-for-patterns">Extending <code>switch</code> for Pattern Matching</a> (April 2017)</li>
90</ul>
91</li>
92</ul>
93</li>
94<li>Historical notes
95<ul>
96<li><a href="design-notes/data-classes-historical-2">Data Classes for Java</a> (February 2018)</li>
97<li><a href="design-notes/data-classes-historical-1">Data Classes for Java</a> (October 2017)</li>
98</ul>
99</li>
100</ul>
101</section><section id="community" class="level2">
102<h2><a class="anchor" href="#community">Community</a></h2>
103<ul>
104<li><a href="https://openjdk.org/census#amber">Members</a></li>
105<li>Mailing Lists
106<ul>
107<li><a href="https://mail.openjdk.org/mailman/listinfo/amber-dev">amber-dev</a> — For technical discussion related to Project Amber</li>
108<li><a href="https://mail.openjdk.org/mailman/listinfo/amber-spec-experts">amber-spec-experts</a> — For Expert Group members only</li>
109<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>
110<li><a href="https://mail.openjdk.org/mailman/listinfo/amber-spec-comments">amber-spec-comments</a> — For submitting comments on the official specs</li>
111</ul>
112</li>
113<li>Other Resources
114<ul>
115<li><a href="https://inside.java/tag/amber">Inside.java</a></li>
116<li><a href="https://dev.java/learn/">Dev.java</a></li>
117</ul>
118</li>
119</ul>
120</section>
121<footer class="legal">
122
123<div>© 2026 Oracle Corporation and/or its affiliates</div>
124<div><a href="/legal/tou">Terms of Use</a>
125          · License: <a href="/legal/gplv2+ce.html">GPLv2</a>
126          · <a href="https://www.oracle.com/legal/privacy/index.html">Privacy</a>
127          · <a href="/legal/openjdk-trademark-notice.html">Trademarks</a></div>
128<div><a href="https://github.com/openjdk/amber-docs/blob/a848c6782897/site/_index.md">a848c6782897</a>
129            · <time datetime="2026-08-12T09:46:24-04:00">2026/08/12 13:46 UTC</time></div></footer>
130</article>
130<script type="text/javascript"  src="/3HMsFSjG8/VvMRmbyf-/On1rHFE9w/G3LEfbSQDEG0QJiYui/VzsYMAE/OyoGUFtA/VEc"></script>
130</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.