Java SE 14 idasilẹ

Lẹhin osu mefa ti idagbasoke, Oracle tu silẹ Syeed JavaSE 14 (Java Platform, Standard Edition 14), iṣẹ akanṣe OpenJDK-ìmọ ni a lo bi imuse itọkasi. Java SE 14 n ṣetọju ibamu sẹhin pẹlu awọn idasilẹ iṣaaju ti pẹpẹ Java; gbogbo awọn iṣẹ akanṣe Java ti a kọ tẹlẹ yoo ṣiṣẹ laisi awọn ayipada nigbati a ṣe ifilọlẹ labẹ ẹya tuntun. Ṣetan-lati fi sori ẹrọ Java SE 14 kọ (JDK, JRE ati Server JRE) pese sile fun Linux (x86_64), Windows ati macOS. Itọkasi imuse ni idagbasoke nipasẹ OpenJDK ise agbese Java 14 jẹ orisun ṣiṣi ni kikun labẹ iwe-aṣẹ GPLv2 pẹlu awọn imukuro GNU ClassPath ti o ngbanilaaye sisopọ agbara pẹlu awọn ọja iṣowo.

Java SE 14 jẹ ipin bi itusilẹ atilẹyin gbogbogbo ati pe yoo tẹsiwaju lati gba awọn imudojuiwọn titi di itusilẹ atẹle. Ẹka Atilẹyin Igba pipẹ (LTS) yẹ ki o jẹ Java SE 11, eyiti yoo tẹsiwaju lati gba awọn imudojuiwọn titi di ọdun 2026. Ẹka LTS ti tẹlẹ ti Java 8 yoo ni atilẹyin titi di Oṣu kejila ọdun 2020. Itusilẹ LTS atẹle ti wa ni eto fun Oṣu Kẹsan 2021. Jẹ ki a leti pe bẹrẹ pẹlu itusilẹ Java 10, iṣẹ akanṣe naa yipada si ilana idagbasoke tuntun kan, ti o tumọ si ọna kukuru fun dida awọn idasilẹ tuntun. Iṣẹ ṣiṣe tuntun ti ni idagbasoke ni ẹka titunto si imudojuiwọn nigbagbogbo, eyiti o pẹlu awọn ayipada ti a ti ṣetan ati lati eyiti awọn ẹka ti wa ni ẹka ni gbogbo oṣu mẹfa lati mu awọn idasilẹ titun duro.

Atiku awọn imotuntun Java 14 le Samisi:

  • Добавлена экспериментальная поддержка ibamu awoṣe ninu oniṣẹ "apeere", eyiti o fun ọ laaye lati ṣalaye lẹsẹkẹsẹ oniyipada agbegbe lati wọle si iye ti a ṣayẹwo. Fun apẹẹrẹ, o le kọ lẹsẹkẹsẹ “ti o ba jẹ (obj instance of String s && s.length ()> 5) {.. s.contains(...) ..}” laisi asọye “Okun s = (Okun) obj”.

    je:

    ti o ba ti (obj apeere ti Ẹgbẹ) {
    Ẹgbẹ ẹgbẹ = (Ẹgbẹ) obj;
    var awọn titẹ sii = group.getEntries ();
    }

    Bayi o le ṣe laisi itumọ "Ẹgbẹ ẹgbẹ = (Ẹgbẹ) obj":

    ti o ba jẹ (obj instance of Group Group) {
    var awọn titẹ sii = group.getEntries ();
    }

  • Добавлена экспериментальная поддержка нового ключевого слова «gba", eyiti o pese fọọmu iwapọ kan fun asọye awọn kilasi, gbigba ọ laaye lati yago fun asọye ni ṣoki awọn oriṣiriṣi awọn ọna ipele kekere gẹgẹbi dọgba (), hashCode () ati toString () ni awọn ọran nibiti data ti wa ni ipamọ nikan ni awọn aaye ti ihuwasi ko yipada. Nigbati kilasi kan ba lo awọn imuse boṣewa ti awọn dọgba (), hashCode () ati awọn ọna toString (), o le ṣe laisi asọye ti o fojuhan wọn:

    igbasilẹ ti gbogbo eniyan BankTransaction (ọjọ agbegbe,
    ė iye
    Apejuwe okun) {}

    Ikede yii yoo ṣafikun awọn imuse ti awọn dọgba (), hashCode () ati awọn ọna toString () ni afikun si awọn ọna olupilẹṣẹ ati awọn ọna 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;
    }
    };

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

    html okun =" » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 wa nibi!" » +
    "\n\t" + " » +
    "\n" +" ";

    o le pato:

    html okun = """


    »Java 1
    wa nibi!

    """;

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

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

orisun: opennet.ru

Fi ọrọìwòye kun