TGViewer
Java Books Java Books @java_library · 14.2K subscribers
Post #677 13.4K
🖥 Java 21: String Templates (JEP 430) — Интерполяция строк как в JavaScript, но со своим подходом

Java 21 представила новый способ работы со строками — *string templates*. Это функция-превью (preview), которую нужно включать явно (`--enable-preview`) и использовать с JDK 21 или 22. В Java 23 от неё отказались, чтобы переработать дизайн.

Как это работает?

- Используется шаблонный процессор, например STR.
- Сразу после него идёт точка . и строка-шаблон с выражениями внутри \{...}:

String name = "Duke";
String greeting = STR."My name is \{name}";
// -> "My name is Duke"

Встроенные выражения могут быть любыми Java-выражениями: арифметика, методы, поля:


int x = 10, y = 20;
String result = STR."\{x} + \{y} = \{x + y}";

- Поддержка многострочных шаблонов
Можно использовать текстовые блоки для JSON, SQL и других структур:


String json = STR."""
{
"user": "\{name}",
"temp": \{tempC}
}
""";

Технические детали
Шаблоны создают объект StringTemplate (runtime представление), содержащий массив литералов и значений выражений.

- Есть разные шаблонные процессоры:
- STR — стандартная интерполяция
- FMT — поддерживает форматирование и локаль
- RAW — необработанный шаблон, для кастомной обработки

Текущее состояние
- Java 21: функция доступна как preview (JEP 430)
- Java 22: вторая preview-итерация
- Java 23: удалена (даже как preview), дизайн требует доработки

Почему удалили?
- Жалобы на синтаксис — \{} вместо привычного ${}, processor.template вместо простого подхода

- Смешение capture (формирование шаблона) и processing нарушает удобство расширения

- Производительность можно обеспечить и без специального синтаксиса

- Дискуссия среди разработчиков: часть считает interpolation небезопасной/бесполезной, часть — нужной функцией качества жизни

Итог

Java 21 попыталась упростить работу со строками и структурными текстами с помощью string templates — но разработка приостановлена из-за критики синтаксиса и архитектуры. Пока функция нестабильна и требует пересмотра.

📌 Подробнее
  • ❤ 15
  • 👍 3
  • 🔥 3
  • 👎 2
More from @java_library
  1. Sep 15, 2026Apache Kafka курс 2026: бесплатный курс по Kafka с нуля до профи на русском Kafka обучение…
  2. Sep 12, 2026🖥 Java в 2026 году: 25 лучших практических примеров кода от основ до многопоточности http…
  3. Sep 10, 2026☕ Java: в HashSet всего 10 элементов, а обход всё равно тормозит Редкий нюанс: время обход…
  4. Sep 10, 2026🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы. Ste…
  5. Sep 7, 2026☕️ Java получил практический MCP-сервер для медицинского AI-триажа На JavaOne показали сис…
  6. Sep 6, 2026Apache Kafka 4.x - продвинутый бесплатный практический курс 2026 года https://github.com/j…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →