Rilaxx Java SE 14

Wara sitt xhur ta 'żvilupp, Oracle meħlusa pjattaforma JavaSE 14 (Java Platform, Standard Edition 14), il-proġett OpenJDK open-source jintuża bħala implimentazzjoni ta 'referenza. Java SE 14 iżomm kompatibilità b'lura ma 'rilaxxi preċedenti tal-pjattaforma Java kollha tal-proġetti Java miktuba qabel se jaħdmu mingħajr bidliet meta jiġu mnedija taħt il-verżjoni l-ġdida; Java SE 14 builds lesti biex jiġu installati (JDK, JRE u Server JRE) ippreparat għal Linux (x86_64), Windows u macOS. Implimentazzjoni ta' referenza żviluppata mill-proġett OpenJDK Java 14 huwa sors kompletament miftuħ taħt il-liċenzja GPLv2, b'eċċezzjonijiet GNU ClassPath li jippermettu konnessjoni dinamika ma' prodotti kummerċjali.

Java SE 14 huwa kklassifikat bħala rilaxx ta 'appoġġ ġenerali u se jkompli jirċievi aġġornamenti sal-rilaxx li jmiss. Il-fergħa tal-Appoġġ fit-Tul (LTS) għandha tkun Java SE 11, li se tkompli tirċievi aġġornamenti sal-2026. Il-fergħa LTS preċedenti ta' Java 8 se tkun appoġġjata sa Diċembru 2020. Ir-rilaxx LTS li jmiss huwa skedat għal Settembru 2021. Ejjew infakkarkom li b'bidu bir-rilaxx ta 'Java 10, il-proġett qaleb għal proċess ta' żvilupp ġdid, li jimplika ċiklu iqsar għall-formazzjoni ta 'rilaxxi ġodda. Funzjonalità ġdida issa hija żviluppata f'fergħa prinċipali waħda aġġornata kontinwament, li tinkludi bidliet lesti u li minnha fergħat huma ramifikati kull sitt xhur biex jistabbilizzaw rilaxxi ġodda.

Ta ' innovazzjonijiet Java 14 wieħed jista ' marka:

  • Добавлена экспериментальная поддержка tqabbil tal-mudell fl-operatur "instanceof", li jippermettilek tiddefinixxi immedjatament varjabbli lokali biex taċċessa l-valur iċċekkjat. Pereżempju, tista’ tikteb immedjatament “jekk (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}” mingħajr ma tiddefinixxi espliċitament “String s = (String) obj”.

    Kien:

    if (obj instanceof Group) {
    Grupp grupp = (Grupp) obj;
    var entries = group.getEntries ();
    }

    Issa tista' tgħaddi mingħajr id-definizzjoni "Grupp tal-grupp = (Grupp) obj":

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

  • Добавлена экспериментальная поддержка нового ключевого слова «rekord", li tipprovdi forma kompatta għad-definizzjoni tal-klassijiet, li tippermettilek tevita li tiddefinixxi b'mod espliċitu diversi metodi ta' livell baxx bħal equals(), hashCode() u toString() f'każijiet fejn id-dejta tinħażen biss f'oqsma li l-imġieba tagħhom ma tinbidilx. Meta klassi tuża implimentazzjonijiet standard tal-metodi equals(), hashCode() u toString(), tista’ tgħaddi mingħajr id-definizzjoni espliċita tagħhom:

    rekord pubbliku BankTransaction (data LocalDate,
    ammont doppju
    Deskrizzjoni tal-istring) {}

    Din id-dikjarazzjoni se żżid awtomatikament implimentazzjonijiet tal-metodi equals(), hashCode() u toString() minbarra l-metodi tal-kostruttur u 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;
    }
    };

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

    String html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 qiegħed hawn!" » +
    "\n\t" + " » +
    "\n" + " ";

    tista' tispeċifika:

    String html = """


    »Java 1\
    qiegħed hawn!

    """;

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

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

Sors: opennet.ru

Żid kumment