New candidate JEP: 506: Scoped Values
Adam Gent
dev at adamgent.com
Tue Apr 15 16:17:18 UTC 2025
> > Api itself is fine, nothing to report.
I actually have problems with the API. I don't think its worth allowing null in a Scoped Value.
I covered this in a reddit comment https://www.reddit.com/r/java/comments/1jzd8df/scoped_values_final_in_jdk_25/mn8ofdc/
For those that do not want to go to reddit the gist is I think if we do not allow null in a Scoped Value it makes the API less bloated and easier to use with pattern matching. That is `get` just like a non null value map will return `null` you can do the following and not need the `orElse` or `orElseThrow` and the inevitable plethora of methods that are on `Optional`:
String username = switch(scopedValue.get()) {
case User u -> u.getUsername();
case null -> throw new SomeException("User Missing");
}
I had posted earlier about now allowing null but did not get much feedback perhaps because I didn't have enough clarity on why I think it is a good idea not to allow null.
On Tue, Apr 15, 2025, at 11:10 AM, Davor Hrg wrote:
> That is exactly the use-case I was going for in my tests, but have not been able to test it in a high traffic environment.
>
> Api itself is fine, nothing to report.
>
>
>
>
> On Tue, Apr 15, 2025 at 4:51 PM Josiah Noel <josiahnoel at gmail.com> wrote:
>> I suppose I'm just not sure what feedback to give beyond it works like I thought it would. I've been using it in one of our high traffic APIs since java 21. Currently the service is on JDK 24 and I haven't noticed any problems with the preceding java versions either.
>>
>> I use it to store request data that would otherwise be put in an MDC context. I then have a custom logback encoder which extracts the values and put them into the json log statement.
>>
>> On Tue, Apr 15, 2025, 10:16 AM David Alayachew <davidalayachew at gmail.com> wrote:
>>> Correct
>>>
>>>
>>> On Tue, Apr 15, 2025, 8:59 AM Davor Hrg <hrgdavor at gmail.com> wrote:
>>>> Am I reading this correctly?
>>>>
>>>> Does this mean Scoped Values will be fully available (not hidden behind the preview flag) in Java 25 ?
>>>>
>>>>
>>>>
>>>> On Mon, Apr 14, 2025 at 9:43 PM Mark Reinhold <mark.reinhold at oracle.com> wrote:
>>>>> https://openjdk.org/jeps/506
>>>>>
>>>>> Summary: Introduce scoped values, which enable a method to share
>>>>> immutable data both with its callees within a thread, and with child
>>>>> threads. Scoped values are easier to reason about than thread-local
>>>>> variables. They also have lower space and time costs, especially when
>>>>> used together with virtual threads (JEP 444) and structured concurrency
>>>>> (JEP 505).
>>>>>
>>>>> - Mark
More information about the loom-dev
mailing list