Java 13 что нового

Совсем недавно вышла новая версия языка 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 — данный язык программирования будет еще долго удерживать лидирующие позиции на рынке языков программирования.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *