Java 14 должна выйти позже в этом месяце — с рядом изменений.
Какие изменения планируется включить в обновление:
- JEP 305: сопоставление шаблонов для «instanceof» (предварительная версия). Сопоставление шаблонов позволяет выражать обычную логику «кратко и безопасно». Согласно документации OpenJDK, сейчас существуют только специализированные решения для сопоставления шаблонов, поэтому авторы посчитали, что пришло время существенно расширить использование сопоставления шаблонов в Java.
- JEP 343: упаковщик (инкубатор). Этот инструмент позволяет создавать установочные пакеты для автономных Java-приложений.
- JEP 345: выделение памяти с поддержкой NUMA для G1. Предполагается, что это улучшит производительность G1 на больших машинах.
- JEP 349: потоки событий JFR. Это позволит непрерывно считывать данные профилировщика JDK Flight Recorder.
- JEP 352: сопоставленные байтовые буферы в энергонезависимой памяти. В этом выпуске добавлены новые режимы сопоставления файлов, которые позволяют использовать API-интерфейс FileChannel для создания экземпляров MappedByteBuffer, ссылающихся на энергонезависимую память.
- JEP 358: полезная информация в исключениях NullPointerException. Теперь исключения NullPointerException, генерируемые виртуальной Java-машиной, будут указывать, какая переменная оказалась «null».
- JEP 359: записи (предварительная версия). Записи дают синтаксис для объявления классов, действующих как удобные и понятные хранилища неизменяемых данных. Одна из основных претензий к Java в том, что приходится писать слишком много кода, особенно когда речь идет о классах. В документации OpenJDK говорится, что из-за этого разработчики иногда пытаются изловчиться и облегчить себе работу, что приводит к проблемам в будущем.
- JEP 361: «switch» как выражение. Теперь «switch» можно использовать и как оператор, и как выражение. Это упростит использование Java и заложит фундамент для реализации сопоставления шаблонов в «switch». Ранее эта функция была представлена в виде предварительной версии в JDK 12 и JDK 13.
- JEP 362: устаревание портов на Solaris и SPARC. Начиная с этого выпуска, данные порты будут считаться нерекомендуемыми к использованию, а в одном из следующих выпусков будут полностью удалены.
- JEP 363: удаление сборщика мусора (GC), работающего по алгоритму маркировки и очистки (CMS). Сборщик мусора CMS уже более двух лет считается устаревшим — с тех пор внимание было обращено на улучшение других сборщиков. В частности, были представлены два новых: ZGC и Shenandoah. Команда разработчиков считает, что теперь CMS можно спокойно удалять, и ожидает, что будущие улучшения в других сборщиках мусора еще больше снизят потребность в CMS.
- JEP 364 и 365: ZGC в macOs и Windows. Сборщик мусора ZCG был портирован на macOS и Windows.
- JEP 366: устаревание комбинации алгоритмов сбора мусора ParallelScavenge + SerialOld. По словам команды разработчиков, эта комбинация используется редко, но требует значительных усилий по поддержке. Они считают, что такая комбинация полезна только при развертывании, которое сочетает в себе очень большой сборщик мусора нового поколения и очень маленький старого поколения.
- JEP 367: удаление API и инструментов Pack200. Эти инструменты считаются устаревшими с версии Java SE 11.
- JEP 368: текстовые блоки (вторая предварительная версия). Добавлены текстовые блоки — многострочные строковые литералы, которые можно использовать без escape-последовательностей. Это позволяет обеспечить предсказуемое поведение форматирования строк и контролировать их отображение.
- JEP 370: API доступа к внешней памяти (инкубатор). Этот API даст возможность приложениям безопасно и эффективно получать доступ к внешней памяти («foreign memory») вне «кучи» Java.
Новость переведена в Alconost, профессиональной студии по переводу и локализации
vsb
Пожалуй NullPointerException самое полезное из всего. Бэкпортировали бы это в восьмёрку...