Что нового будет в Java 14
[1]
Java 14 должна выйти позже в этом месяце — с рядом изменений.
Какие изменения планируется включить в обновление:
- JEP 305: сопоставление шаблонов для «instanceof» (предварительная версия) [2]. Сопоставление шаблонов позволяет выражать обычную логику «кратко и безопасно». Согласно документации OpenJDK, сейчас существуют только специализированные решения для сопоставления шаблонов, поэтому авторы посчитали, что пришло время существенно расширить использование сопоставления шаблонов в Java.
- JEP 343: упаковщик (инкубатор) [3]. Этот инструмент позволяет создавать установочные пакеты для автономных Java-приложений.
- JEP 345: выделение памяти с поддержкой NUMA для G1 [4]. Предполагается, что это улучшит производительность G1 на больших машинах.
- JEP 349: потоки событий JFR [5]. Это позволит непрерывно считывать данные профилировщика JDK Flight Recorder.
- JEP 352: сопоставленные байтовые буферы в энергонезависимой памяти [6]. В этом выпуске добавлены новые режимы сопоставления файлов, которые позволяют использовать API-интерфейс FileChannel для создания экземпляров MappedByteBuffer, ссылающихся на энергонезависимую память.
- JEP 358: полезная информация в исключениях NullPointerException [7]. Теперь исключения NullPointerException, генерируемые виртуальной Java-машиной, будут указывать, какая переменная оказалась «null».
- JEP 359: записи (предварительная версия) [8]. Записи дают синтаксис для объявления классов, действующих как удобные и понятные хранилища неизменяемых данных. Одна из основных претензий к Java в том, что приходится писать слишком много кода, особенно когда речь идет о классах. В документации OpenJDK говорится, что из-за этого разработчики иногда пытаются изловчиться и облегчить себе работу, что приводит к проблемам в будущем.
- JEP 361: «switch» как выражение [9]. Теперь «switch» можно использовать и как оператор, и как выражение. Это упростит использование Java и заложит фундамент для реализации сопоставления шаблонов в «switch». Ранее эта функция была представлена в виде предварительной версии в JDK 12 и JDK 13.
- JEP 362: устаревание портов на Solaris и SPARC [10]. Начиная с этого выпуска, данные порты будут считаться нерекомендуемыми к использованию, а в одном из следующих выпусков будут полностью удалены.
- JEP 363: удаление сборщика мусора (GC), работающего по алгоритму маркировки и очистки (CMS) [11]. Сборщик мусора CMS уже более двух лет считается устаревшим — с тех пор внимание было обращено на улучшение других сборщиков. В частности, были представлены два новых: ZGC и Shenandoah. Команда разработчиков считает, что теперь CMS можно спокойно удалять, и ожидает, что будущие улучшения в других сборщиках мусора еще больше снизят потребность в CMS.
- JEP 364 и 365: ZGC в macOs [12] и Windows [13]. Сборщик мусора ZCG был портирован на macOS и Windows.
- JEP 366: устаревание комбинации алгоритмов сбора мусора ParallelScavenge + SerialOld [14]. По словам команды разработчиков, эта комбинация используется редко, но требует значительных усилий по поддержке. Они считают, что такая комбинация полезна только при развертывании, которое сочетает в себе очень большой сборщик мусора нового поколения и очень маленький старого поколения.
- JEP 367: удаление API и инструментов Pack200 [15]. Эти инструменты считаются устаревшими с версии Java SE 11.
- JEP 368: текстовые блоки (вторая предварительная версия) [16]. Добавлены текстовые блоки — многострочные строковые литералы, которые можно использовать без escape-последовательностей. Это позволяет обеспечить предсказуемое поведение форматирования строк и контролировать их отображение.
- JEP 370: API доступа к внешней памяти (инкубатор) [17]. Этот API даст возможность приложениям безопасно и эффективно получать доступ к внешней памяти («foreign memory») вне «кучи» Java.
Новость переведена в Alconost [18], профессиональной студии по переводу и локализации
Автор: alconost
Источник [19]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/348811
Ссылки в тексте:
[1] Image: https://habrahabr.ru/company/alconost/blog/491378/
[2] JEP 305: сопоставление шаблонов для «instanceof» (предварительная версия): https://openjdk.java.net/jeps/305
[3] JEP 343: упаковщик (инкубатор): https://openjdk.java.net/jeps/343
[4] JEP 345: выделение памяти с поддержкой NUMA для G1: https://openjdk.java.net/jeps/345
[5] JEP 349: потоки событий JFR: https://openjdk.java.net/jeps/349
[6] JEP 352: сопоставленные байтовые буферы в энергонезависимой памяти: https://openjdk.java.net/jeps/352
[7] JEP 358: полезная информация в исключениях NullPointerException: https://openjdk.java.net/jeps/358
[8] JEP 359: записи (предварительная версия): https://openjdk.java.net/jeps/359
[9] JEP 361: «switch» как выражение: https://openjdk.java.net/jeps/361
[10] JEP 362: устаревание портов на Solaris и SPARC: https://openjdk.java.net/jeps/362
[11] JEP 363: удаление сборщика мусора (GC), работающего по алгоритму маркировки и очистки (CMS): https://openjdk.java.net/jeps/363
[12] macOs: https://openjdk.java.net/jeps/364
[13] Windows: https://openjdk.java.net/jeps/365
[14] JEP 366: устаревание комбинации алгоритмов сбора мусора ParallelScavenge + SerialOld: https://openjdk.java.net/jeps/366
[15] JEP 367: удаление API и инструментов Pack200: https://openjdk.java.net/jeps/367
[16] JEP 368: текстовые блоки (вторая предварительная версия): https://openjdk.java.net/jeps/368
[17] JEP 370: API доступа к внешней памяти (инкубатор): https://openjdk.java.net/jeps/370
[18] Alconost: https://alconost.com/ru/?utm_source=habrahabr&utm_medium=article&utm_campaign=news&utm_content=java14
[19] Источник: https://habr.com/ru/post/491378/?utm_campaign=491378&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.