Что нового будет в Java 14


    Java 14 должна выйти позже в этом месяце — с рядом изменений.

    Какие изменения планируется включить в обновление:

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

    Новость переведена в Alconost, профессиональной студии по переводу и локализации
    Alconost
    Локализуем на 70 языков, делаем видеоролики для IT

    Комментарии 9

      +1

      Пожалуй NullPointerException самое полезное из всего. Бэкпортировали бы это в восьмёрку...

        0
        Что-то в последнее время создается впечатление, что ява постепенно умирает (используется по инерции либо из-за легаси). Возможно, это мне с дивана так кажется. Если есть те, кто непосредсвенно с ней связан, можете как-то прокомментировать это?
          0
          Java не умирает в production даже 8, ждем 2021 стабильной версии и будет перевод всего legacy, на Java 15.
          По последним проектам могу сказать, что Spring Boot + Java отлично заходит для среднего размера проектов и требует минимум усилий на уже имеющимся опыте.
            0
            «Умирает» это, конечно, громко сказано. Не холивара, а объективности ради, хотелось бы сказать, что убийц, пожалуй, пришло слишком много и уже приходиться более пристально смотреться по сторонам.
            Как по мне, джава уже не имеет былую популярность и становится побочным языком, пропуская всяким go и kotlin. Понятно, что в продакшене она живет, но новых вещей на джаве, имхо, все меньше. И получается, что уже лет через 5 сфера применения языка попросту сузится до банков и бирж.
              0
              Язык, на котором столько production и почти все top 100 компаний мира имеют технологии связанные с Java, взять тот же Cassandra, Hadoop и т.п. и этот язык является *default* для JVM — это очень важное качество, умереть, конечно, может. Но почему, на нем просто должны закончиться специалисты.

              Не могу судить о вашем возрасте, но люди, которым сейчас 30+ отлично знают именно Java и гораздо опытнее по решениям, алгоритмам и т.п. тех, кому сейчас 20-30, достаточно большой процент из них либо до сих пор пишет код, либо принимает решение на чем код писать. Со стороны молодежи, которая устраивается на работу на новых языках, как раз чтобы не конкурировать с другими и обеспечить себе новый проект, а не legacy, ситуация выглядит обратной. Но если судить о поколениях 15-20 лет Java, точно продолжит доминировать, а там посмотрим, сможет ли следующее поколение полностью переписать legacy.
            0

            Мне с дивана кажется, что Java во-первых вышла из моды, во-вторых её ниша разбавилась новыми языками, в частности Go, в-третьих в самой Java имеется некоторая фрагментарность на модерн-проекты (всякие Spring Boot) и старый устоявшийся код, который никто переписывать не собирается. Умиранием это мне не кажется, но определённо она слегка сдаёт позиции. С другой стороны разработчики вводят новые модные фичи: функциональное программирование, паттерн-матчинг планируется, лёгкие потоки тоже когда-нибудь будут, records. Оно, конечно, довольно поздно, но всё же есть и за счёт этого, думаю, в будущем будет набирать вес, то бишь не только лигаси.


            Конкретно я на Java пишу и никуда не собираюсь. С точки зрения того, кто её знает, это очень мощная технология. Библиотеки есть, JVM очень быстрая, IDE лучшая в мире. Не вижу ни единой причины смотреть в сторону других языков для серверной части типовых производственных проектов.

              0
              для серверной части типовых производственных проектов

              В этом-то и проблема, что, как мне кажется, джава становится нишевым языком и постепенно(в ближайшие лет 10), станет какой-нибудь оракловской 1с-кой.
                0

                Ну это очень большая ниша. А за пределы этой ниши Java вроде особо никогда не вылезала. Были потуги с десктопными приложенями, были потуги с GWT. Самая удачная "потуга" это Android, но там Java ненастоящая, да и ту котлином нынче заменили.

                  0
                  Благодарю за ответ. Собственно из-за замены на котлин и стало интересно, только ли на андроиде ява начала терять позиции.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое