<i18n dev> RFR: 8366178: Implement JEP 526: Lazy Constants (Second Preview)
Per Minborg
pminborg at openjdk.org
Mon Oct 13 11:51:05 UTC 2025
On Thu, 2 Oct 2025 10:51:08 GMT, Per Minborg <pminborg at openjdk.org> wrote:
> Implement JEP 526: Lazy Constants (Second Preview)
>
> The lazy list/map implementations are broken out from `ImmutableCollections` to a separate class.
>
> The old benchmarks are not moved/renamed to allow comparison with previous releases.
>
> `java.util.Optional` is updated so that its field is annotated with `@Stable`. This is to allow `Optional` instances to be held in lazy constants and still provide constant folding.
> I’m gonna miss **Stable Values**, as it has some use cases which aren’t served by **Lazy Constants**, and on which I depend on in some of my code, so I’m stuck with using regular non‑`final` fields.
>
> Also, in the [JEP 526](https://openjdk.org/jeps/526) table under “[Flexible initialization with lazy constants](https://openjdk.org/jeps/526#Flexible-initialization-with-lazy-constants)”:
>
> > Update count
> > Update location
> > Constant folding?
> > Concurrent updates?
> >
> >
> >
> >
> > `final` field
> > 1
> > Constructor or static initializer
> > Yes
> > No
> >
> >
> > `LazyConstant`
> > [0, 1]
> > Anywhere
> > Yes, after initialization
> > Yes, by winner
> >
> >
> > Non-`final` field
> > [0, ∞)
> > Anywhere
> > No
> > Yes
>
> The “Update location” of `LazyConstant` shouldn’t be “Anywhere”, as that was only accurate for `StableValue`, but not for `LazyConstant`, which is updated by calling the passed `Supplier`.
>
> Similarly, concurrent updates are prevented for `LazyConstant`s by using `synchronized (this)`.
I've updated the JEP. Thanks for pointing out this. Let me know what you think about the new text.
We are exploring better ways to provide low-level, imperative, lazy constant/stable value fields. This work will be done outside the current JEP.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/27605#issuecomment-3396693041
PR Comment: https://git.openjdk.org/jdk/pull/27605#issuecomment-3397160926
More information about the i18n-dev
mailing list