Совсем недавно вышла новая версия языка Java и мне как и многим другим стало интересно: что же все таки важного и нового появилось в 13 версии.
Из нового в Java 13:
- текстовые блоки;
- новые методы в классе String;
- модифицированный switch case блок;
- улучшенный сборщик мусора;
- переделана реализация Socket API.
Теперь разберем все по порядку и, по возможности, с примерами.
Раньше, чтобы написать текст длинной более чем в одну строку, нужно было воспользоваться специальным разделителем: \n.
\n
Символ выше означает переход на новую строку. С выходом java13 можно писать текстовые блоки. Синтаксис блоков очень простой: необходимо заключить блок в три двойные скобки 🙂
Вот пример текстового блока:
public class TextBlock {
public static void main(String[] args) {
String textBlock = " " "
Here is text block
And this works correct
!!!
" " ";
System.out.println(textBlock);
}
}
Результатом выполнения данного кода будет:
Here is text block
And this works correct
!!!
В классе String появились новые методы. По правде сказать, команда java добавляет в данный класс новые методы практически с каждым релизом. И данный релиз не стал исключением.
Появился метод formatted() – он форматирует строку, используя саму строку как строку для форматирования. А если говорить проще: метод выше эквивалент метода format(this, args)
stripIndent() – удаляет случайные пробелы из строки. Бывали случаи, когда такого метода явно не хватало.
translateEscapes() – возвращает строку с escape-последовательностями (например, \ r), переведенными в соответствующее значение Unicode.
Вспомните как мы раньше писали switch-case блоки. Зная, что некоторым будет лень переходить на другую статью, я привел пример ниже:
String weather;
switch (season){
case "SPRING": weather = "Warm";
break;
case "SUMMER": weather = "Hot";
break;
case "AUTUMN": weather = "Rainy";
break;
case "WINTER": weather = "Cold";
default: weather = "Specify season";
}
Все довольно очевидно и просто. НО! В то же время очень громоздко. Часто программисты забывают писать ключевое слово break после case выражения. Некоторых не устраивает объявление переменной weather, а потом поочередное присвоение ей значений. С нововведениями в java 13 написание switch-case блоков стало проще и элегантней :).
Вот как можно переписать пример выше:
String weather = switch (season) {
case "SPRING" -> "Warm";
case "SUMMER" -> "Hot";
case "AUTUMN" -> "Rainy";
case "WINTER" -> "Cold";
default -> "Specify season"
};
ZGC – экспериментальный сборщик мусора с малой задержкой, был представлен еще в JDK 11. Тогда, его оригинальный дизайн не позволял возвращать страницы памяти в операционную систему, когда они больше не нужны, например, когда куча (heap) сжимается и память не используется в течение длительного периода времени. Для сред, таких как контейнеры, где ресурсы совместно используются несколькими службами, это ограничивало масштабируемость и эффективность системы.
В новой версии разработчикам удалось оптимизировать работу данного сборщика мусора (ZGC) и теперь, проблем описанных выше с ним не наблюдается.
С самых первый версий java, в ней была библиотека java.net.Socket и java.net.ServerSocket. Их реализация долгое время была устаревшая и не обновлялась в соответствии с современными требованиями. В 13 версии джавы программисты таки добрались до их обновления. В результате чего, дебаг и отладка данных классов стали проще и быстрее.
Как видите, с версией java 13 вышло не там много обновлений и нововведений. Тем не менее, данное обновление полезно тем, что показывает: язык java продолжает развиваться, подстраиваться под современный быстро меняющейся мир. И пока разработчики будут выпускать новые версии, исправлять баги, добавлять новые API – данный язык программирования будет еще долго удерживать лидирующие позиции на рынке языков программирования.