Java SE 15 buraxılışı

Altı aylıq inkişafdan sonra Oracle azad edilib bir platforma JavaSE 15 (Java Platforması, Standard Edition 15), açıq mənbəli OpenJDK layihəsi istinad tətbiqi kimi istifadə olunur. Java SE 15 Java platformasının əvvəlki buraxılışları ilə geriyə uyğunluğu qoruyur; əvvəllər yazılmış bütün Java layihələri yeni versiyada işə salındıqda heç bir dəyişiklik olmadan işləyəcək. Quraşdırmağa hazır Java SE 15 quruculuqları (JDK, JRE və Server JRE) hazırladılar Linux (x86_64), Windows və macOS üçün. OpenJDK layihəsi tərəfindən hazırlanmış istinad tətbiqi Java 15 kommersiya məhsulları ilə dinamik əlaqə yaratmağa imkan verən GNU ClassPath istisnaları ilə GPLv2 lisenziyası altında tam açıq mənbədir.

Java SE 15 ümumi dəstək buraxılışı kimi təsnif edilir və növbəti buraxılışa qədər yeniləmələri almağa davam edəcək. Long Term Support (LTS) filialı 11-cı ilə qədər yeniləmələri almağa davam edəcək Java SE 2026 olmalıdır. Java 8-in əvvəlki LTS filialı 2020-ci ilin dekabr ayına qədər dəstəklənəcək. Növbəti LTS buraxılışı 2021-ci ilin sentyabrına planlaşdırılır. Nəzərinizə çatdıraq ki, Java 10-un buraxılışından başlayaraq, layihə yeni buraxılışların formalaşması üçün daha qısa dövrü nəzərdə tutan yeni inkişaf prosesinə keçdi. Hazır dəyişiklikləri özündə cəmləşdirən və yeni buraxılışları sabitləşdirmək üçün hər altı aydan bir budaqlanan filiallardan ibarət daimi yenilənən bir master filialda yeni funksionallıq hazırlanıb.

