Java SE 14 מעלדונג

נאָך זעקס חדשים פון אַנטוויקלונג, Oracle באפרייט פּלאַטפאָרמע JavaSE 14 (Java Platform, Standard Edition 14), די אָפֿן-מקור OpenJDK פּרויעקט איז געניצט ווי אַ רעפֿערענץ ימפּלאַמענטיישאַן. Java SE 14 האלט צוריק קאַמפּאַטאַבילאַטי מיט פרייַערדיק ריליסיז פון די Java פּלאַטפאָרמע אַלע פריער געשריבן Java פּראַדזשעקס וועט אַרבעטן אָן ענדערונגען ווען לאָנטשט אונטער די נייַע ווערסיע. גרייט-צו-ינסטאַלירן Java SE 14 בויען (JDK, JRE און Server JRE) צוגעגרייט פֿאַר לינוקס (קס86_64), ווינדאָוז און מאַקאָס. רעפערענץ ימפּלאַמענטיישאַן דעוועלאָפּעד דורך די OpenJDK פּרויעקט ז'אבא קסנומקס איז גאָר אָפֿן מקור אונטער די GPLv2 דערלויבעניש, מיט GNU ClassPath אויסנעמען אַלאַוינג דינאַמיש פֿאַרבינדונג מיט געשעפט פּראָדוקטן.

Java SE 14 איז קלאַסאַפייד ווי אַ גענעראַל שטיצן מעלדונג און וועט פאָרזעצן צו באַקומען דערהייַנטיקונגען ביז דער ווייַטער מעלדונג. די לאנג טערמין שטיצן (LTS) צווייַג זאָל זיין Java SE 11, וואָס וועט פאָרזעצן צו באַקומען דערהייַנטיקונגען ביז 2026. די פריערדיקע LTS צווייַג פון Java 8 וועט זיין געשטיצט ביז דעצעמבער 2020. דער ווייַטער LTS מעלדונג איז סקעדזשולד פֿאַר סעפטעמבער 2021. לאָזן אונדז דערמאָנען איר אַז סטאַרטינג מיט די מעלדונג פון Java 10, די פּרויעקט איז סוויטשט צו אַ נייַע אַנטוויקלונג פּראָצעס, וואָס ימפּלייז אַ קירצער ציקל פֿאַר די פאָרמירונג פון נייַע ריליסיז. ניו פאַנגקשאַנאַליטי איז איצט דעוועלאָפּעד אין איין קעסיידער דערהייַנטיקט בעל צווייַג, וואָס כולל פאַרטיק ענדערונגען און פון וואָס צווייגן זענען בראַנטשט יעדער זעקס חדשים צו סטייבאַלייז נייַע ריליסיז.

