RFR: 8334015: Add Support for UUID Version 7 (UUIDv7) defined in RFC 9562 [v16]
Jaikiran Pai
jpai at openjdk.org
Tue Sep 30 12:50:53 UTC 2025
On Tue, 30 Sep 2025 05:59:13 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:
>> Kieran Farrell has updated the pull request incrementally with one additional commit since the last revision:
>>
>> missing semicolon
>
> src/java.base/share/classes/java/util/UUID.java line 185:
>
>> 183:
>> 184: /**
>> 185: * Static factory to create a version 7 (time-based) {@code UUID} with a user-supplied
>
> Would it be better to reword this method javadoc to something like:
>
>
> /**
> * Creates a {@code UUIDv7} {@code UUID} from the given Unix Epoch timestamp.
> *
> * The returned {@code UUID} will have the given {@code timestamp} in
> * the first 6 bytes, followed by the version and variant bits representing {@code UUIDv7},
> * and the remaining bytes will contain random data from a cryptographically strong
> * pseudo-random number generator.
> *
> * @apiNote {@code UUIDv7} values are created by allocating a Unix timestamp in milliseconds
> * in the most significant 48 bits and filling the remaining 74 bits, excluding the required
> * version and variant bits, with random bits. As such, this method rejects {@code timestamp}
> * values that do not fit into 48 bits.
> * <p>
> * Monotonicity (each subsequent value being greater than the last) is a primary characteristic
> * of {@code UUIDv7} values. This is due to the {@code timestamp} value being part of the {@code UUID}.
> * Callers of this method that wish to generate monotonic {@code UUIDv7} values are expected to
> * ensure that the given {@code timestamp} value is monotonic.
> *
> *
> * @param timestamp the number of milliseconds since midnight 1 Jan 1970 UTC,
> * leap seconds excluded.
> *
> * @return a {@code UUID} constructed using the given {@code timestamp}
> *
> * @throws IllegalArgumentException if the timestamp is negative or greater than {@code 281474976710655L}
> *
> * @spec https://www.rfc-editor.org/rfc/rfc9562.html
> * RFC 9562 Universally Unique IDentifiers (UUIDs)
> *
> * @since 26
> *
> */
>
> (the text used for the apiNote is borrowed from the RFC)
I had forgotten to include a note about monotonicity of the UUIDs generated by this new method. I've now updated my previous javadoc comment inline to propose an additional paragraph about this in the `@apiNote`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25303#discussion_r2391302241
More information about the core-libs-dev
mailing list