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