Java SE 14 रिलीज

विकासको छ महिना पछि, ओरेकल जारी प्लेटफर्म जाभा एसई १ 14 (जाभा प्लेटफर्म, मानक संस्करण 14), खुला स्रोत OpenJDK परियोजनालाई सन्दर्भ कार्यान्वयनको रूपमा प्रयोग गरिन्छ। Java SE 14 ले Java प्लेटफर्मको अघिल्लो रिलिजहरूसँग पछाडि अनुकूलता कायम राख्छ; नयाँ संस्करण अन्तर्गत सुरु गर्दा सबै पहिले लिखित Java परियोजनाहरूले परिवर्तन बिना काम गर्नेछ। जाभा SE 14 बिल्डहरू (JDK, JRE र Server JRE) स्थापना गर्न तयार तयार Linux (x86_64), Windows र macOS को लागि। OpenJDK परियोजना द्वारा विकसित सन्दर्भ कार्यान्वयन जाभा 14 GPLv2 इजाजतपत्र अन्तर्गत पूर्ण रूपमा खुला स्रोत हो, GNU ClassPath अपवादहरूले व्यावसायिक उत्पादनहरूसँग गतिशील लिङ्क गर्न अनुमति दिन्छ।

Java SE 14 लाई सामान्य समर्थन रिलीजको रूपमा वर्गीकृत गरिएको छ र अर्को रिलीज नभएसम्म अद्यावधिकहरू प्राप्त गर्न जारी रहनेछ। लामो अवधिको समर्थन (LTS) शाखा Java SE 11 हुनुपर्छ, जसले 2026 सम्म अद्यावधिकहरू प्राप्त गर्न जारी राख्नेछ। Java 8 को अघिल्लो LTS शाखा डिसेम्बर 2020 सम्म समर्थित हुनेछ। अर्को LTS रिलीज सेप्टेम्बर 2021 को लागि निर्धारित छ। हामी तपाईंलाई सम्झना गरौं कि Java 10 को रिलीजको साथ सुरु गर्दै, परियोजनाले नयाँ विकास प्रक्रियामा स्विच गर्यो, नयाँ रिलीजहरूको गठनको लागि छोटो चक्रलाई संकेत गर्दै। नयाँ कार्यक्षमता अब एक निरन्तर अद्यावधिक गरिएको मास्टर शाखामा विकसित गरिएको छ, जसमा तयार परिवर्तनहरू समावेश छन् र जसबाट नयाँ विमोचनहरू स्थिर गर्न प्रत्येक छ महिनामा शाखाहरू छन्।

Из नवाचारहरू जाभा 14 गर्न सक्छन् मार्क:

  • Добавлена экспериментальная поддержка ढाँचा मिलान "instanceof" अपरेटरमा, जसले तपाईंलाई चेक गरिएको मान पहुँच गर्न स्थानीय चर परिभाषित गर्न अनुमति दिन्छ। उदाहरणका लागि, तपाईंले "String s = (String) obj" लाई स्पष्ट रूपमा परिभाषित नगरी तुरुन्तै "if (obj instance of String s && s.length() > 5) {.. s.contains(..) ..}" लेख्न सक्नुहुन्छ।

    थियो:

    यदि (समूहको वस्तु उदाहरण) {
    समूह समूह = (समूह) वस्तु;
    var प्रविष्टिहरू = group.getEntries();
    }

    अब तपाइँ "समूह समूह = (समूह) वस्तु" परिभाषा बिना गर्न सक्नुहुन्छ:

    यदि (समूह समूहको वस्तु उदाहरण) {
    var प्रविष्टिहरू = group.getEntries();
    }

  • Добавлена экспериментальная поддержка нового ключевого слова «रेकर्ड", जसले वर्गहरू परिभाषित गर्नको लागि कम्प्याक्ट फारम प्रदान गर्दछ, जसले तपाईंलाई स्पष्ट रूपमा विभिन्न निम्न-स्तर विधिहरू जस्तै equals(), hashCode() र toString() लाई परिभाषित गर्नबाट बच्न अनुमति दिन्छ जहाँ डाटा केवल फिल्डहरूमा भण्डारण गरिन्छ जसको व्यवहार परिवर्तन हुँदैन। जब वर्गले बराबर (), hashCode() र toString() विधिहरूको मानक कार्यान्वयनहरू प्रयोग गर्दछ, यसले तिनीहरूको स्पष्ट परिभाषा बिना गर्न सक्छ:

    सार्वजनिक रेकर्ड बैंक लेनदेन (स्थानीय मिति मिति,
    दोब्बर रकम
    स्ट्रिङ विवरण) {}

    यो घोषणाले कन्स्ट्रक्टर र गेटर विधिहरूको अतिरिक्त बराबर (), 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" + " \"Java 1 यहाँ छ!\" » +
    "\n\t" + " » +
    "\n" + " ";

    तपाइँ निर्दिष्ट गर्न सक्नुहुन्छ:

    स्ट्रिङ html = """


    »जाभा १५\
    यहाँ छ!

    """;

  • Расширена информативность диагностики при возникновении исключений 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 थपे новый механизм распределения памяти, учитывающий специфику работу на крупных системах, использующих архитектуру NUMA. Новый распределитель памяти включается при помощи флага «+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

एक टिप्पणी थप्न