Java SE 14 tatalaina

Ina ua maeʻa le ono masina o atinaʻe, Oracle tatalaina tulaga JavaSE 14 (Java Platform, Standard Edition 14), o le open-source OpenJDK project o loʻo faʻaaogaina e fai ma faʻamatalaga faʻatinoga. Java SE 14 o loʻo faʻatumauina le fesoʻotaʻiga i tua ma faʻasalalauga muamua o le Java platform; o galuega uma Java na tusia muamua o le a galue e aunoa ma ni suiga pe a faʻatautaia i lalo o le lomiga fou. Sauni-e fa'apipi'i Java SE 14 fausia (JDK, JRE ma Server JRE) saunia mo Linux (x86_64), Windows ma macOS. Fa'atinoga fa'asino na fa'atupuina e le poloketi OpenJDK Java 14 o lo'o tatala atoatoa le puna i lalo ole laisene GPLv2, fa'atasi ai ma GNU ClassPath tuusaunoaga e mafai ai ona feso'ota'i malosi ma oloa fa'apisinisi.

Java SE 14 ua faʻavasegaina o se faʻasalalauga lagolago lautele ma o le a faʻaauau pea ona maua faʻamatalaga seia oʻo i le isi faʻasalalauga. Ole lala ole Long Term Support (LTS) e tatau ona Java SE 11, lea o le a faʻaauau pea ona maua faʻamatalaga seia oʻo i le 2026. O le lala LTS muamua o Java 8 o le a lagolagoina seia oʻo ia Tesema 2020. O le isi faʻasalalauga LTS ua faʻatulagaina mo Setema 2021. Sei matou faamanatu atu ia te oe e amata i le tatalaina o le Java 10, o le poloketi na suia i se faiga fou o le atinaʻe, e faʻaalia ai se taamilosaga puupuu mo le faʻavaeina o faʻasalalauga fou. O lo'o fa'atupuina nei galuega fou i se tasi o paranesi fa'afou fa'afou, lea e aofia ai suiga ua uma ona fai ma o lala e fa'aputuina i le ta'i ono masina e fa'amautu ai fa'asalalauga fou.

Mai mea fou Java 14 mafai ia matau:

  • Добавлена экспериментальная поддержка fa'atusa fa'atusa i le "instanceof" operator, lea e mafai ai ona e vave faʻamalamalamaina se fesuiaiga i le lotoifale e maua ai le tau siaki. Mo se faʻataʻitaʻiga, e mafai ona e tusia vave "pe a (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" e aunoa ma le faʻamalamalamaina manino "String s = (String) obj".

    Sa:

    afai (obj instanceof Group) {
    Vaega vaega = (Vaega)obj;
    var entries = group.getEntries();
    }

    Ole taimi nei e mafai ona e faia e aunoa ma le faʻamatalaga "Vaega Vaega = (Vaega) obj":

    afai (obj instanceof Group group) {
    var entries = group.getEntries();
    }

  • Добавлена экспериментальная поддержка нового ключевого слова «faamaumauga", lea e maua ai se pepa faʻapitoa mo le faʻamalamalamaina o vasega, e mafai ai ona e aloese mai le faʻamalamalamaina manino o auala maualalo maualalo e pei o le tutusa (), hashCode () ma le toString () i mataupu e teuina ai faʻamatalaga i totonu o fanua o latou amio e le suia. Pe a faʻaaogaina e le vasega faʻataʻitaʻiga masani o le tutusa (), hashCode () ma toString () metotia, e mafai ona faia e aunoa ma a latou faʻamatalaga manino:

    faamaumauga a tagata lautele BankTransaction(LocalDate aso,
    tau faalua
    Fa'amatalaga o manoa) {}

    O lenei ta'utinoga o le a otometi lava ona fa'aopoopo fa'atinoga o le tutusa(), hashCode() ma toString() metotia fa'aopoopo i le faufale ma auala e maua ai.

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

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

    String html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Ua iai Java 1!\" » +
    "\n\t" + " » +
    "\n" + " ";

    e mafai ona e faʻamaonia:

    String html = """


    »Java 1\
    o iinei!

    """;

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

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

puna: opennet.ru

Faaopoopo i ai se faamatalaga