Java SE 14 útgáfa

Eftir sex mánaða þróun, Oracle sleppt pallur JavaSE 14 (Java Platform, Standard Edition 14), opinn uppspretta OpenJDK verkefnið er notað sem viðmiðunarútfærslu. Java SE 14 heldur afturábak samhæfni við fyrri útgáfur af Java pallinum; öll áður skrifuð Java verkefni munu virka án breytinga þegar þau eru hleypt af stokkunum undir nýju útgáfunni. Tilbúnar til uppsetningar Java SE 14 smíðar (JDK, JRE og Server JRE) undirbúinn fyrir Linux (x86_64), Windows og macOS. Tilvísunarútfærsla þróuð af OpenJDK verkefninu Java 14 er að fullu opinn uppspretta undir GPLv2 leyfinu, með GNU ClassPath undantekningum sem leyfa kraftmikla tengingu við auglýsingavörur.

Java SE 14 er flokkuð sem almenn stuðningsútgáfa og mun halda áfram að fá uppfærslur fram að næstu útgáfu. Útibúið fyrir langtímastuðning (LTS) ætti að vera Java SE 11, sem mun halda áfram að fá uppfærslur til 2026. Fyrri LTS útibú Java 8 verður stutt til desember 2020. Næsta LTS útgáfa er áætluð í september 2021. Við skulum minna þig á að frá og með útgáfu Java 10 skipti verkefnið yfir í nýtt þróunarferli, sem gefur til kynna styttri lotu fyrir myndun nýrra útgáfur. Ný virkni er nú þróuð í einni stöðugt uppfærðri aðalútibúi, sem felur í sér tilbúnar breytingar og þaðan er útibúum greint á sex mánaða fresti til að koma á stöðugleika í nýjum útgáfum.

Af nýjungar Java 14 maður getur merkja:

  • Добавлена экспериментальная поддержка mynstursamsvörun í „instanceof“ rekstraraðilanum, sem gerir þér kleift að skilgreina staðbundna breytu strax til að fá aðgang að merktu gildinu. Til dæmis geturðu skrifað strax “if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}” án þess að skilgreina sérstaklega “String s = (String) obj”.

    Það var:

    if (obj tilvik hóps) {
    Hópur hópur = (Hóp)obj;
    var entries = group.getEntries();
    }

    Nú geturðu verið án skilgreiningarinnar „Group group = (Group) obj“:

    if (obj dæmi af hóphópi) {
    var entries = group.getEntries();
    }

  • Добавлена экспериментальная поддержка нового ключевого слова «skrá", sem veitir þétt form til að skilgreina flokka, sem gerir þér kleift að forðast að skilgreina beinlínis ýmsar lágstigsaðferðir eins og equals(), hashCode() og toString() í þeim tilvikum þar sem gögn eru aðeins geymd í sviðum þar sem hegðun þeirra breytist ekki. Þegar flokkur notar staðlaðar útfærslur á equals(), hashCode() og toString() aðferðunum, getur hann verið án skýrrar skilgreiningar þeirra:

    opinber skrá bankaviðskipti(LocalDate dagsetning,
    tvöfalda upphæð
    Strengjalýsing) {}

    Þessi yfirlýsing mun sjálfkrafa bæta við útfærslum á equals(), hashCode() og toString() aðferðunum til viðbótar við smíða- og getteraðferðirnar.

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

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

    Strengur html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 er hér!\" » +
    "\n\t" + " » +
    "\n" + " ";

    þú getur tilgreint:

    String html = """


    »Java 1\
    er hér!

    """;

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

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

Heimild: opennet.ru

Bæta við athugasemd