Mwepụta Java SE 14

Mgbe ọnwa isii nke mmepe gasịrị, Oracle wepụtara ikpo okwu JavaSE 14 (Java Platform, Standard Edition 14), ọrụ OpenJDK mepere emepe ka a na-eji dị ka ntinye ntụaka. Java SE 14 na-ejigide ndakọrịta azụ na mwepụta ndị gara aga nke ikpo okwu Java; ọrụ Java niile edere na mbụ ga-arụ ọrụ na-enweghị mgbanwe mgbe agbadoro n'okpuru ụdị ọhụrụ ahụ. Njikere iji wụnye Java SE 14 wulite (JDK, JRE na Server JRE) kwadebere maka Linux (x86_64), Windows na macOS. Mmejuputa nrụtụ aka nke ọrụ OpenJDK mepụtara Java 14 bụ isi mmalite mepere emepe nke ọma n'okpuru ikike GPLv2, yana ndị GNU ClassPath na-enye ohere njikọ siri ike na ngwaahịa azụmahịa.

Java SE 14 bụ nkewa dị ka ntọhapụ nkwado izugbe ga-aga n'ihu na-enweta mmelite ruo mgbe ntọhapụ na-esote. Alaka Nkwado Ogologo Ogologo (LTS) kwesịrị ịbụ Java SE 11, nke ga-aga n'ihu na-enweta mmelite ruo 2026. A ga-akwado ngalaba LTS gara aga nke Java 8 ruo Disemba 2020. Edebere mwepụta LTS na-esote maka Septemba 2021. Ka anyị chetara gị na malite na ntọhapụ nke Java 10, ọrụ ahụ gbanwere na usoro mmepe ọhụrụ, na-egosi usoro dị mkpirikpi maka ịmepụta mwepụta ọhụrụ. A na-emepụta ọrụ ọhụrụ ugbu a n'otu alaka ụlọ ọrụ na-emelite mgbe niile, nke gụnyere mgbanwe ndị emebere na nke a na-esi na ya na-esi na alaka ụlọ ọrụ na-arụ ọrụ kwa ọnwa isii iji kwadoo mwepụta ọhụrụ.

Site ihe ọhụrụ Java 14 nwere ike akara:

  • Добавлена экспериментальная поддержка ndakọrịta ụkpụrụ na onye ọrụ "ihe atụ", nke na-enye gị ohere ịkọwa ozugbo mgbanwe mpaghara iji nweta uru enyochara. Dịka ọmụmaatụ, ị nwere ike dee ozugbo "ọ bụrụ (obj example of String s && s.length()> 5) {.. s.contains(..) ..}" na-akọwapụtaghị "string s = (string) obj".

    bụ:

    ọ bụrụ (ihe atụ nke otu) {
    Otu otu = (Otu)obj;
    var ndenye = group.getEntries ();
    }

    Ugbu a ị nwere ike ime na-enweghị nkọwa "Group Group = (Group) obj":

    ọ bụrụ na (obj example of Group group) {
    var ndenye = group.getEntries ();
    }

  • Добавлена экспериментальная поддержка нового ключевого слова «ndekọ", nke na-enye mpempe akwụkwọ kọmpat maka ịkọwa klaasị, na-enye gị ohere izere ịkọwapụta nke ọma ụzọ dị iche iche dị ala dị ka nha (), hashCode () na toString () n'ọnọdụ ebe echekwara data naanị na mpaghara nke omume ya anaghị agbanwe. Mgbe klaasị na-eji usoro mmejuputa ọkọlọtọ nke nha nha (), hashCode() na toString(), ọ nwere ike ime na-enweghị nkọwapụta ha:

    ndekọ ọha BankTransaction (Ụbọchị mpaghara,
    ego okpukpu abụọ
    Nkọwa eriri) {}

    Nkwuwapụta a ga-agbakwunye na-akpaghị aka mmejuputa usoro nha nha (), hashCode() na toString() na mgbakwunye na ụzọ ndị nrụpụta na ndị na-emepụta ihe.

  • Стандартизирована и включена по умолчанию поддержка новой формы выражений «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;
    }
    };

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

    eriri HTML = " » +
    "\n\t" +" » +
    "\n\t\t" +" "Java 1 nọ ebe a!" » +
    "\n\t" +" » +
    "\n" +" ";

    ị nwere ike ịkọwa:

    eriri HTML = """


    "Java 1"
    nọ ebe a!

    """;

  • Расширена информативность диагностики при возникновении исключений 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.

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

isi: opennet.ru

Tinye a comment