ПУТЕШЕСТВИЕ ПО РАЗРАБОТКЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Java 18: 4 основные функции, которые вы должны знать

Java 18: 4 основные функции, которые вы должны знать как инженер-программист

ОБЗОР

Java 18 была выпущена 22 марта 2022 года, это первый выпуск после последнего выпуска Long-Term-Support (LTS), Java 17. Если вы пропустили, вы можете посмотреть мою статью Java 17: 5 функций, которые вы должны знать. .

В этом уроке я расскажу о последней платформе Java, Java SE 18, включая новые функции и изменения. Java 18 стала общедоступной 22 марта 2022 года.

Во-первых, в Java 18 есть много предложений по улучшению JDK (JEP). Я разместил их в порядке номеров JEP, вы можете увидеть список ниже для Java 18:

Хотя у нас есть много функций в Java 18, я поделюсь четырьмя основными функциями, которые должны знать все разработчики программного обеспечения в версии Java 18. Давайте исследовать!

4 ОСНОВНЫЕ ФУНКЦИИ, КОТОРЫЕ ВЫ ДОЛЖНЫ ЗНАТЬ В JAVA 18

#1: UTF8 по умолчанию

Я считаю, что разработчикам Java приходится сталкиваться со многими проблемами, потому что набор символов Java различается в зависимости от операционной системы (Linux, Window и т. д.) и языковых настроек. Стандартные API-интерфейсы Java для чтения и записи файлов, кодировка которых передается в качестве аргумента. Набор символов управляет преобразованием между необработанными байтами и 16-битными значениями char языка программирования Java. Поддерживаемые кодировки включают US-ASCII, UTF-8 и ISO-8859-1.

Если аргумент кодировки не передается функции, стандартные API Java обычно используют кодировку по умолчанию. JDK выбирает кодировку по умолчанию при запуске приложения в зависимости от среды выполнения: ОС, языковой стандарт пользователя и т. д.

Давайте рассмотрим этот пример, где у нас есть функция для написания текста «Счастливого кодирования!» на японском и запустите функцию в Unix (Linux или MacOS):

try (FileWriter fileWriter = new FileWriter("techisbeautiful.txt");             BufferedWriter bWriter = new BufferedWriter(fileWriter)) {   
    bWriter.write("ハッピーコーディング!"); 
}

Если вы запустите функцию чтения ниже в Windows, у вас возникнут проблемы, поэтому вы не сможете прочитать текст, который вы написали:

try (FileReader fReader = new FileReader("techisbeautiful.txt");     BufferedReader br = new BufferedReader(fReader)) {   
    String line = br.readLine();   
    System.out.println(line); 
}

Причина этого в том, что Unix хранит файл в формате UTF-8, а Windows читает его в формате Windows-1252. В этой новой версии Java 18 эта проблема решена, так как UTF-8 теперь используется по умолчанию.

#2: Простой веб-сервер

В Java 18 он предоставляет инструмент командной строки для запуска веб-сервера. Хотя этот инструмент не рекомендуется использовать в производственной среде, он полезен для проверки концепции, специального программирования или тестирования.

Чтобы запустить веб-сервер, мы можем использовать команду «jwebserver». По умолчанию он запускает сервер на локальном хосте: 8000.

$ jwebserver 

вы можете использовать параметр -b, чтобы указать IP-адрес, который сервер должен прослушивать. С помощью -p вы можете изменить порт, а с помощью -d каталог, который должен обслуживать сервер. С помощью -o вы можете настроить вывод журнала. Например:

$ jwebserver -b 127.0.0.50 -p 1234 -d /techisbeautiful -o verbose
Serving /techisbeautiful and subdirectories on 50 port 1234
URL http://127.0.0.50:1234/

Кроме того, вы можете получить список опций с пояснениями с помощью:

jwebserver -h

# 3: Повторно реализовать базовое отражение с помощью дескрипторов методов

Хотя это изменение редко будет использоваться разработчиком программного обеспечения, стоит знать об этом изменении, если вы работаете с отражением Java. Если вы работаете с Java, вы знаете, что всегда есть несколько подходов к использованию отражения Java. Например, чтобы прочитать приватное поле id строки с помощью отражения, есть два способа:

1. Основное отражение:

Field field = String.class.getDeclaredField("id");
field.setAccessible(true);
byte[] id = (byte[]) field.get(string);

2. Дескрипторы методов

VarHandle handle =
    MethodHandles.privateLookupIn(String.class, MethodHandles.lookup())
        .findVarHandle(String.class, "id", byte[].class);
byte[] id = (byte[]) handle.get(string);

В Java 18 было решено повторно реализовать код классов отражения «java.lang.reflect.Method», «Field» и «Constructor» поверх дескрипторов методов «java.lang.invoke». Это уменьшит усилия по разработке API «java.lang.reflect» и «java.lang.invoke».

# 4: Улучшите способ создания документов Java API

В Java 18 он добавил тег «@snippet» в JavaDoc. В предыдущей версии, если вам нужно интегрировать многострочные фрагменты кода в JavaDoc, вы должны сделать это через ‹pre›…‹/pre›. У этого есть 2 недостатка:

  • Без разрыва строки между тегом ‹pre› и кодом или без разрыва строки между кодом и ‹/pre›.
  • Код должен начинаться сразу после звездочек

Это пример с ‹pre› для разработки JavaDoc:

/**
 * Write a text file with Java 11:
 *
 * <pre><b>try</b> (BufferedWriter writer = Files.<i>newBufferedWriter</i>(path)) {
 *  writer.write("text");
 *}</pre>
 */

Это пример с ‹pre› и {@code…}:

/**
 * Write a text file with Java 11:
 *
 * <pre>{@code try (BufferedWriter writer = Files.newBufferedWriter(path)) {
 *  writer.write("text");
 *}}</pre>
 */

Благодаря новому усовершенствованию в Java 18 мы можем написать Javadoc следующим образом:

/**
 * {@snippet :
 * try (BufferedWriter writer = Files.newBufferedWriter(path)) {
 *   writer.write("text");  // @highlight substring="text"
 * }
 * }
 */

Вы можете видеть, что это намного проще.

КРАТКОЕ СОДЕРЖАНИЕ

В этой статье я поделился четырьмя основными новыми функциями Java 18, которые необходимо знать, с примерами. Мы можем суммировать четыре из них здесь:

  • UTF-8 — это набор символов по умолчанию, независимо от настроек языка и локали.
  • Использование команды «jwebserver» для быстрого запуска веб-сервера.
  • Повторно реализуйте Core Reflection с помощью дескрипторов методов.
  • Улучшите способ создания документов Java API.

Если вы пропустили «обязательные функции» в предыдущих версиях Java, вы можете проверить их ниже:

Если вам понравилась эта история, пожалуйста, подпишитесь, подпишитесь на меня, чтобы первым получать электронные письма о моих следующих историях.

Вы можете стать участником Medium здесь, чтобы иметь неограниченный доступ ко всем историям на платформе Medium. Если вы используете ссылку выше, это также поддерживает меня, потому что у меня есть небольшая комиссия от Medium. Спасибо!