Java SE 14 መለቀቅ

ከስድስት ወር የእድገት እድገት በኋላ, Oracle ተለቀቀ መድረክ ጃቫ SE 14 (Java Platform፣ Standard Edition 14)፣ ክፍት ምንጭ የሆነውን የOpenJDK ፕሮጀክትን እንደ ማጣቀሻ ትግበራ የሚጠቀም። Java SE 14 ከቀደምት የጃቫ ፕላትፎርም ከተለቀቁት ጋር የኋሊት ተኳኋኝነትን ያቆያል፣ እና ሁሉም ቀደም ሲል የተፃፉ የጃቫ ፕሮጀክቶች በአዲሱ ስሪት ሲጀመር ምንም ለውጥ ሳይኖር ይሰራሉ። Java SE 14 ግንቦችን ለመጫን ዝግጁ (JDK፣ JRE እና Server JRE) ተዘጋጅቷል ለሊኑክስ (x86_64)፣ ዊንዶውስ እና ማክሮስ። በOpenJDK ፕሮጀክት የተሰራ የማጣቀሻ ትግበራ ጃቫ 14 ሙሉ በሙሉ ክፍት ምንጭ በ GPLv2 ፈቃድ ከጂኤንዩ ክፍልፓዝ ልዩ የንግድ ምርቶች ጋር ተለዋዋጭ ግንኙነት እንዲኖር ያስችላል።

Java SE 14 እንደ አጠቃላይ የድጋፍ ልቀት የተከፋፈለ ሲሆን እስከሚቀጥለው ልቀት ድረስ ዝማኔዎችን ማግኘቱን ይቀጥላል። የረጅም ጊዜ ድጋፍ (LTS) ቅርንጫፍ Java SE 11 መሆን አለበት፣ ይህም እስከ 2026 ማሻሻያዎችን ማግኘቱን ይቀጥላል። የቀደመው LTS የጃቫ 8 ቅርንጫፍ እስከ ዲሴምበር 2020 ድረስ ይደገፋል። የሚቀጥለው LTS ልቀት ለሴፕቴምበር 2021 መርሐግብር ተይዞለታል። ከጃቫ 10 መለቀቅ ጀምሮ ፕሮጀክቱ ወደ አዲስ የእድገት ሂደት መቀየሩን እናስታውስዎታለን ይህም ለአዳዲስ ልቀቶች ምስረታ አጠር ያለ ዑደትን ያሳያል። አዲስ ተግባር አሁን በየጊዜው በዘመነ ዋና ቅርንጫፍ ውስጥ ተዘጋጅቷል፣ እሱም ዝግጁ የተደረጉ ለውጦችን ያካተተ እና አዳዲስ የተለቀቁትን ለማረጋጋት በየስድስት ወሩ ቅርንጫፎች የሚከፈቱት።

ፈጠራዎች ጃቫ 14 ይችላል ምልክት ያድርጉ:

  • Добавлена экспериментальная поддержка ስርዓተ-ጥለት ማዛመድ በ "አስተሳሰብ" ኦፕሬተር ውስጥ, ይህም የተረጋገጠውን እሴት ለመድረስ የአካባቢያዊ ተለዋዋጭ ወዲያውኑ እንዲገልጹ ያስችልዎታል. ለምሳሌ፣ ወዲያውኑ “ከሆነ (obj exampleof String s && s.length()> 5) {.. s.contains(...) ..}” በማለት “String s = (String) obj”ን በግልፅ ሳይገልጹ መጻፍ ይችላሉ።

    ነበር፡

    ከሆነ (የቡድን ምሳሌ) {
    የቡድን ቡድን = (ቡድን) obj;
    var ግቤቶች = group.getEntries ();
    }

    አሁን ያለ "ቡድን ቡድን = (ቡድን) obj" ትርጉም ማድረግ ይችላሉ:

    ከሆነ (የቡድን ቡድን ምሳሌ) {
    var ግቤቶች = group.getEntries ();
    }

  • Добавлена экспериментальная поддержка нового ключевого слова «መዝገብ"፣ ክፍሎችን ለመለየት የታመቀ ቅጽ ያቀርባል፣ ይህም እንደ እኩል()፣ hashCode() እና toString() ያሉ የተለያዩ ዝቅተኛ ደረጃ ዘዴዎችን በግልፅ ከመግለጽ እንድትቆጠቡ የሚያስችልዎ መረጃ በባህሪያቸው በማይለወጥ መስኮች ብቻ በሚከማችበት ጊዜ። አንድ ክፍል የእኩል()፣ hashCode() እና toString() ስልቶች መደበኛ አተገባበርን ሲጠቀም ያለእነሱ ግልጽ ፍቺ ማድረግ ይችላል፡-

    የህዝብ መዝገብ BankTransaction (አካባቢያዊ ቀን ፣
    እጥፍ መጠን
    የሕብረቁምፊ መግለጫ) {}

    ይህ መግለጫ ከግንባታ እና መግጠሚያ ዘዴዎች በተጨማሪ የእኩል()፣ 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\t" +" » +
    "\n\t\t" +" \"ጃቫ 1 እዚህ አለ!" » +
    "\n\t" +" » +
    "\n" +" ";

    መግለጽ ትችላለህ፡-

    ሕብረቁምፊ html = """


    ጃቫ 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 ታክሏል новый механизм распределения памяти, учитывающий специфику работу на крупных системах, использующих архитектуру NUM ኤ. Новый распределитель памяти включается при помощи флага «+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

አስተያየት ያክሉ