Add jdk28-preview module: JDK 28 early-access build, value classes, strict init flag, PEM, JSON incubator

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Gth99spB1CzQmBFofXmU4Z
This commit is contained in:
Claude
2026-09-28 08:48:04 +00:00
parent 57a04dc393
commit c8ff3acf09
15 changed files with 221 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
# jdk28-preview
Companion module for the ankurm.com post *What's Coming in JDK 28: Value Classes Preview and Strict Field Initialization*.
Runs small programs on an **early-access** OpenJDK 28 build (`28-ea+17`, downloaded from jdk.java.net/28) and on JDK 25.0.4.1 for comparison. Early-access builds change weekly, and JEP status changes with them, so treat every transcript as a snapshot and rerun `scripts/run-all.sh` against a newer build.
```bash
export JDK28=/path/to/jdk-28-ea JDK25=/path/to/jdk-25
./scripts/run-all.sh
```
| Output | Shows |
|---|---|
| `00-environment.txt` | The exact builds used |
| `01-value-classes.txt` | JEP 401: `==` on value records, `Integer` identity, synchronizing on a value object |
| `02-forgot-the-preview-flag.txt` | The two errors you get without `--enable-preview` |
| `03-strict-init-flags.txt` | JEP 539: the `ACC_STRICT_INIT` field flag, value class vs identity class |
| `04-pem-encodings.txt` | JEP 542: `PEMEncoder`/`PEMDecoder` on 28 (no flag) and 25 (preview) |
| `05-json-incubator.txt` | JEP 540: `jdk.incubator.json` |
| `06-shenandoah.txt` | JEP 535 could not be tested on this build (see file) |
| `07-jep-status.txt` | Published JEP status, quoted (not run) |