Java Development Kit (JDK) 14 в настоящее время находится на стадии кандидата на выпуск, и набор функций для выпуска в марте 2020 года был заморожен. Основные моменты новой версии будут включать дополнительное сопоставление шаблонов, лучшую обработку выражений переключения и API для бортового самописца JDK.
Первое изменение, о котором стоит упомянуть, — это поддержка сопоставления шаблонов для instanceof. Сопоставление шаблонов позволяет более кратко и безопасно выразить общую логику в программе, в частности условное извлечение компонентов из объектов. Instanceof используется для проверки того, является ли ссылка на объект экземпляром определенного типа.
В новый выпуск также был добавлен инструмент упаковки. Инструмент основан на инструменте JavaFX javapackager, поэтому поддерживает собственные форматы упаковки, чтобы предоставить конечным пользователям естественный опыт установки. Эти форматы включают msi и exe в Windows, pkg и dmg в macOS, а также deb и rpm в Linux.
JDK 14 должен повысить производительность G1 на больших машинах из-за нового выделения памяти с поддержкой NUMA. Современные многосекционные машины все чаще имеют неравномерный доступ к памяти (NUMA), и в то время как параллельный коллектор был осведомлен о NUMA в течение многих лет, другие сборщики горячих точек были осведомлены о NUMA. Это было особой проблемой для пользователей коллектора G1, отсюда и новое дополнение.
Добавлена поддержка потоковой передачи событий JFR, которая предоставляет данные бортового самописца JDK для непрерывного мониторинга.. Виртуальная машина HotSpot выдает более 500 точек данных с помощью JFR, большинство из которых недоступны другими средствами, кроме анализа файлов журналов. Новый API обеспечивает непрерывное потребление данных JFR на диске, как для приложений в процессе, так и для приложений вне процесса.
Одним из наиболее спорных дополнений в этом выпуске является поддержка записей в предварительной версии. Записи-это новый вид объявления типа в языке Java и форма класса с ограниченной областью. Разработчики говорят, что записи отказываются от свободы, которой обычно пользуются классы: возможности отделить API от представления. В свою очередь, записи приобретают значительную степень лаконичности.
В этом выпуске также был добавлен второй предварительный просмотр текстовых блоков. Текстовые блоки-это многострочные строковые литералы, которые устраняют необходимость в большинстве escape-последовательностей и автоматически форматируют строку предсказуемым образом. Первоначальный предварительный просмотр текстовых блоков был включен в JDK 13. Этот предварительный просмотр добавляет escape-последовательности для управления явными пробелами и управлением новой строкой.