Последната ревизия на Java въвежда полезен синтаксис за Records, наред с други подобрения.

Светът на програмирането на Java непрекъснато се развива, което изисква от вас да сте в крак с новостите, за да превъзхождате в занаята си.

Java 21 носи вълна от вълнуващи подобрения, които революционизират начина, по който подхождате към паралелността, операциите за събиране и работата със записи.

Представяне на виртуални нишки

Мащабирането на сървърни приложения винаги е представлявало предизвикателства, като нишките често се превръщат в тесни места. Ограниченият брой нишки, съчетан с често изчакване на събития или ключалки за деблокиране, възпрепятства цялостната производителност.

В миналото справянето с този проблем включваше използването на конструкции като CompletableFuture или реактивни рамки, което води до сложен код, който е труден за разбиране и поддръжка.

За щастие, Java 19 въведе виртуални нишки като функция за предварителен преглед, която Java 21 е усъвършенствана и затвърдена чрез JDK Enhancement Proposal 444.

instagram viewer

Виртуалните нишки предлагат многообещаваща алтернатива, която ви позволява да се справяте по-ефективно с предизвикателствата на скалируемостта. Това води до подобрена производителност и подобрена реакция на сървърните приложения.

Последователните колекции са по-използваеми

традиционно, използване на свързани списъци във вашето програмиране на Java изисква доста подробен код. Например, за да извлечете последния елемент, трябва да използвате този тромав подход:

вар последно = list.get (list.size() - 1);

Java 21 обаче въвежда кратка и елегантна алтернатива:

вар последно = list.getLast();

По същия начин, достъпът до първия елемент на LinkedHashSet изисква заобиколен маршрут:

вар първи = linkedHashSet.iterator().next();

Но с Java 21 тази задача става много по-проста:

вар първи = linkedHashSet.getFirst();

Можете също така да получите достъп до последния елемент на LinkedHashSet, като използвате new getLast метод, който избягва итерация през целия набор.

Тези подобрения в последователните колекции не само подобряват четимостта на кода, но също така рационализират извличането на елементи, правейки програмирането на Java по-ефективно и удобно за разработчиците.

Запишете шаблони за удобство

Моделите на запис, въведени като функция за предварителен преглед в Java 19, предлагат удобен механизъм за достъп до полетата на запис в Java без необходимост от изрични преобразувания или методи за достъп.

Синергизират се с Съвпадение на шаблони, например и Съвпадение на шаблони за превключвател, което значително опростява кода и подобрява цялостната четливост.

Ето илюстрация на тази концепция с просто име на запис Позиция:

публичен запис Позиция(вътр х, вътр y){}

По-рано извършването на различни действия въз основа на класа на обекта изискваше използване Съвпадение на шаблони, например, както е показано в следния кодов фрагмент:

публиченневалиденпечат(Обект o){
акоinstanceof Позиция p) {
System.out.printf("o е позиция: %d/%d%n", p.x(), p.y());
} другоакоinstanceof Низ s) {
System.out.printf("o е низ: %s%n", с);
} друго {
System.out.printf("o е нещо друго: %s%n", о);
}
}

с Записвайте шаблони, сега можете директно да съпоставите модел на запис като Позиция (int x, int y) вместо да използвате Позиция стр модел. Това ви позволява да получите достъп до променливите х и г директно в кода, елиминирайки необходимостта от p.x() и p.y():

публиченневалиденпечат(Обект o){
ако (о instanceofПозиция(вътр х, вътр y)) {
System.out.printf("o е позиция: %d/%d%n", x, y);
} другоакоinstanceof Низ s) {
System.out.printf("o е низ: %s%n", с);
} друго {
System.out.printf("o е нещо друго: %s%n", о);
}
}

Освен това можете да използвате Записвайте шаблони във връзка с Съвпадение на шаблони за превключвател, за допълнително опростяване на вашия код:

публиченневалиденпечат(Обект o){
превключвател (о) {
случайПозиция(вътр х, вътр y) - > System.out.printf("o е позиция: %d/%d%n", x, y);
случай Низ s - > System.out.printf("o е низ: %s%n", с);
по подразбиране - > System.out.printf("o е нещо друго: %s%n", о);
}
}

Модели на вложени записи ви позволяват да съпоставяте записи, чиито полета сами по себе си са записи. Например, помислете за запис с име Пътека който се състои от a от и да се позиция:

публичен запис Пътека(Позиция от, Позиция до){}

Чрез използване на модели на запис, отпечатване на a Пътека обектът става по-сбит:

публиченневалиденпечат(Обект o){
превключвател (о) {
случайПътека(Позиция от, Позиция до) - > System.out.printf("o е път: %d/%d -> %d/%d%n", от.x(), от.г(), да се.х(), да се.г());
// други случаи
}
}

С помощта на Записвайте шаблони, обработката на записи с полета от различни типове става по-очевидна и четлива. Да предположим, че сте променили записи, Позиция 2D и Позиция 3D, където Позицияе Java интерфейс които и двете изпълняват:

публичен запечатан интерфейсПозицияразрешителниПозиция 2D, Позиция 3D{}
публичен запис Позиция 2D(вътр х, вътр y) прилага Позиция {}
публичен запис Позиция 3D(вътр х, вътр y, вътр з) прилага Позиция {}
публичен запис Път < P разширява Позиция > (P от, P до) {}

За да разграничите поведението при печат за 2D и 3D пътеки, можете да използвате модели на запис:

публиченневалиденпечат(Обект o){
превключвател (о) {
случайПътека(Position2D от, Position2D до) - > System.out.printf("o е 2D път: %d/%d -> %d/%d%n", от.x(), от.г(), да се.х(), да се.г());
случайПътека(Position3D от, Position3D до) - > System.out.printf("o е 3D път: %d/%d/%d -> %d/%d/%d%n", от.x(), от.г(), от.z(), да се.х(), да се.г(), да се.z());
// други случаи
}
}

Моделите на записи значително намаляват подробността и подобряват четливостта на кода, когато се работи със записи, съдържащи полета от различни типове.

Отключете нови възможности с Java 21

Java 21 представя множество мощни функции, които разширяват възможностите на езика за програмиране Java. Възприемайки тези подобрения, можете да рационализирате процесите си на разработка и да отключите нови възможности за вашите приложения.

Актуализиране с най-новите езикови функции и рамки на Java ви дава възможност да поддържате ефективен и поддържаем код, гарантирайки, че ще останете в авангарда на програмирането на Java.