Skip to content

Commit 3608209

Browse files
authored
chore: merge release release/2026.08.30 to main
Brings the release state of tag release/2026.08.30 back to main (POM versions 2026.08.30 + release docs).
2 parents 644db5f + f29a0b2 commit 3608209

10 files changed

Lines changed: 23 additions & 14 deletions

File tree

README.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -289,9 +289,18 @@ The test data is bundled as ZIP files and extracted automatically at runtime:
289289

290290
## Current Status
291291

292-
**Final `java.util.json` sandbox-era release** (2026-05-19).
292+
**2026.08.30 — the `jdk.incubator.json` backport release.**
293293

294-
This code is derived from the OpenJDK jdk-sandbox repository "json" branch at commit `43325738c` (2026-08-27), which is the current frontier of the incubator-era `jdk.incubator.json` API. The incubator promotion itself happened at commit `b956ae0` (2026-02-05); this branch completed the migration from the sandbox-era `java.util.json` naming to the incubator packages — see the notice below and issue #145.
294+
This is a Java 21+ backport of the JDK's incubating JSON API (`jdk.incubator.json`, [JEP 540](https://openjdk.org/jeps/540), targeted at JDK 28), taken from the upstream `json` branch **as of commit `43325738c` (2026-08-27)**. The public API lives in `jdk.incubator.java.util.json` and the implementation in `jdk.incubator.internal.util.json`, mirroring the upstream module layout at that frontier.
295+
296+
> Note: the upstream commit may be a day or more old by the time you read this — the code here is exactly the upstream API and implementation **as of `43325738c`, 2026-08-27 23:24 UTC**, tracked continuously by the daily drift checker described below.
297+
298+
### Release highlights
299+
300+
- **The incubator API, not a legacy preview.** Conversion accessors are `asString()`, `asInt()`, `asLong()`, `asDouble()`, `asBoolean()`, `asList()`, `asMap()`; navigation is `get(String)`, `get(int)`, `tryGet(String)`, `tryValue()`; type and path errors throw `JsonValueException` with document paths; subtypes use identity `equals`/`hashCode`, matching the upstream specification. Earlier releases of this library exposed a different, sandbox-era API — migrating to this release is a small set of mechanical renames (`string()``asString()`, `toLong()``asLong()`, `elements()``asList()`, `members()``asMap()`, and so on).
301+
- **Upstream hardening included.** The parser uses upstream's explicit-stack (non-recursive) design; the ported test suite covers documents nested 10,000 levels deep.
302+
- **1,679 automated tests** (up from 1,355 in the previous release), including the complete upstream test suite ported to JUnit and hardened numeric-boundary coverage for `asInt`/`asLong`/`asDouble` ranges, precision, and `JsonNumber.of` conversions.
303+
- **Automated breaking-change detection.** A daily CI job compares this backport's public API against upstream HEAD and opens a deduplicated issue on any drift; upstream unreachability is always treated as drift, never as all-clear. Sync tooling under `updates/` targets the incubator module layout, making each future sync a mechanical fetch-transform-verify cycle.
295304

296305
### API Summary
297306
- `JsonValue` conversion methods: `asBoolean()`, `asString()`, `asInt()`, `asLong()`, `asDouble()`
@@ -300,8 +309,8 @@ This code is derived from the OpenJDK jdk-sandbox repository "json" branch at co
300309
- `JsonObject`: `asMap()`, `of(Map)`
301310
- `Json`: `parse(String)`, `parse(char[])`, `toDisplayString(JsonValue, String indent)`
302311

