Публикация

Что нового в Java 13?

17 сентября 2019 года для общего пользования была представлена Java 13 и уже по традиции рассказываем, что же там нового и интересного.

Данный материал публикуется позже даты выхода Java 13 для формирования полной серии "Что нового в Java". На момент написания этого материала уже существует Java 16.

JEP 350: Dynamic CDS Archives

JEP 350 упрощает совместное использование данных классов приложений (AppCDS).

AppCDS появилось в Java 8 и вплоть до релиза Java 13 AppCDS активно развивался и уже в Java 13 была расширена эта функция, чтобы обеспечить динамическое архивирование классов в конце выполнения Java приложения.

AppCDS - Application Class Data Sharing, концепция которого состоит в том, чтобы один раз создать архив данных класса и в последствии делится им, чтобы JVM не тратила время на его воссоздавать, тем самым AppCDS значительно сокращает время, которое JVM тратит на загрузку классов.

И для того чтобы воспользоваться CDS нам нужно разрешить ему создавать архив, когда Java приложение будет завершать свою работу:

java -XX:ArchiveClassesAtExit=myApp.jsa -cp myApp.jar Hello

Ну и в последствии мы можем использовать ранее созданный динамический архив, содержимое которого будет расположено в файле myApp.jsa:

java -XX:SharedArchiveFile=myApp.jsa -cp myApp.jar Hello

JEP 351: ZGC: Uncommit Unused Memory

ZGC первоначально был представлен в Java 11, но до Java 13 он не мог возвращать неиспользуемую память кучи обратно в операционную систему, в отличие от сборщика мусора G1. В JEP 351 было решено эту проблему и ZGC включен по умолчанию.

JEP 353: Reimplement the Legacy Socket API

Java 13 заменила базовую реализацию используемую API-интерфейсами java.net.Socket и java.net.ServerSocket, на более простую и адаптивную, которую легко поддерживать и отлаживать.

Socket API было добавленно в JDK 1.0, реализация которого состояла в основном с устаревшего кода Java и C, который трудно поддерживать и отлаживать.

JEP 354: Switch Expressions (Preview)

Впервые Switch Expression был представлен в Java 12 как предварительный обзор новой синтаксической возможности использовать выражения в switch операторе. Но в Java 13 JEP 354 был модифицирован и введен новой оператор yield для возврата значения из блока вместо использования break.

Что означает, что выражение switch возвращающее значение должно использовать оператор yield, а switch не возвращающий значение должен использовать break.

int number = switch (arg) {
    case "1": yield 1;
    case "2": yield 2;

    default: {
        yield 0;
    }
}

JEP 355: Text Blocks (Preview)

Ранее в Java было сложно предоставить в виде строки фрагмент HTML, JSON или SQL. Выглядело это так:

String html = "<body>\n" +
              "    <p>Hello, bcode.dev</p>\n" +
              "</body>\n";

В Java 13 представили JEP для предварительного просмотра, где предлагается возможность использования многострочных строк:

String html = """
              <body>
                  <p>Hello, world</p>
              </body>
              """;
Опубликовано: 20 апреля 2021 г.Просмотров: 63

Комментарии

Мы не даем слово анониму 😶
Войдите, пожалуйста.

Еще никто не комментировал эту публикацию 🤔