Первая информация о JDK 21: что принесет следующий LTS релиз?

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Сегодня мы рассмотрим тему того, что принесет следующий LTS релиз JDK 21.

Первая информация о JDK 21

Пока мы все с нетерпением ждем скорого выхода JDK 20, список функций, которые появятся в JDK 21 этой осенью, также постепенно уточняется.

Начнем с JEP, которые уже были официально предложены в рамках осеннего релиза. Итак, все указывает на то, что мы получим. Их цель — стать расширением текстовых блоков, представленных в JDK 15. Шаблоны строк упрощают их заполнение (а также обычных строк) динамическими значениями.

Чтобы лучше представить это, посмотрим на один пример из JEP:

String name    = "Joan Smith";
String phone   = "555-123-4567";
String address = "1 Maple Drive, Anytown";
String json = STR."""
     {
         "name":    "\{name}",
         "phone":   "\{phone}",
         "address": "\{address}"
     }
     """;

Также возможно передавать и целые выражения:

 int x = 10;
 int y = 20;
 String s = STR."\{x} + \{y} = \{x + y}"; // 10 + 20 = 30 

Все это дело основано на так называемых процессорах, в приведенных выше примерах использовался STR., который просто выполняют интерполяцию. 

В самом JDK также появился процессор FMT., который позволяет выполнять дополнительное форматирование, например, определять десятичную точность float. Пользователь также сможет определить пользовательские процессоры. Получившийся механизм выглядит очень гибким и выходит далеко за рамки простого заполнения строк переменными.

Еще одним уже анонсированным дополнением является JEP 431: Sequenced Collections. До сих пор в JDK не было интерфейса, который мог бы определять коллекции с элементами в четко определенном порядке, обеспечивая при этом удобную итерацию вперед и назад по элементам. По этой причине, в основном, каждая существующая коллекция подходила к этой теме по-разному:

Поэтому в JDK придет появится интерфейс, основанный на реализации Deque:

interface SequencedCollection<E> extends Collection<E> {
     SequencedCollection<E> reversed();
     void addFirst(E);
     void addLast(E);
     E getFirst();
     E getLast();
     E removeFirst();
     E removeLast();
}

В дополнение к улучшенной поддержке операций над первым и последним элементами, также благодаря внедрению метода reversed() станет проще выполнять итерации по коллекции в обратном порядке.

Чтобы закрыть тему, я довольно улыбнулся, увидев цитату Сёрена Кьеркегора в свежей сводке JEP
Чтобы закрыть тему, я довольно улыбнулся, увидев цитату Сёрена Кьеркегора в свежей сводке JEP

Однако это еще не все — все указывает на то, что мы также получим еще два JEP в JDK 21 — Record Patterns и Pattern Matching for Switch

Как отмечается на Reddit /r/java, хотя оба JEP все еще остаются в Draft, примеры кода в них явно относятся именно к JDK 21. Так что, похоже, «осень будет принадлежать» Project Amber.

И раз уж мы затронули тему Pattern Matching и деконструкции записей (record deconstruction), разработчики JDK не планируют останавливаться на достигнутом. На прошлой неделе Брайан Гетц опубликовал анализ паттернов деконструкции о возможности реализации деконструкции объектов, отличных от записей. 

В этом документе предлагается ввести деконструкторы, которые являются обобщением решений, созданных для записей. 

Они должны позволять выполнение деструктукции любого класса, в котором они объявлены. Деконструкторы должны быть определены явно и требуют точного соответствия.

Приведенный ниже пример показывает, как они могут выглядеть, хотя Брайан Гетц предупреждает, что все последующее предназначено только для иллюстрации и не должно считаться окончательным или каким-либо еще.

class Point {
     final double x, y;

     public Point(double x, double y) {
         this.x = x;
         this.y = y;
     }

     public matcher Point(double x, double y) {
         x = this.x;
         y = this.y;
     }
}

Таким образом, они должны быть чем-то вроде обратных конструкторов, потому что они должны собирать значения полей данного объекта и представлять их как легко извлекаемые из класса.

Просто для протокола (хех) также стоит упомянуть, что JDK 21 будет LTS релизом (Long-Time Support - релизом с длительной поддержкой). 

Так что будем надеяться, что он будет максимально насыщен функционально, потому что это будет JDK, рекомендованный для производственного использования на долгие годы.

Возможно, именно этот релиз убедит еще одну группу пользователей JDK в том, что стоит перейти на новую версию.
Возможно, именно этот релиз убедит еще одну группу пользователей JDK в том, что стоит перейти на новую версию.

сточники

  • JEP 430: String Templates (Preview)

  • JEP Draft: Record Patterns

  • JEP Draft: Pattern Matching for switch

  • JEP 431: Sequenced Collections

  • Deconstruction patterns

Источник: https://habr.com/ru/post/721710/


Интересные статьи

Интересные статьи

Сидайте у колок, малятки. Сейчас дiд Панас расскаже вам казочку.Фирма, в которой дiд Панас работал году так в 2003, разрабатывала девайсы, которые сейчас, наверное отнесли бы к IoT. Казалось бы, что м...
Слово «микросервисы» на слуху последние несколько лет. Технология активно развивается, на онлайн-конференциях о ней говорят, да и сами мы пишем их каждый день. Когда-то н...
Ранее в одном из наших КП добавление задач обрабатывалось бизнес-процессами, сейчас задач стало столько, что бизнес-процессы стали неуместны, и понадобился инструмент для массовой заливки задач на КП.
Эта статья посвящена одному из способов сделать в 1с-Битрикс форму в всплывающем окне. Достоинства метода: - можно использовать любые формы 1с-Битрикс, которые выводятся компонентом. Например, добавле...
Как обновить ядро 1С-Битрикс без единой секунды простоя и с гарантией работоспособности платформы? Если вы не можете закрыть сайт на техобслуживание, и не хотите экстренно разворачивать сайт из бэкапа...