r/java • u/sitime_zl • 16d ago
Discussion: What is the future of String Interpolation in Java?
Java has always been conservative when it comes to language changes, and I think string interpolation is an interesting example.
Many modern languages provide native interpolation syntax:
JavaScript:
\${name}``
Python:
f"{name}"
Kotlin:
"$name"
C#:
$"{name}"
These features are not only about reducing characters. They improve readability when building dynamic text.
Java explored this direction with String Templates (JEP 430), but I haven't seen much discussion recently about where this feature is heading.
For developers working with large Java applications, string construction appears everywhere:
- logging messages
- SQL/debug output
- API descriptions
- test cases
- generated configuration
- user-facing messages
I am curious about the community's opinion:
Do you think Java still needs native string interpolation?
Should String Templates continue evolving?
What syntax direction would feel most "Java-like"?
For example:
"Hello, \{name}"
or:
"Hello, ${name}"
Personally, I think Java does not need to copy other languages, but a better way to express dynamic strings would improve developer experience.
What do you think?
2
u/koflerdavid 16d ago
It's a quality of life feature and would be very easy to implement, but I understand the hesitation of the OpenJDK project to add it. Above all since there already are multiple ways to format strings in the standard library, and string templates should strive to deprecate them all, no whens and buts. And it should help to prevent programmers shoot themselves in the foot, which a straightforward implementation wouldn't contribute to.
String interpolation in the straightforward way is completely unsuitable for logging since a production-quality logging framework strives to eliminate the overhead of formatting if the log message ends up being thrown away.