פון ינאָווויישאַנז ז'אבא קסנומקס איינער קענען צו טאָן:

  • Добавлена экспериментальная поддержка מוסטער וואָס ריכטן אין די "ינסטאַנסע פון" אָפּעראַטאָר, וואָס אַלאַוז איר צו מיד דעפינירן אַ היגע בייַטעוודיק צו אַקסעס די אָפּגעשטעלט ווערט. פֿאַר בייַשפּיל, איר קענען גלייך שרייַבן "אויב (אָבדזש ינסטאַנסע פון ​​שטריקל s && s.length ()> 5) {.. s.contains(..) ..}" אָן בפירוש דיפיינינג "סטרינג s = (סטרינג) אָבדזש".

    איז געווען:

    if (obj instanceof Group) {
    גרופע גרופּע = (גרופּע) אָבדזש;
    וואַר איינסן = group.getEntries();
    }

    איצט איר קענען טאָן אָן די דעפֿיניציע "גרופּע גרופּע = (גרופּע) אָבדזש":

    אויב (אָבדזש בייַשפּיל פון גרופע גרופּע) {
    וואַר איינסן = group.getEntries();
    }

  • Добавлена экспериментальная поддержка нового ключевого слова «רעקאָרד", וואָס גיט אַ סאָליד פאָרעם פֿאַר דיפיינינג קלאסן, אַלאַוינג איר צו ויסמיידן בפירוש דיפיינינג פאַרשידן נידעריק-מדרגה מעטהאָדס אַזאַ ווי יקוואַלז (), hashCode () און toString () אין קאַסעס ווו דאַטן זענען סטאָרד בלויז אין פעלדער וועמענס נאַטור קען נישט טוישן. ווען אַ קלאַס ניצט נאָרמאַל ימפּלאַמאַנץ פון די יקוואַלז (), hashCode () און toString () מעטהאָדס, עס קענען טאָן אָן זייער יקספּליסאַט דעפֿיניציע:

    עפנטלעך רעקאָרד באַנק טראַנסאַקטיאָן (LocalDate דאַטע,
    טאָפּל סומע
    שטריקל באַשרייַבונג) {}

    דער דעקלאַראַציע וועט אויטאָמאַטיש לייגן ימפּלאַמאַנץ פון די יקוואַלז (), hashCode () און toString () מעטהאָדס אין אַדישאַן צו די קאַנסטראַקטער און געטער מעטהאָדס.

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

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

    שטריקל HTML = " » +
    "\n\ט" + " » +
    "\n\ט" + " \"Java 1 איז דאָ!\" » +
    "\n\ט" + " » +
    "\n" + " ";

    איר קענען ספּעציפיצירן:

    שטריקל HTML = """


    »Java 1\
    איז דא!

    """;

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

  • ימפּלעמענטעד предварительный вариант утилиты jpackage, позволяющей создавать пакеты для самодостаточных (self-contained) Java-приложений. Утилита базируется на javapackager из JavaFX и позволяет формировать пакеты в форматах, родных для различных платформ (msi и exe для Windows, pkg и dmg для macOS, deb и rpm для Linux). Пакеты включают все необходимые зависимости.
  • В сборщик мусора G1 צוגעגעבן новый механизм распределения памяти, учитывающий специфику работу на крупных системах, использующих архитектуру אין. Новый распределитель памяти включается при помощи флага «+XX:+UseNUMA» и позволяет существенно поднять производительность на NUMA-системах.
  • צוגעגעבן API для отслеживания на лету событий JFR (JDK Flight Recorder), например для организации непрерывного мониторинга.
  • צוגעגעבן модуль jdk.nio.mapmode, предлагающий новые режимы (READ_ONLY_SYNC, WRITE_ONLY_SYNC) для создания отображаемых байтовых буферов (MappedByteBuffer), ссылающихся на энергонезависимую память (NVM).
  • ימפּלעמענטעד предварительный вариант API Foreign-Memory Access, позволяющий Java-приложениям безопасно и эффективно получить доступ к областям памяти, вне кучи Java, манипулируя новыми абстракциями MemorySegment, MemoryAddress и MemoryLayout.
  • Объявлены устаревшими порты для ОС Solaris и процессоров SPARC (Solaris/SPARC, Solaris/x64 и Linux/SPARC) c намерением удалить данные порты в будущем. Перевод указанных портов в разряд устаревших позволит сообществу ускорить разработку новых возможностей OpenJDK, не тратя время на поддержание особенностей, специфичных для Solaris и SPARC.
  • אויסגעמעקט сборщик мусора CMS (Concurrent Mark Sweep), который два года назад был отмечен устаревшим и остался без сопровождения (на смену CMS давно пришёл сборщик мусора G1). Кроме того, מודיע устаревшим применение комбинации алгоритмов сборки мусора ParallelScavenge и SerialOld (запуск с опциями «-XX:+UseParallelGC -XX:-UseParallelOldGC»).
  • Обеспечена экспериментальная поддержка сборщика мусора ZGC (Z Garbage Collector) на платформах macOS и Windows (ранее поддерживался только в Linux). ZGC работает в пассивном режиме, насколько это возможно минимизирует задержки из-за сборки мусора (время остановки при использовании ZGC не превышает 10 мс.) и может работать как с небольшими, так и с огромными кучами, размером от нескольких сотен мегабайт до многих терабайт.
  • אַוועקגענומען инструментарий и API для сжатия JAR-файлов с использованием алгоритма Pack200.

מקור: opennet.ru

לייגן אַ באַמערקונג