Стало известно, что блоки текста запланированы к появлению в Java 13. Блоки текста – это многострочные литералы, в которых нет необходимости экранировать большинство специальных символов и которые форматируются предсказуемым образом. Ранее попытка введения многострочных литералов уже предпринималась в форме так называемых сырых многострочных литералов, но JEP был отвергнут в связи с большим количеством потенциальных проблем, которые может принести такой подход. Блоки же текста – это совершенно новая спецификация, лишённая большинства недостатков предыдущего подхода.
Блоки текста заключаются в тройные кавычки и позволяют в значительно более удобной форме писать многострочные выражения (HTML, SQL, JSON и т.д.) без использования конкатенации однострочных литералов, например:
String html = """
<html>
<body>
<p>Hello, world</p>
</body>
</html>
""";
Важной особенностью блоков текста является предсказуемое форматирование:
- Все разделители строк нормализуются при компиляции: символы CR и CR+LF транслируются в LF. Это делает компиляцию независимой от платформы.
- Ненужные символы отступа и хвостовые пробельные символы обрезаются компилятором. Это делает компиляцию блока независимой от того, сколько уровней отступа используется для индентации блока.
Java 13 выйдет в сентябре 2019 года.