Java SE 15 නිකුතුව

මාස හයක සංවර්ධනයෙන් පසුව, ඔරකල් නිදහස් වේදිකාව ජාවා එස්ඊ 15 (Java Platform, Standard Edition 15), в качестве эталонной реализации которой используется открытый проект OpenJDK. В Java SE 15 сохранена обратная совместимость с прошлыми выпусками платформы Java, все ранее написанные Java-проекты без изменений будут работоспособны при запуске под управлением новой версии. Готовые для установки сборки Java SE 15 (JDK, JRE и Server JRE) සකස් කර ඇත Linux (x86_64), Windows සහ macOS සඳහා. OpenJDK ව්‍යාපෘතිය මගින් සංවර්ධනය කරන ලද විමර්ශන ක්‍රියාත්මක කිරීම ජාවා 15 GPLv2 බලපත්‍රය යටතේ සම්පූර්ණයෙන්ම විවෘත මූලාශ්‍ර වේ, GNU ClassPath ව්‍යතිරේක සමඟ වාණිජ නිෂ්පාදන සමඟ ගතික සම්බන්ධ වීමට ඉඩ සලසයි.

Java SE 15 නිත්‍ය ආධාරක නිකුතුවක් ලෙස වර්ග කර ඇති අතර මීළඟ නිකුතුව තෙක් යාවත්කාලීන කිරීම් දිගටම ලැබෙනු ඇත. දිගු කාලීන ආධාරක (LTS) ශාඛාව Java SE 11 විය යුතු අතර, එය 2026 දක්වා යාවත්කාලීන කිරීම් දිගටම ලැබෙනු ඇත. Java 8 හි පෙර LTS ශාඛාව 2020 දෙසැම්බර් දක්වා සහය දක්වයි. මීළඟ LTS නිකුතුව 2021 සැප්තැම්බර් සඳහා සැලසුම් කර ඇත. Java 10 නිකුතුවෙන් පටන් ගෙන, ව්‍යාපෘතිය නව සංවර්ධන ක්‍රියාවලියකට මාරු වූ අතර, නව නිකුතු සෑදීම සඳහා කෙටි චක්‍රයක් ඇඟවුම් කර ඇති බව අපි ඔබට මතක් කරමු. නිරන්තරයෙන් යාවත්කාලීන කරන ලද එක් ප්‍රධාන ශාඛාවක නව ක්‍රියාකාරිත්වය දැන් සංවර්ධනය කර ඇති අතර, එයට සූදානම් කළ වෙනස්කම් ඇතුළත් වන අතර නව නිකුතු ස්ථාවර කිරීම සඳහා සෑම මාස හයකට වරක් ශාඛා ශාඛා බෙදනු ලැබේ.

