ការចេញផ្សាយ Java SE 14

បន្ទាប់ពីរយៈពេលប្រាំមួយខែនៃការអភិវឌ្ឍន៍ Oracle បានចេញផ្សាយ វេទិកា ចាវ៉ា SE ១៥ (Java Platform, Standard Edition 14) គម្រោង OpenJDK ប្រភពបើកចំហត្រូវបានប្រើជាការអនុវត្តយោង។ Java SE 14 រក្សាភាពឆបគ្នាថយក្រោយជាមួយនឹងការចេញផ្សាយពីមុននៃវេទិកា Java គម្រោង Java ដែលបានសរសេរពីមុនទាំងអស់នឹងដំណើរការដោយគ្មានការផ្លាស់ប្តូរនៅពេលដាក់ឱ្យដំណើរការក្រោមកំណែថ្មី។ រួចរាល់ដើម្បីដំឡើង Java SE 14 builds (JDK, JRE និង Server JRE) រៀបចំ សម្រាប់ Linux (x86_64), Windows និង macOS ។ ការអនុវត្តឯកសារយោងដែលត្រូវបានបង្កើតឡើងដោយគម្រោង OpenJDK Java 14 គឺជាប្រភពបើកចំហយ៉ាងពេញលេញនៅក្រោមអាជ្ញាបណ្ណ GPLv2 ដោយមានករណីលើកលែង GNU ClassPath អនុញ្ញាតឱ្យមានទំនាក់ទំនងថាមវន្តជាមួយផលិតផលពាណិជ្ជកម្ម។

Java SE 14 ត្រូវបានចាត់ថ្នាក់ជាការចេញផ្សាយការគាំទ្រទូទៅ ហើយនឹងបន្តទទួលបានការអាប់ដេតរហូតដល់ការចេញផ្សាយលើកក្រោយ។ សាខាគាំទ្ររយៈពេលវែង (LTS) គួរតែជា Java SE 11 ដែលនឹងបន្តទទួលបានការអាប់ដេតរហូតដល់ឆ្នាំ 2026។ សាខា LTS មុនរបស់ Java 8 នឹងត្រូវបានគាំទ្ររហូតដល់ខែធ្នូ 2020។ ការចេញផ្សាយ LTS បន្ទាប់ត្រូវបានកំណត់ពេលសម្រាប់ខែកញ្ញា 2021 ។ អនុញ្ញាតឱ្យយើងរំលឹកអ្នកថាការចាប់ផ្តើមជាមួយនឹងការចេញផ្សាយនៃ Java 10 គម្រោងនេះបានប្តូរទៅដំណើរការអភិវឌ្ឍន៍ថ្មីដែលបង្ហាញពីវដ្តខ្លីសម្រាប់ការបង្កើតការចេញផ្សាយថ្មី។ មុខងារថ្មីឥឡូវនេះត្រូវបានបង្កើតឡើងនៅក្នុងសាខាមេដែលបានធ្វើបច្ចុប្បន្នភាពឥតឈប់ឈរ ដែលរួមបញ្ចូលការផ្លាស់ប្តូរដែលត្រៀមរួចជាស្រេច និងពីសាខាណាដែលត្រូវបានបំបែកជារៀងរាល់ប្រាំមួយខែម្តង ដើម្បីរក្សាស្ថេរភាពនៃការចេញផ្សាយថ្មី។

ពី ការច្នៃប្រឌិត Java 14 អាចធ្វើបាន សញ្ញា:

  • Добавлена экспериментальная поддержка ការផ្គូផ្គងលំនាំ នៅក្នុង "instanceof" operator ដែលអនុញ្ញាតឱ្យអ្នកកំណត់អថេរមូលដ្ឋានភ្លាមៗដើម្បីចូលប្រើតម្លៃដែលបានពិនិត្យ។ ឧទាហរណ៍ អ្នកអាចសរសេរភ្លាមៗថា “if (obj instanceof String s && s.length() > 5) {.. s.contains (..) ..}” ដោយមិនកំណត់ច្បាស់ថា “String s = (String) obj” ។

    គឺ៖

    ប្រសិនបើ (obj ឧទាហរណ៍នៃក្រុម) {
    ក្រុម = (ក្រុម)obj;
    var entries = group.getEnries();
    }

    ឥឡូវនេះអ្នកអាចធ្វើបានដោយគ្មាននិយមន័យ "ក្រុម = (ក្រុម) obj":

    ប្រសិនបើ (obj ឧទាហរណ៍នៃក្រុមក្រុម) {
    var entries = group.getEnries();
    }

  • Добавлена экспериментальная поддержка нового ключевого слова «កំណត់ត្រា" ដែលផ្តល់នូវទម្រង់បង្រួមសម្រាប់កំណត់ថ្នាក់ ដែលអនុញ្ញាតឱ្យអ្នកជៀសវាងការកំណត់យ៉ាងច្បាស់នូវវិធីសាស្រ្តកម្រិតទាបជាច្រើនដូចជា equals(), hashCode() និង toString() ក្នុងករណីដែលទិន្នន័យត្រូវបានរក្សាទុកតែក្នុងវាលដែលឥរិយាបថមិនផ្លាស់ប្តូរ។ នៅពេលដែលថ្នាក់ប្រើការអនុវត្តស្តង់ដារនៃវិធីសាស្ត្រ equals() hashCode() និង toString() វាអាចធ្វើបានដោយគ្មាននិយមន័យច្បាស់លាស់របស់ពួកគេ៖

    កំណត់ត្រាសាធារណៈ BankTransaction (កាលបរិច្ឆេទក្នុងស្រុក,
    ចំនួនទ្វេរដង
    ការពិពណ៌នាខ្សែអក្សរ) {}

    សេចក្តីប្រកាសនេះនឹងបន្ថែមការអនុវត្តដោយស្វ័យប្រវត្តិនៃវិធីសាស្ត្រ equals(), hashCode() និង toString() បន្ថែមលើវិធីសាស្រ្ត constructor និង 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;
    }
    };

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

    ខ្សែអក្សរ html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 មកដល់ហើយ!\" » +
    "\n\t" + " » +
    "\n" + " ";

    អ្នកអាចបញ្ជាក់៖

    ខ្សែអក្សរ html = """


    » Java 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 បានបន្ថែម новый механизм распределения памяти, учитывающий специфику работу на крупных системах, использующих архитектуру IN. Новый распределитель памяти включается при помощи флага «+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

បន្ថែមមតិយោបល់