Haqqında yeniliklər Java 15 olar işarə:

  • Daxili EdDSA (Edwards-Curve Digital Signature Alqoritmi) rəqəmsal imza yaratma alqoritmi üçün dəstək RFC 8032). Təklif olunan EdDSA tətbiqi aparat platformalarından asılı deyil, yan kanal hücumlarından qorunur (bütün hesablamaların daimi vaxtı təmin edilir) və eyni səviyyəli qoruma ilə C dilində yazılmış mövcud ECDSA tətbiqindən daha sürətli performans göstərir. Məsələn, 126 bit açarı olan elliptik əyridən istifadə edən EdDSA, secp256r1 elliptik əyri və 128 bit açarı olan ECDSA ilə oxşar performans nümayiş etdirir.
  • Əlavə edilib möhürlənmiş siniflər və interfeyslər üçün eksperimental dəstək, digər siniflər və interfeyslər tərəfindən həyata keçirilməsini miras almaq, genişləndirmək və ya ləğv etmək üçün istifadə edilə bilməz. Möhürlənmiş siniflər, həmçinin genişləndirilməsi üçün icazə verilən alt siniflərin açıq-aşkar siyahıya alınmasına əsaslanaraq, giriş modifikatorlarına nisbətən superklassın istifadəsini məhdudlaşdırmaq üçün daha deklarativ üsul təqdim edir.

    com.example.geometry paketi;

    ictimai möhürlənmiş sinif Forma
    com.example.polar.Circle icazə verir,
    com.example.dördbucaqlı,
    com.example.quad.sadə.Kvadrat {…}

  • Əlavə edilib digər siniflərin bayt kodu ilə birbaşa istifadə edilə bilməyən gizli siniflər üçün dəstək. Gizli siniflərin əsas məqsədi dinamik olaraq sinifləri işləmə zamanı yaradan və onları dolayı yolla istifadə edən çərçivələrdə istifadə etməkdir. əks. Bu cür siniflər adətən məhdud həyat dövrünə malikdir, ona görə də statik olaraq yaradılan siniflərdən daxil olmaq üçün onları saxlamaq əsaslı deyil və yalnız yaddaş istehlakının artmasına səbəb olacaqdır. Gizli siniflər həmçinin gələcəkdə silinməsi nəzərdə tutulan qeyri-standart API sun.misc.Unsafe::defineAnonymousClass ehtiyacını aradan qaldırır.
  • ZGC (Z Garbage Collector) zibil yığan qurğu stabilləşdirilib və geniş istifadəyə hazır kimi tanınıb. ZGC passiv rejimdə işləyir, zibilin yığılması ilə əlaqədar gecikməni mümkün qədər minimuma endirir (ZGC-dən istifadə zamanı dayanma müddəti 10 ms-dən çox deyil) və ölçüləri bir neçə yüz meqabaytdan çoxlu terabaytlara qədər dəyişən həm kiçik, həm də nəhəng yığınlarla işləyə bilir.
  • Stabilləşdirilmiş və ümumi istifadəyə hazır tapılıb
    zibil yığan Shenandoah, minimal fasilələrlə işləmək (Low-Pause-Time Garbage Collector). Shenandoah Red Hat tərəfindən hazırlanmışdır və Java proqramlarının icrası ilə paralel olaraq təmizləmə apararaq zibil yığılması zamanı dayanma vaxtını azaldan alqoritmdən istifadə etməsi ilə diqqət çəkir. Zibil kollektorunun təqdim etdiyi gecikmələrin ölçüsü proqnozlaşdırıla bilər və yığının ölçüsündən asılı deyil, yəni. 200 MB və 200 GB yığınlar üçün gecikmələr eyni olacaq (çıxma 50 ms-dən çox və adətən 10 ms ərzində);

  • Dəstək sabitləşdi və dilə daxil edildi mətn blokları - simvoldan qaçışdan istifadə etmədən və blokda orijinal mətn formatını qorumadan çoxsətirli mətn məlumatlarını mənbə koduna daxil etməyə imkan verən sətirli hərflərin yeni forması. Blok üç qoşa dırnaqla çərçivəyə alınmışdır.

    Məsələn, kod yerinə

    Sətir html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 buradadır!\" » +
    "\n\t" + " » +
    "\n" + " ";

    müəyyən edə bilərsiniz:

    Sətir html = """


    »Java 1\
    burada!

    """;

  • Yenidən dizayn edilmişdir Köhnə DatagramSocket API. java.net.DatagramSocket və java.net.MulticastSocket-in köhnə tətbiqləri sazlanması və saxlanması daha asan olan, həmçinin layihə çərçivəsində hazırlanmış virtual axınlara uyğun gələn müasir tətbiqetmə ilə əvəz edilmişdir. Toxucu dəzgahı. Mövcud kodla mümkün uyğunsuzluq halında, köhnə tətbiq silinməyib və jdk.net.usePlainDatagramSocketImpl seçimindən istifadə etməklə aktivləşdirilə bilər.
  • Təklif olunan ikinci eksperimental tətbiq model uyğunluğu yoxlanılan dəyərə daxil olmaq üçün dərhal yerli dəyişəni təyin etməyə imkan verən “instanceof” operatorunda. Məsələn, “String s = (String) obj” ifadəsini açıq şəkildə təyin etmədən dərhal “if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}” yaza bilərsiniz.

    Bu idi:

    əgər (Qrupun obyekt nümunəsi) {
    Qrup qrupu = (Qrup)obj;
    var entries = group.getEntries();
    }

    İndi "Qrup qrupu = (Qrup) obj" tərifi olmadan edə bilərsiniz:

    if (Qrup qrupunun obyekti) {
    var entries = group.getEntries();
    }

  • Təklif olunur açar sözünün ikinci eksperimental tətbiqi "rekord", məlumatların yalnız davranışı pozan sahələrdə saxlandığı hallarda, equals(), hashCode() və toString() kimi müxtəlif aşağı səviyyəli metodların açıq şəkildə müəyyənləşdirilməsi ehtiyacını aradan qaldıran sinifləri müəyyən etmək üçün kompakt forma təqdim edir. dəyişməz. Sinif equals(), hashCode() və toString() metodlarının standart tətbiqlərindən istifadə etdikdə, o, onların açıq tərifi olmadan edə bilər:

    ictimai qeyd BankTransaction(YerliTarix tarixi,
    ikiqat məbləğ
    Sətir təsviri) {}

    Bu bəyannamə konstruktor və alıcı metodlarına əlavə olaraq equals(), hashCode() və toString() metodlarının tətbiqlərini avtomatik əlavə edəcək.

  • Təklif olunur Java proqramlarına yeni MemorySegment, MemoryAddress və MemoryLayout abstraksiyalarını manipulyasiya etməklə Java yığınından kənar yaddaş bölgələrinə təhlükəsiz və səmərəli daxil olmağa imkan verən Xarici Yaddaş Girişi API-nin ikinci baxışı.
  • Əlil və kilidləmə yükünü azaltmaq üçün HotSpot JVM-də istifadə olunan Qərəzli Kilidləmə optimallaşdırma texnikasını ləğv etdi. Bu texnika müasir CPU-lar tərəfindən təmin edilən atom təlimatları olan sistemlərdə öz aktuallığını itirdi və mürəkkəbliyinə görə onu saxlamaq üçün çox əmək tələb edir.
  • elan etdi köhnəlmiş mexanizm RMI aktivləşdirilməsi, gələcək buraxılışda silinəcək. Qeyd olunur ki, RMI Activation köhnəlib, Java 8-də seçim kateqoriyasına düşüb və müasir praktikada demək olar ki, istifadə edilmir.
  • Silindi JavaScript mühərriki NaşornJava SE 11-də köhnəlmiş .
  • Silindi Solaris OS və SPARC prosessorları üçün portlar (Solaris/SPARC, Solaris/x64 və Linux/SPARC). Bu portların silinməsi cəmiyyətə Solaris və SPARC spesifik xüsusiyyətlərini saxlamaq üçün vaxt itirmədən yeni OpenJDK xüsusiyyətlərinin inkişafını sürətləndirməyə imkan verəcək.

Mənbə: opennet.ru

Добавить комментарий