303-
### Upstream Migration Notice
304-
The upstream `java.util.json` API has been promoted to `jdk.incubator.json` (commit `b956ae0`, 2026-02-05). The incubator version introduces significant API changes including method renames (`bool()``asBoolean()`, `string()``asString()`, `toInt()``asInt()`, etc.), `tryGet()`/`tryValue()` navigation, and identity (non-value) `equals`/`hashCode`. **That migration is now DONE in this branch** (issue #145): the public API lives in `jdk.incubator.java.util.json` and the implementation in `jdk.incubator.internal.util.json`, matching upstream frontier `43325738c`.
312+
### Upstream alignment
313+
Upstream promoted the API from the prototype `java.util.json` naming to the `jdk.incubator.json` incubator module (commit `b956ae0`, 2026-02-05); this release aligns fully with that module, including the renamed accessors, `tryGet()`/`tryValue()` navigation, and identity (non-value) `equals`/`hashCode`, at upstream frontier `43325738c` (issue #145).
305314

306315
The original proposal and design rationale can be found in the included PDF: [Towards a JSON API for the JDK.pdf](Towards%20a%20JSON%20API%20for%20the%20JDK.pdf)
307316

index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@
154154
<div class="container">
155155
<header>
156156
<h1>java.util.json Backport for JDK 21+</h1>
157-
<p class="subhead">A backport of the experimental <code>java.util.json</code> API from the OpenJDK jdk-sandbox “json” branch, plus an incubating JSON Type Definition (JTD) validator (RFC 8927).</p>
157+
<p class="subhead">A Java 21+ backport of the JDK's incubating <code>jdk.incubator.json</code> API (JEP 540, targeted at JDK 28), plus a JSON Type Definition (JTD) validator (RFC 8927).</p>
158158
<div class="callout">
159159
<strong>Early access / unstable:</strong> APIs and behaviour may change as upstream evolves.
160160
</div>
@@ -254,7 +254,7 @@ <h2>JSON Type Definition (JTD) Validator</h2>
254254
// result.isValid() == true</code></pre>
255255

256256
<h2>Status</h2>
257-
<p class="meta">This code (as of 2026-01-25) is derived from the OpenJDK jdk-sandbox repository “json branch. The API may evolve as the upstream design develops.</p>
257+
<p class="meta">This code is the upstream incubator API and implementation as of commit <code>43325738c</code> (2026-08-27) on the OpenJDK <code>json</code> branch, tracked daily for upstream drift. The API may evolve as upstream evolves.</p>
258258

259259
<h2>License</h2>
260260
<p class="meta">GNU General Public License version 2 with Classpath exception (same as OpenJDK).</p>

jdt2jar/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<parent>
99
<groupId>io.github.simbo1905.json</groupId>
1010
<artifactId>parent</artifactId>
11-
<version>2026.08.28</version>
11+
<version>2026.08.30</version>
1212
</parent>
1313

1414
<artifactId>jdt2jar</artifactId>

json-compatibility-suite/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>io.github.simbo1905.json</groupId>
99
<artifactId>parent</artifactId>
10-
<version>2026.08.28</version>
10+
<version>2026.08.30</version>
1111
</parent>
1212

1313
<artifactId>json-compatibility-suite</artifactId>

json-java21-api-tracker/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>io.github.simbo1905.json</groupId>
99
<artifactId>parent</artifactId>
10-
<version>2026.08.28</version>
10+
<version>2026.08.30</version>
1111
</parent>
1212

1313
<artifactId>json-java21-api-tracker</artifactId>

json-java21-jsonpath/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<parent>
99
<groupId>io.github.simbo1905.json</groupId>
1010
<artifactId>parent</artifactId>
11-
<version>2026.08.28</version>
11+
<version>2026.08.30</version>
1212
</parent>
1313

1414
<artifactId>java.util.json.jsonpath</artifactId>

json-java21-jtd-codegen/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<parent>
99
<groupId>io.github.simbo1905.json</groupId>
1010
<artifactId>parent</artifactId>
11-
<version>2026.08.28</version>
11+
<version>2026.08.30</version>
1212
</parent>
1313

1414
<artifactId>java.util.json.jtd.codegen</artifactId>

json-java21-jtd/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<parent>
99
<groupId>io.github.simbo1905.json</groupId>
1010
<artifactId>parent</artifactId>
11-
<version>2026.08.28</version>
11+
<version>2026.08.30</version>
1212
</parent>
1313

1414
<artifactId>java.util.json.jtd</artifactId>

json-java21/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>io.github.simbo1905.json</groupId>
99
<artifactId>parent</artifactId>
10-
<version>2026.08.28</version>
10+
<version>2026.08.30</version>
1111
</parent>
1212

1313
<artifactId>java.util.json</artifactId>

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>io.github.simbo1905.json</groupId>
88
<artifactId>parent</artifactId>
9-
<version>2026.08.28</version>
9+
<version>2026.08.30</version>
1010
<packaging>pom</packaging>
1111

1212
<name>java.util.json Java21 Backport Parent</name>

0 commit comments

Comments
 (0)