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

Основные методы безымянных классов и экземпляров: предварительный просмотр JEP 445 в Java 21

В Java 21 представлена ​​новая функция под названием «Безымянные классы и основные методы экземпляра» в рамках предложения по улучшению Java (JEP) 445. Эта предварительная функция направлена ​​​​на упрощение создания небольших одноразовых классов без необходимости явных объявлений классов. В этой статье мы рассмотрим концепцию безымянных классов и основных методов экземпляра, а также их потенциальные преимущества в Java 21.

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

Обычный пример кода Java-программы:

public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello world!");
  }
}

Пример кода программы Java 21:

void main() {
  System.out.println("Hello world!");
}

Да, это полная программа Java. Имя класса не требуется.

javac --release 21 --enable-preview HelloWorldTest.java
java --enable-preview HelloWorldTest
Hello world!

or

java --enable-preview --source 21 HelloWorldTest.java
Hello world!

Сопоставление шаблонов для коммутатора — JEP 441

Сопоставление шаблонов для коммутатора — это новая функция в Java 21, которая позволяет сопоставлять значения с различными шаблонами, включая классы, интерфейсы и массивы. Это можно использовать для написания более кратких и удобочитаемых операторов переключения.

Обычный код:

Object testobj = getObject();

if (testobj instanceof String teststring && teststring.length() > 5)  System.out.println(teststring.toUpperCase());
else if (testobj instanceof String teststring)               System.out.println(teststring.toLowerCase());
else if (testobj instanceof Integer i)              System.out.println(i * 20);
else if (testobj instanceof Position(int a, int b)) System.out.println(a + "/" + b);

Пример кода программы Java 21:

Object testobj = getObject();

switch (testobj) {
  case String teststring when teststring.length() > 5  -> System.out.println(teststring.toUpperCase());
  case String teststring                 -> System.out.println(teststring.toLowerCase());
  case Integer i                         -> System.out.println(i * 20);
  case Position(int a, int b)            -> System.out.println(a + "/" + b);
  default                                -> {}
}

Другие особенности Java 21:

  1. Усовершенствования записей: в Java 21 представлены улучшения записей, функция, представленная в Java 14. В Java 21 записи получают возможность определять нестатические поля, что позволяет использовать более гибкие и полные классы данных.
  2. Улучшения запечатанных классов: запечатанные классы, представленные в Java 15, теперь поддерживают ключевое слово «разрешения» для указания разрешенных подклассов. Эта функция обеспечивает лучший контроль над иерархиями классов и улучшает инкапсуляцию.
  3. Улучшенные аннотации обнуляемости. В Java 21 представлены расширенные аннотации обнуляемости, которые позволяют разработчикам выражать обнуляемость определенных элементов внутри типа, таких как поля и параметры. Это помогает в обеспечении более строгих правил нулевой безопасности.
  4. Улучшенные примитивные оболочки: Java 21 повышает производительность примитивных оболочек, устраняя ненужное создание объектов в определенных сценариях. Это улучшение приводит к лучшему использованию памяти и уменьшению накладных расходов.
  5. Компактное форматирование чисел. В Java 21 представлен новый API для форматирования чисел в компактной форме, что упрощает отображение больших чисел в более удобочитаемом формате. Эта функция особенно полезна при работе с интернационализацией и локализацией.
  6. Улучшенные инструменты и поддержка IDE: Java 21 направлена ​​на улучшение инструментов и поддержки IDE с расширенными функциями для навигации по коду, автозаполнения и рефакторинга. Разработчики могут рассчитывать на более плавную разработку при использовании популярных Java IDE.

Приятного чтения! Следите и делитесь с друзьями и контактами.