“${val}” is a legal string literal that is certainly used in plenty of existing programs.
In current Java you would have to escape \, so only “\\{val}” could have existed before.
In current Java you would have to escape \, so only “\\{val}” could have existed before.
You want the lexer to be able to make the difference between a constant string and a template string and you want users to be able to read the code.
This JEP solves the former not the later.
And yes, the delimiters could be made less obtrusive using syntax coloring, but not all tools will do that (e.g. when using grep on a code base)
On European (other than British/Irish) keyboards where it exists, it will often be a dead key.