Hoʻokuʻu ʻia ʻo Java SE 14

Ma hope o ʻeono mahina o ka hoʻomohala ʻana, Oracle hoʻokuʻu anuu ʻO Java SE 14 (Java Platform, Standard Edition 14), ua hoʻohana ʻia ka papahana OpenJDK open-source ma ke ʻano he hoʻokō kuhikuhi. Mālama ʻo Java SE 14 i ka hoʻohālikelike hope me nā hoʻokuʻu mua o ka platform Java; e hana nā papahana Java a pau i kākau mua ʻia me ka ʻole o nā loli i ka wā i hoʻokuʻu ʻia ma lalo o ka mana hou. Mākaukau-e-hoʻouka Java SE 14 kūkulu (JDK, JRE a me Server JRE) hoomakaukauia no Linux (x86_64), Windows a me macOS. Hoʻokumu ʻia ka hoʻokō kuhikuhi e ka papahana OpenJDK 14 Java he kumu hāmama piha ma lalo o ka laikini GPLv2, me nā ʻokoʻa GNU ClassPath e ʻae ana i ka hoʻopili ikaika ʻana me nā huahana kalepa.

Ua helu ʻia ʻo Java SE 14 ma ke ʻano he kākoʻo kākoʻo ākea a e hoʻomau ʻia e loaʻa nā mea hou a hiki i ka hoʻokuʻu hou ʻana. Pono ka lālā Long Term Support (LTS) ʻo Java SE 11, e hoʻomau i ka loaʻa ʻana o nā mea hou a hiki i 2026. E kākoʻo ʻia ka lālā LTS o Java 8 a hiki i Dekemaba 2020. Hoʻolālā ʻia ka hoʻokuʻu hou ʻana o LTS no Kepakemapa 2021. E hoʻomanaʻo mākou iā ʻoe e hoʻomaka ana me ka hoʻokuʻu ʻana o Java 10, ua hoʻololi ka papahana i kahi kaʻina hana hou, e hōʻike ana i kahi pōkole pōkole no ka hoʻokumu ʻana i nā hoʻokuʻu hou. Hoʻomohala ʻia nā hana hou i loko o kahi lālā kumu i hoʻonui mau ʻia, aia nā hoʻololi i hana ʻia a hoʻololi ʻia nā lālā i kēlā me kēia ʻeono mahina e hoʻopaʻa i nā hoʻokuʻu hou.

