Рубрики
Без рубрики

Java 11, хорошие части

Объявленный 25 сентября 2018 года, Java 11 является последним выпуском долгосрочной поддержки Oracle для Jav… Помеченный java.

Анонсированный 25 сентября 2018 года, Java 11 является последним выпуском долгосрочной поддержки Oracle для сообщества Java. Ниже приведен список наиболее важных функций и изменений:

Вывод типа для лямбда-параметров

Ключевое слово var было введено в Java 10 для реализации локальных переменных области видимости с динамическим выводом типов.

var aString = "This is a String";

В Java 11 ключевое слово var может использоваться для определения данного лямбда-параметра

Predicate notNull  = (var u) -> u != null;

HTTP-клиент

Известно, что это инкубационная функция JDK 9. Это стандартный API для поддержки клиентов HTTP/1, HTTP/2, синхронных, асинхронных и в реактивно-функциональном стиле. Это иллюстрируется следующим кодом со страницы HTTP-клиента Oracle:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("http://openjdk.java.net/"))
      .build();
client.sendAsync(request, asString())
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println)
      .join();

TLS 1.3

Java 11 поставляется с реализацией протокола безопасности транспортного уровня (TLS) версии 1.3. TLS – это протокол для обеспечения защищенного обмена данными между двумя концами канала связи. Он определяет безопасный канал связи как имеющий эти 3 основных критерия:

  • Идентификация
  • Конфиденциальность
  • Целостность

TLS 1.3 состоит из двух основных спецификаций:

  • Установление связи, также известное как управление фазой рукопожатия, при котором два партнера согласовывают безопасность обмена с помощью обмена ключами и криптографических алгоритмов
  • Фаза обмена данными, она же Протокол записи, где трафик рассматривается как передача записей, защищенных параметрами первой фазы.

Достаточно в качестве отступления, пожалуйста, смотрите ссылку в разделе Ссылки для получения дополнительной информации. Руководящий комитет JDK включил реализацию TLS 1.3 из-за его надежности в качестве протокола безопасности и для поддержания конкуренции с другими поставщиками, внедряющими его. Следуя этому примеру, реализация TLS включает различные криптографические алгоритмы для подписи и шифрования.

Функции, связанные с производительностью

JDK 11 уделяет большое внимание повышению производительности и инструментам. Учитывая тот факт, что сборка мусора является ключевым моментом для производительности Java, для GC были введены следующие функции:

  • ZGC : несмотря на то, что ZGC является экспериментальным, он обещает низкую задержку (менее 10 мс) и широкий диапазон поддержки объема памяти (от сотен мегабайт до терабайт). Он доступен только для Linux x64.
  • Epsilon GC : щедрый GC, который выделяет память без ее восстановления. Полезно для тестирования производительности и недолговечных Java-процессов.

Инструменты производительности занимают львиную долю в этом выпуске:

  • Профилирование кучи с низкими накладными расходами : предлагает ненавязчивый способ мониторинга распределения кучи памяти Java. На самом деле это программный собственный API, доступный для JVMTI (интерфейс инструментов JVM) для получения информации об объекте в куче.
  • Java Flight Recorder : важный инструмент для устранения неполадок и сбора данных с низкой производительностью. Он создает дамп данных, которые могут быть восстановлены с помощью Java Mission Control tool. В двух словах, мы запускаем инструмент в командной строке следующим образом
jcmd  JFR.start

где pid – идентификатор процесса уже запущенного java-приложения. Чтобы указать файл процесса дампа, в котором будет записываться состояние производительности приложения, используйте команду

jcmd  JFR.dump filename=recording.jfr

Чтобы остановить запись, выполните команду

jcmd  JFR.stop

и созданный файл может быть импортирован другими инструментами профилирования.

Устаревание и удаление некоторых функций из JDK

JavaFX больше не является частью JDK, это отдельная загрузка. Oracle прекратила предоставлять 32-разрядные двоичные файлы и автоматические обновления через сервер JRE. Удаляются следующие модули:

  • Корба
  • JAXP, JAXWS, JAF и общие аннотации
  • Движок JavaScript Nashorn устарел
  • Упаковочный костюм Java WebStart и Java-плагина

Для Corba и других модулей J2EE (таких как JAXB и JAX-WS) удаление было оправдано тем фактом, что они могут развиваться и поддерживаться вне сферы JDK, и синхронизировать изменения становится все сложнее и сложнее.

Незначительные особенности

С JDK 11 поставляется поддержка Unicode 10, что означает, что мы можем печатать смайлики. Еще одной особенностью является возможность выполнения отдельных java-файловых программ за один проход, вызывая

java OneClassFileProgram.java

вместо обычной последовательности (java, затем java). Под капотом нет файла класса на диске, все в памяти.

Рекомендации

Оригинал: “https://dev.to/aymenmarouani/java-11-the-good-parts-548p”