Вышла Java 14

Вышла общедоступная версия Java 14. Ссылки на скачивание:

В этот релиз попало 16 JEP'ов, а также сотни более мелких улучшений и тысячи исправлений багов. Список JEP'ов:

  • Паттерн-матчинг для оператора instanceof (JEP 305) – улучшение оператора instanceof для поддержки паттерн-матчинга по типу. Его мы подробно рассматривали в этой статье.
  • Записи (Preview) (JEP 359) – новая синтаксическая конструкция в языке, которая позволяет объвлять классы-носители данных намного более компактно посредством нового ключевого слова record. Записи мы также рассматривали в отдельной статье.
  • Выражения switch (JEP 361) – улучшенный оператор switch, который появился в Java 12 и был немного изменён в Java 13, теперь стал стабильной конструкцией и больше не требует preview-режима.
  • Блоки текста (второе Preview) (JEP 368) – новый вид строковых литералов, который появился в Java 13, теперь дополнен двумя новыми экранирующими последовательностями для продолжения строки и пробела. Конструкция пока ещё остаётся в preview-режиме.
  • Полезные NullPointerException'ы (JEP 358) – улучшение NullPointerException, которое детально сообщает, что именно было null. Включается с помощью ключа -XX:+ShowCodeDetailsInExceptionMessages.
  • Инструмент упаковки (JEP 343) – новый инструмент jpackage для создания самодостаточных Java-приложений, который поддерживает нативные форматы упаковки. Пока предоставляется как инкубационный модуль.
  • ZGC на macos и Windows (JEP 364 и 365) – порт сборщика мусора ZGC, который был доступен только на Linux, на другие операционные системы. Сборщик мусора всё ещё находится в экспериментальном статусе.
  • Удаление сборщика мусора CMS (JEP 363) – сборщик мусора Concurrent Mark Sweep, который стал deprecated в Java 9, теперь окончательно удалён.
  • Deprecate the ParallelScavenge + SerialOld GC Combination (JEP 366) – комбинация флагов -XX:+UseParallelGC -XX:-UseParallelOldGC теперь стала deprecated.
  • NUMA-Aware Memory Allocation for G1 (JEP 345) – неравномерный доступ к памяти теперь поддерживается не только в ParallelGC, но и в G1.
  • JFR Event Streaming (JEP 349) – предоставление возможности поглощения данных JDK Flight Recorder в непрерывном режиме. Это может быть полезно, например, в целях непрерывного мониторинга Java-процесса. Раньше данные можно было считывать только путём остановки записи, сохранения файла на диск и его последующего чтения.
  • Non-Volatile Mapped Byte Buffers (JEP 352) – поддержка неволатильной памяти в MappedByteBuffer. Ранее в Java это было возможно лишь посредством внешних вызовов к системной библиотеке, написанной на C (например, libpmem). Однако такие вызовы стоят очень дорого, что делает Java плохо пригодной для написания транзакционных программ с персистестным состоянием. Новый же режим отображения в MappedByteBuffer решает эту проблему.
  • Deprecate the Solaris and SPARC Ports (JEP 362) – порты JDK на Solaris/SPARC, Solaris/x64 и Linux/SPARC стали deprected for removal. Когда порты исчезнут окончательно, это упростит и ускорит разработку JDK.
  • Remove the Pack200 Tools and API (JEP 367) – инструменты pack200 и unpack200, которые стали deprecated в Java 11, теперь удалены окончательно.
  • Foreign-Memory Access API (Incubator) (JEP 370) – долгожданное стандартное API для доступа к памяти вне кучи Java, которое разрабатывается в рамках проекта Panama. Это новое API не имеет ограничений, которые есть у direct ByteBuffer, более безопасно, чем нестандартный sun.misc.Unsafe и более эффективно, чем JNI (и без возни с кодом на C). Однако новое API ещё имеет экспериментальном статус, и поэтому находится в инкубационном модуле.

Java 14 не является LTS-релизом.

Подписывайтесь на канал в Telegram, чтобы не пропускать новости.

Все материалы на этом сайте выложены под лицензией CC BY-SA 4.0
© Евгений Козлов, 2017-2020