Mai nā mea hou 14 Java hiki mark:

  • Добавлена экспериментальная поддержка hoʻolike like i loko o ka "instanceof" mea hoʻohana, e hiki ai iā ʻoe ke wehewehe koke i kahi loli kūloko e kiʻi i ka waiwai i nānā ʻia. No ka laʻana, hiki iā ʻoe ke kākau koke "inā (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" me ka wehewehe ʻole ʻana i ka "String s = (String) obj".

    ʻO ia:

    inā (obj instanceof Group) {
    Pūʻulu hui = (Group)obj;
    var entries = group.getEntries();
    }

    I kēia manawa hiki iā ʻoe ke hana me ka ʻole o ka wehewehe ʻana "Group group = (Group) obj":

    inā (obj instanceof hui pūʻulu) {
    var entries = group.getEntries();
    }

  • Добавлена экспериментальная поддержка нового ключевого слова «mooolelo", ka mea e hāʻawi i kahi palapala paʻa no ka wehewehe ʻana i nā papa, e ʻae iā ʻoe e pale i ka wehewehe ʻana i nā ʻano haʻahaʻa haʻahaʻa like ʻole e like me ka like (), hashCode () a me toString () i nā hihia i mālama ʻia ka ʻikepili i nā kahua i loli ʻole ke ʻano. Ke hoʻohana ka papa i nā hoʻokō maʻamau o nā ʻano like (), hashCode () a me toString (), hiki iā ia ke hana me ka ʻole o kā lākou wehewehe kikoʻī:

    moʻolelo lehulehu BankTransaction(LocalDate date,
    huina pālua
    Hōʻike i ke kaula) {}

    E hoʻohui ʻokoʻa kēia ʻōlelo i ka hoʻokō ʻana o nā ʻano like (), hashCode () a me toString () me ka hoʻohui ʻana i nā ʻano hana hana a me ka getter.

  • Стандартизирована и включена по умолчанию поддержка новой формы выражений «switch», не требующей указания оператора «break», позволяющей объединять повторяющиеся метки и допускающей использование не только в форме оператора, но и как выражения.

    var log = switch (event) {
    case PLAY -> «User has triggered the play button»;
    case STOP, PAUSE -> «User needs a break»;
    default -> {
    String message = event.toString();
    LocalDateTime now = LocalDateTime.now();
    yield «Unknown event » + message +
    » logged on » + now;
    }
    };

  • Расширена экспериментальная поддержка nā poloka kikokikona — новой формы строковых литералов, позволяющих включать в исходный код многострочные текстовые данные без применения в них экранирования символов и сохраняя исходное форматирования текста в блоке. Обрамление блока осуществляется тремя двойными кавычками. В Java 14 в текстовых блоках реализована поддержка escape-последовательности «\s» для определения одного пробела и «\» для объединения со следующей строкой (игнорирования перевода строки, когда нужно вывести очень длинную строку). Например, вместо кода

    Kaha html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Aia mai ka Java 1!\" » +
    "\n\t" + " » +
    "\n" + " ";

    hiki iā ʻoe ke kuhikuhi:

    Kaha html = """


    »Java 1\
    aia maanei!

    """;

  • Расширена информативность диагностики при возникновении исключений NullPointerException. Если раньше сообщение об ошибке лишь ссылалось на номер строки, то теперь в нём детализируется какой из методов вызвал исключение. Расширенная диагностика пока включается только при запуске с флагом «-XX:+ShowCodeDetailsInExceptionMessages». Например, при указании данного флага исключение в строке

    var name = user.getLocation().getCity().getName();

    приведёт к выводу сообщения

    Exception in thread «main» java.lang.NullPointerException: Cannot invoke «Location.getCity()»
    because the return value of «User.getLocation()» is null
    at NullPointerExample.main(NullPointerExample.java:5):5)

    которое позволяет понять, что метод Location.getCity() не был вызван, а User.getLocation() вернул значение null.

  • Hoʻokō ʻia предварительный вариант утилиты jpackage, позволяющей создавать пакеты для самодостаточных (self-contained) Java-приложений. Утилита базируется на javapackager из JavaFX и позволяет формировать пакеты в форматах, родных для различных платформ (msi и exe для Windows, pkg и dmg для macOS, deb и rpm для Linux). Пакеты включают все необходимые зависимости.
  • В сборщик мусора G1 hoʻohui ʻia новый механизм распределения памяти, учитывающий специфику работу на крупных системах, использующих архитектуру HELU. Новый распределитель памяти включается при помощи флага «+XX:+UseNUMA» и позволяет существенно поднять производительность на NUMA-системах.
  • Hoʻohui ʻia API для отслеживания на лету событий JFR (JDK Flight Recorder), например для организации непрерывного мониторинга.
  • Hoʻohui ʻia модуль jdk.nio.mapmode, предлагающий новые режимы (READ_ONLY_SYNC, WRITE_ONLY_SYNC) для создания отображаемых байтовых буферов (MappedByteBuffer), ссылающихся на энергонезависимую память (NVM).
  • Hoʻokō ʻia предварительный вариант API Foreign-Memory Access, позволяющий Java-приложениям безопасно и эффективно получить доступ к областям памяти, вне кучи Java, манипулируя новыми абстракциями MemorySegment, MemoryAddress и MemoryLayout.
  • Объявлены устаревшими порты для ОС Solaris и процессоров SPARC (Solaris/SPARC, Solaris/x64 и Linux/SPARC) c намерением удалить данные порты в будущем. Перевод указанных портов в разряд устаревших позволит сообществу ускорить разработку новых возможностей OpenJDK, не тратя время на поддержание особенностей, специфичных для Solaris и SPARC.
  • Holoi ʻia сборщик мусора CMS (Concurrent Mark Sweep), который два года назад был отмечен устаревшим и остался без сопровождения (на смену CMS давно пришёл сборщик мусора G1). Кроме того, kūkala ʻia устаревшим применение комбинации алгоритмов сборки мусора ParallelScavenge и SerialOld (запуск с опциями «-XX:+UseParallelGC -XX:-UseParallelOldGC»).
  • Обеспечена экспериментальная поддержка сборщика мусора ZGC (Z Garbage Collector) на платформах macOS и Windows (ранее поддерживался только в Linux). ZGC работает в пассивном режиме, насколько это возможно минимизирует задержки из-за сборки мусора (время остановки при использовании ZGC не превышает 10 мс.) и может работать как с небольшими, так и с огромными кучами, размером от нескольких сотен мегабайт до многих терабайт.
  • Wehe ʻia инструментарий и API для сжатия JAR-файлов с использованием алгоритма Pack200.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka