September 9, 2019

JDK 13: Что нас ждёт в новой версии?

Напомним, изменения в Java вносятся с помощью предложений по улучшению JDKJEP (JDK Enhancement Proposals), которые позднее интегрируются в новые версии (ну, или не интегрируются, если их не сочтут достаточно полезными и целесообразными).

Ниже — некоторые фичи, которые были предложены для новой версии Java:

Текстовые блоки. Согласно JEP-355, в JDK 13 должны появиться текстовые блоки (на уровне превью). Текстовые блоки — это многостраничные строковые литералы, которые устраняют необходимость в подавляющем большинстве escape-последовательностей. Теперь не нужно будет экранировать большинство специальных символов, а ещё — появятся автоматические переносы строки.

Текстовый блок автоматически форматирует строку и предоставляет разработчикам контроль над форматом. Этот JEP был создан в первую очередь для упрощения процессов написания и чтения кода, поскольку в Java для встраивания не-Java объектов (например, XML или JSON) обычно требуются “танцы с бубном” — специфическое редактирование строк, поэтому такие вставки обычно сложно создавать, поддерживать и читать.

Обновление API сокетов. В новой Java, скорее всего, перепишут устаревшие API сокетов. По идее обновлённая реализация станет более современной и более лёгкой в обслуживании и отладке. Она должна заменить базовую реализацию, используемую API-интерфейсами net.Socket и java.net.ServerSocket. Новая версия предназначена для простой адаптации к работе с user-mode тредами (волокнами или fibers), которые исследуются в Loom, проекте, созданном для того, чтобы облегчить написание, отладку, профилирование и поддержку параллельных приложений.

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

Усовершенствование ZGC (Z Garbage Collector). В новой версии сборщик мусора ZGC хотят заставить возвращать неиспользуемую память в операционную систему.

ZGC позиционируется как масштабируемый сборщик мусора с низкой задержкой, однако на сегодняшний день он всё ещё не возвращает неиспользуемую память обратно в ОС, даже если эта память долго не использовалась. Очевидно, это нерационально, а для некоторых приложений и сред, тех, что не могут простаивать длительное время, такой подход и вовсе критичен.

Улучшение функциональности Class-Data Sharing AppCDS для обеспечения динамического архивирования классов в конце выполнения приложения.

Class-Data Sharing или общий доступ к данным классов был впервые представлен в JDK 5. Эта функциональность позволяет предварительно обрабатывать набор классов в общем архивном файле, который затем можно отобразить в памяти во время выполнения, чтобы сократить время запуска.

Теперь архивные классы будут включать все загруженные классы приложений и библиотек, отсутствующие в стандартном архиве CDS базового уровня. Это предложение предназначено для повышения удобства использования AppCDS и устранения необходимости для пользователей выполнять пробные запуски для создания списка классов для каждого приложения.

Продакт-версия новой формы выражений с оператором SwitchSwitch Expressions. В Java 12 версии в стадии превью появилось упрощение кода оператора switch. Его можно будет использовать либо по старинке, либо в качестве выражения.

Теперь остаётся дождаться 17 сентября — даты релиза Java 13. Ну а если вам не терпится ознакомиться с нововведениями уже сейчас, вы можете загрузить бета-сборки с официального сайта.

Где можно скачать JDK 13?

Сборки JDK 13 можно скачать с сайта the jdk.java.net. Первые бета версии JDK 13 доступны для for Linux, MacOS, и Windows.

Источники:

https://javarush.ru/groups/posts/2304-java-13-chto-nas-zhdjet-v-skorom-budujshem

https://www.javaworld.com/article/3341388/jdk-13-the-new-features-coming-to-java-13.html