සිට නවෝත්පාදන ජාවා 15 හැකි ලකුණ:

  • බිල්ට්-ඉන් поддержка алгоритма создания цифровой подписи EdDSA (Edwards-Curve Digital Signature Algorithm RFC 8032). Предложенная реализация EdDSA не зависит от аппаратных платформ, защищена от атак по сторонним каналам (обеспечено постоянное время всех вычислений) и по производительности опережает существующую реализацию ECDSA, написанную на языке Си, при том же уровне защиты. Например, EdDSA при использовании эллиптической кривой со 126-битным ключом демонстрирует производительность аналогичную ECDSA с эллиптической кривой secp256r1 и 128-битным ключом.
  • එකතු කරන ලදී экспериментальная поддержка запечатанных («sealed») классов и интерфейсов, которые не могут использоваться другими классами и интерфейсами для наследования, расширения или переопределения реализации. Запечатанные классы также предоставляют более декларативный способ ограничения использования суперкласса, чем модификаторы доступа, основанный на явном перечислении подклассов, разрешённых для расширения.

    package com.example.geometry;

    public sealed class Shape
    permits com.example.polar.Circle,
    com.example.quad.Rectangle,
    com.example.quad.simple.Square {…}

  • එකතු කරන ලදී поддержка скрытых классов, которые не могут быть использованы напрямую байткодом других классов. Ключевым назначением скрытых классов является использование во фреймворках, динамически генерирующих классы во время выполнения и использующих их косвенно, через පරාවර්තනය. Подобные классы обычно имеют ограниченный жизненный цикл, поэтому их поддержание для доступа из статически сгенерированных классов не оправдано и приведёт лишь к увеличению потребления памяти. Скрытые классы также позволяют обойтись без нестандартного API sun.misc.Unsafe::defineAnonymousClass, который намечен на удаление в будущем.
  • Стабилизирован и признан готовым для повсеместного использования сборщик мусора ZGC (Z Garbage Collector). ZGC работает в пассивном режиме, насколько это возможно минимизирует задержки из-за сборки мусора (время остановки при использовании ZGC не превышает 10 мс.) и может работать как с небольшими, так и с огромными кучами, размером от нескольких сотен мегабайт до многих терабайт.
  • Стабилизирован и признан готовым для повсеместного использования
    сборщик мусора ෂෙනැන්ඩෝවා, работающий с минимальными приостановками (Low-Pause-Time Garbage Collector). Shenandoah разработан компанией Red Hat и примечателен использованием алгоритма, сокращающего время остановок во время сборки мусора за счёт проведения чистки параллельно с выполнением Java-приложений. Размер вносимых сборщиком мусора задержек предсказуем и не зависит от размера кучи, т.е. для куч в 200 MB и 200 GB задержки будут идентичны (не выходят за пределы 50 мс и обычно укладываются в 10 мс);

  • Стабилизирована и введена в язык поддержка පෙළ වාරණ — новой формы строковых литералов, позволяющих включать в исходный код многострочные текстовые данные без применения в них экранирования символов и сохраняя исходное форматирования текста в блоке. Обрамление блока осуществляется тремя двойными кавычками.

    Например, вместо кода

    String html = " » +
    "\n\t" + " » +
    «\n\t\t» + «<H1>\»Java 15 is here!\»</H1>» +
    "\n\t" + " » +
    "\n" +" ";

    ඔබට සඳහන් කළ හැකිය:

    String html = «»»

    <BODY>
    »Java 1\
    is here!»</H1>

    """;

  • නැවත සකස් කරන ලදී API Legacy DatagramSocket. Старые реализации java.net.DatagramSocket и java.net.MulticastSocket, заменены на современную реализацию, более простую для отладки и сопровождения, а также совместимую с виртуальными потоками, развиваемыми в рамках проекта ලූම්. На случай возможного нарушения совместимости с существующим кодом старая реализация не удалена и может быть активирована при помощи опции jdk.net.usePlainDatagramSocketImpl.
  • Предложена вторая экспериментальная реализация රටා ගැලපීම "instanceof" ක්‍රියාකරු තුළ, පරීක්ෂා කළ අගයට ප්‍රවේශ වීමට දේශීය විචල්‍යයක් වහාම අර්ථ දැක්වීමට ඔබට ඉඩ සලසයි. උදාහරණයක් ලෙස, ඔබට වහාම "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" "String s = (String) obj" පැහැදිලිව අර්ථ දැක්වීමකින් තොරව ලිවිය හැක.

    විය:

    නම් (සමූහයේ වස්තුව) {
    කණ්ඩායම් කණ්ඩායම = (කණ්ඩායම)obj;
    var entries = group.getEntries();
    }

    දැන් ඔබට "Group group = (Group) obj" යන අර්ථ දැක්වීමෙන් තොරව කළ හැක:

    නම් (සමූහ කණ්ඩායමේ වස්තුව) {
    var entries = group.getEntries();
    }

  • යෝජිතය вторая экспериментальная реализация ключевого слова «වාර්තාව", එය පන්ති නිර්වචනය කිරීම සඳහා සංයුක්ත ආකෘතියක් සපයන අතර, හැසිරීම වෙනස් නොවන ක්ෂේත්‍රවල පමණක් දත්ත ගබඩා කර ඇති අවස්ථා වලදී සමාන(), hashCode() සහ toString() වැනි විවිධ පහත් මට්ටමේ ක්‍රම පැහැදිලිව නිර්වචනය කිරීම වළක්වා ගැනීමට ඔබට ඉඩ සලසයි. පන්තියක් සමාන (), hashCode() සහ toString() ක්‍රමවල සම්මත ක්‍රියාත්මක කිරීම් භාවිතා කරන විට, එය ඔවුන්ගේ පැහැදිලි අර්ථ දැක්වීමකින් තොරව කළ හැක:

    පොදු වාර්තා බැංකු ගනුදෙනු (දේශීය දින දිනය,
    ද්විත්ව මුදල
    තන්තු විස්තරය) {}

    මෙම ප්‍රකාශය මඟින් කන්ස්ට්‍රක්ටර් සහ ලබාගන්නා ක්‍රමවලට අමතරව සමාන (), hashCode() සහ toString() ක්‍රමවල ක්‍රියාත්මක කිරීම් ස්වයංක්‍රීයව එක් කරයි.

  • යෝජිතය второй предварительный вариант API Foreign-Memory Access, позволяющий Java-приложениям безопасно и эффективно получить доступ к областям памяти, вне кучи Java, манипулируя новыми абстракциями MemorySegment, MemoryAddress и MemoryLayout.
  • ආබාධිතයි и объявлена устаревшей техника оптмизации Biased Locking, применявшаяся в HotSpot JVM для сокращения накладных расходов из-за блокировок. Данная техника потеряла актуальность на системах с атомарными инструкциями, предоставляемыми современными CPU, и слишком трудоёмка для сопровождения из-за своей сложности.
  • නිවේදනය කළා устаревшим механизм RMI Activation, который будет удалён в одном из следующих выпусков. Отмечается, что RMI Activation устарел, переведён в разряд опции ещё в Java 8 и почти не применяется в современной практике.
  • මකා දමන ලදී JavaScript-движок නෂ්ර්ලෝන්, который был объявлен устаревшим в Java SE 11.
  • ඉවත් කරන ලදී порты для ОС Solaris и процессоров SPARC (Solaris/SPARC, Solaris/x64 и Linux/SPARC). Удаление указанных портов позволит сообществу ускорить разработку новых возможностей OpenJDK, не тратя время на поддержание особенностей, специфичных для Solaris и SPARC.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න