JavaRush /Java Blogu /Random-AZ /Java 11 buraxıldı: yeni xüsusiyyətlər və imkanlar

Java 11 buraxıldı: yeni xüsusiyyətlər və imkanlar

Qrupda dərc edilmişdir
Əvvəllər Java-nın yeni versiyaları nadir hallarda və gecikmələrlə ortaya çıxırdı. İndi Oracle "hər altı aydan bir yeni Java" ritmini uğurla saxlayır. Beləliklə, bir neçə gün əvvəl, ciddi şəkildə qrafikə uyğun olaraq, nəhayət, Java SE 11 və JDK (Java Development Kit) tətbiqini aldıq . Java 11 buraxıldı: yeni xüsusiyyətlər və imkanlar - 1Həmişə olduğu kimi, yeni versiya köhnələri ilə uyğun olacaq və Java 11-ə dəstək 2026-cı ilin dekabrından tez olmayacaq.

Java SE 11-də yeni funksiyalar (proqramçılara görünür)

Xatırladaq ki, Java-da dəyişikliklər JEP “JDK Enhancement Proposal”ın həyata keçirilməsi yolu ilə edilir. JEP OpenJDK-nı təkmilləşdirmək üçün təklifdir və təsdiq edilə, gecikdirilə və ya rədd edilə bilər. Yəni mahiyyət etibarı ilə JEP kolleksiyası OpenJDK üçün inkişaf strategiyasıdır. Yeni "xüsusiyyətdən" əvvəl kvadrat mötərizədə müvafiq JEP-in nömrəsini göstərəcəyik. [323] Lambda Parametrləri üçün Yerli Dəyişən Sintaksis - lambda parametrləri üçün var sintaksisi Java 10 var açar sözünü təqdim etdi və bu, lokal dəyişənin tipini açıq şəkildə göstərməməyə imkan verdi. Bu kodu sadələşdirdi. JEP 323 bu sintaksisin istifadəsini lambda ifadələri ilə genişləndirir. Sadə misal:
list.stream ()
                 .map ((var s) -> s.toLowerCase ())
                 .collect (Collectors.toList ());
Tanınmış Java müjdəçisi Simon Ritterin yazdığı kimi , təcrübəli Java proqramçısı qeyd edəcək ki, bu halda var istifadə etmək lazımsız ola bilər, çünki yuxarıdakı kodu aşağıdakılarla əvəz etmək olar:
list.stream ()
                  .map (s -> s.toLowerCase ())
                  .collect (Collectors.toList ());
Bəs niyə dəstək var? Yalnız bir xüsusi hal var - lambda parametrinə annotasiya əlavə etmək istədiyiniz zaman. Bu, bəzi növlər iştirak etmədən edilə bilməz və açıq tipdən istifadə etməmək üçün var istifadə edərək hər şeyi belə sadələşdirə bilərik:
list.stream ()
                 .map ((@ Notnull var s) -> s.toLowerCase ())
                 .collect (Collectors.toList ());
[330] Tək Fayllı Mənbə Kodlu Proqramları işə salın Java başlatma qurğusunun Java mənbə kodu ilə tək fayl kimi proqramı işə salmaq üçün təkmilləşdirilməsi Java tez-tez ətraflı sintaksisi və hətta əhəmiyyətsiz bir tətbiqin işə salınması üçün çox addımlı “mərasim”inə görə tənqid edilir. Bəzən bu, yeni başlayanları qorxudur. Sadəcə olaraq " Salam Dünya! " yazan ərizə yazmaq üçün. ", siz ictimai statik əsas metodu olan bir sinif yazmalı voidSystem.out.println. Bunu etdikdən sonra kodu javac istifadə edərək tərtib etməlisiniz . Nəhayət, bundan sonra uğursuz təbriki göstərəcək proqramı işə sala bilərsiniz (əlbəttə ki, inteqrasiya olunmuş inkişaf mühiti, həm IDEA , həm də JavaRush- da quraşdırılmış , bu "tətbiq işə salınma sehrini" öz-özünə həyata keçirir - redaktorun qeydi ). Dürüst olaq: ​​əksər proqramlaşdırma dillərində proqramların işləməsi üçün faktiki skript daha sadə görünür. JEP 330 tək fayllı proqram tərtib etmək ehtiyacını aradan qaldırır, buna görə də indi əmr satırından istifadə edirsinizsə, sadəcə yazın
java HelloWorld.java
Java başlatıcısı faylda Java mənbə kodu olduğunu aşkar edəcək və onu icra etməzdən əvvəl kodu sinif faylına yığacaq. Parametrləri mənbə kodu fayl adından sonra və ya ondan əvvəl yerləşdirə bilərsiniz. Addan sonra yerləşdirilənlər proqram icra edilərkən parametrlər kimi ötürülür. Addan əvvəl yerləşdirilənlər kod tərtib edildikdən sonra Java başlatma qurğusuna parametr kimi ötürülür. Kompilyator üçün xüsusi variantlar (məsələn, sinif yolu) kompilyasiya üçün javac -a ötürüləcək . Misal. Xətt:
java -classpath / home / foo / java Hello.java Bonjour
bu sətirlərə ekvivalent olacaq:
javac -classpath / home / foo / java Hello.java
java -classpath / home / foo / java Hello Bonjour
[321] HTTP Müştərisi (Standart) - HTTP Müştəri API dəstəyi standartlaşdırıldı.JDK 9 HTTP Müştəri protokolunu (JEP 110) dəstəkləmək üçün yeni API təqdim etdi . JDK 9 Java Platforma Modul Sistemini (JPMS) də təqdim etdiyi üçün bu API inkubator modulu kimi daxil edilmişdir (bu modullar tərtibatçıları Java SE-də hələ standart hala gəlməmiş yeni API-lərlə təmin etmək üçün modullardır, eyni zamanda "canlı" API-lər hazırlanır. çıxarılması üçün hazırlanmışdır - tərtibatçılar yeni API-ləri sınaqdan keçirə və rəy bildirməyə çalışa bilərlər). Lazımi dəyişikliklər edildikdən sonra (bu API JDK 10-da yenilənib), API standartın bir hissəsi ola bilər. Beləliklə, HTTP Client API indi rəsmi olaraq Java SE 11-ə daxil edilmişdir . Bu, JDK üçün java.net.http üçün yeni modul və paket təqdim edir . Əsas yeni növlər bunlardır: HttpClient HttpRequest HttpResponse WebSocket Bu API sinxron və ya asinxron istifadə edilə bilər. Asinxron rejimdə və istifadə olunur . [320] Java EE və CORBA Modullarını Silin Java-nın doqquzuncu versiyasında Java Platforma Modul Sisteminin (JPMS) tətbiqi ilə monolit rt.jar faylını bir neçə modula bölmək mümkün oldu. Bundan əlavə, JPMS sizə yalnız tətbiqiniz üçün lazım olan modulları ehtiva edən Java işləmə mühiti yaratmağa imkan verir və onun ölçüsünü xeyli azaldır. Şəffaf şəkildə müəyyən edilmiş modul sərhədləri ilə Java API-nin köhnəlmiş hissələrini silmək daha asandır – JEP 320 bunu edir.Java.se.ee metamodulu Java SE 11 standartının bir hissəsi olmayacaq və daxil edilməyəcək altı moduldan ibarətdir. JDK-da: CompletionFuturesCompletionStages
  • corba
  • əməliyyat
  • aktivləşdirmə
  • xml.bind
  • xml.ws
  • xml.ws.annotasiya
Bu modullar JDK 9-da köhnəlmişdir və tərtib və ya icrada defolt olaraq daxil edilməmişdir. Bu o deməkdir ki, JDK 9 və ya JDK 10-da bu modulların API-lərini istifadə edən proqramı tərtib etməyə və ya işə salmağa cəhd etsəniz, o, uğursuz oldu. Kodunuzda bu modulların API-lərindən istifadə edirsinizsə, onları ayrıca modul və ya kitabxana kimi təqdim etməlisiniz.

Yeni API-lər

HTTP ClientFlight Recorder modullarının dil standartına daxil edilməsi sayəsində JDK 11-də çoxlu sayda yeni API meydana çıxdı . API-lərin tam siyahısı üçün Gunnar Morling tərəfindən tərtib edilmiş JDK-nın müxtəlif versiyalarının aşağıdakı hərtərəfli müqayisəsinə baxın. Və bu qeyddə java.net.http , jdk.jfrjava.security modullarına daxil olmayan bəzi yeni metodları sadalayacağıq . java.lang.String Şübhəsiz ki , JDK 11 API-də String-ə edilən ən vacib dəyişikliklərdən biri , bir neçə faydalı yeni metod var.
  • boolean isBlank (): sətir boşdursa və ya yalnız boşluqlardan ibarətdirsə doğru, əks halda yanlış qaytarır.

  • Stream lines(): Bu sətirdən çıxarılan, sətir terminatorları ilə ayrılmış sətirlər axını qaytarır.

  • String repeat (int): Dəyəri int dəfə təkrarlanan həmin sətri birləşdirən sətri qaytarır .

  • String strip (): Boşluq olmayan ilk simvoldan əvvəl və ya sonra bütün boşluqlar silinmiş sətri qaytarır.

  • String stripLeading (): İlk boşluq olmayan simvola qədər bütün boşluqları olan sətri qaytarır.

  • String stripTrainling (): Son boşluq olmayan simvol silindikdən sonra baş verən bütün boşluqlarla sətri qaytarır.
strip()Metod artıq oxşar bir şey etdi trim (), lakin boşluqlarla bu üsullar fərqli şeylər deməkdir. Bu halda, trim()yalnız boşluqlar kəsilir və içərisində strip()- nişanlar kimi xüsusi simvollar da kəsilir. java.lang.StringBuffer java.lang.StringBuildercompareTo () Bu siniflərin hər ikisi qəbul edən StringBuffer/ StringBuildervə qaytaran yeni metoddan ibarətdir int. Leksik müqayisə üsulu yeni metoda bənzəyir compareTo() CharSequence. java.io.ByteArrayOutputStream
  • void writeBytes (byte []): parametrin bütün baytlarını java.io.FileReader çıxış axınına yazır
Burada müəyyən etməyə imkan verən iki yeni konstruktor var Charset. java.io.FileWriter t-ni təyin etməyə imkan verən dörd yeni konstruktor Charse. java.io.InputStream
  • io.InputStream nullInputStream (): InputStreamheç bir baytı oxumayan qaytarır. Bu üsuldan necə istifadə etmək olar? Siz bunu sizə lazım olmayan çıxışı atmaq və ya həmişə sıfır bayt qaytaran giriş yeritmək üçün /dev/null kimi bir şey kimi düşünə bilərsiniz.
java.io.OutputStream
  • io.OutputStream nullOutputStream ()
java.io.Reader
  • io.Reader nullReader ()
java.io.Yazıçı
  • io.Writer nullWriter ()
java.lang.Xarakter
  • String toString (int): Bu, mövcud metodun həddindən artıq yüklənməsidir, lakin char əvəzinə int istifadə edir.
java.lang.CharSequence
  • int compare (CharSequence, CharSequence): leksikoqrafik olaraq iki nümunəni müqayisə edir CharSequence. Birinci ardıcıllıq leksikoqrafik olaraq müvafiq olaraq ikincidən kiçik, ona bərabər və ya ondan böyükdürsə, mənfi dəyər, sıfır və ya müsbət dəyər qaytarır.
java.lang.ref.Reference
    lang.Object clone (): Java evangelist Simon Ritter bu üsulun onu çaşdırdığını etiraf edir. Sinif Referenceinterfeys tətbiq etmir Cloneablevə bu üsul həmişə bir istisna atacaq CloneNotSupportedException. Bununla belə, ekspert bu metodun gələcəkdə nəyəsə faydalı olacağını təklif edir.
java.lang.Runtime java.lang.System Burada yeni metodlar yoxdur. Sadəcə qeyd edək ki, metod runFinalizersOnExit ()bu siniflərin hər ikisindən çıxarılıb və bu, uyğunluq problemlərinə səbəb ola bilər. java.lang.Threaddestroy () Əlavə üsullar yoxdur, yalnız onların stop (Throwable)silindiyini qeyd edəcəyik . Ancaq stop ()heç bir arqument tələb etməyən hələ də mövcuddur. Uyğunluq problemləri ola biləcəyi üçün bunu nəzərə alın. java.nio.ByteBuffer java.nio.CharBuffer java.nio.DoubleBuffer java.nio.FloatBuffer java.nio.LongBuffer java.nio.ShortBuffer Bütün bu siniflərdə dil tərtibatçıları mismatch ()dilin nisbi indeksini tapan və qaytaran bir metod əlavə etdi. bu bufer ilə verilmiş bufer arasında ilk uyğunsuzluq. java.nio.channels.SelectionKey
  • int interestOpsAnd (int)

  • int interestOpsOr (int)
java.nio.channels.Seçici
  • int select (java.util.function.Consumer, long): Müvafiq kanalları I/O əməliyyatları üçün hazır olan düymələr üzərində hərəkəti seçir və yerinə yetirir. Uzun parametr zaman aşımıdır.

  • int select (java.util.function.Consumer): yuxarıdakı üsul kimi işləyir, lakin fasiləsiz.

  • int selectNow (java.util.function.Consumer): yuxarıdakı üsul kimi işləyir, yalnız bloklanmır.

java.nio.file.Files
  • String readString (Path): UTF-8 kodlaşdırmasından istifadə edərək baytları simvollara ayıraraq fayldan bütün məzmunu sətirdə oxuyur .

  • String readString (Path, Charset): Yuxarıdakı üsul kimi işləyir, lakin istifadə edərək baytları simvollara ayırır Charset.

  • Path writeString (Path, CharSequence, java.nio.file. OpenOption []): Əgər fayla simvollar ardıcıllığını yazsanız CharSequence, bu simvollar baytlara kodlaşdırılacaq ( UTF-8 istifadə edərək ).

  • Path writeString (Path, CharSequence, java.nio.file. Charset, OpenOption []): yuxarıdakı üsul kimi işləyir, yalnız simvollar istifadə edərək baytlara kodlanır Charset.
java.nio.file.Path
  • Yol(String, String[]): Yolu qaytarır, birləşdikdə yol sətrini yaradan sətirləri və ya sətirlər ardıcıllığını dəyişdirir.

  • Yol (net.URI): URI-ni dəyişdirərək yolu qaytarır.
java.util.Kolleksiya
  • Object [] toArray (java.util.function.IntFunction): Qaytarılan massivi yaymaq üçün təmin edilmiş generator funksiyasından istifadə edərək, bu kolleksiyadakı bütün elementləri ehtiva edən massivi qaytarır.
java.util.concurrent.PriorityBlockingQueue java.util.PriorityQueue
  • void forEach (java.util.function.Consumer): Bütün elementlər emal olunana və ya hərəkət istisna yaradana qədər hər bir İterable elementdə müəyyən edilmiş hərəkəti yerinə yetirir .

  • boolean removeAll (java.util.Collection): Göstərilən kolleksiyada olan bu kolleksiyanın bütün elementlərini silir (isteğe bağlı əməliyyat).

  • boolean removeIf (java.util.function.Predicate): Bu kolleksiyanın verilmiş predikatı təmin edən bütün elementlərini silir.

  • boolean retainAll (java.util.Collection): Bu kolleksiyada yalnız göstərilən kolleksiyada olan elementləri qoruyur (isteğe bağlı əməliyyat).
java.util.concurrent.TimeUnit
  • long convert (java.time.Duration): Verilmiş vaxt müddətini bu vahidə çevirir.
java.util.function.Predikat
  • Predicate not(Predicate): verilmiş predikatın inkarı olan predikatı qaytarır.
Məsələn, aşağıdakı kod:
lines.stream ()

.filter (s ->! s.isBlank ())
buna çevrilə bilər:
lines.stream ()

.filter (Predicate.not (String :: ISBLANK))
və statik idxaldan istifadə etsək, əldə etdiyimiz budur:
lines.stream ()
.filter (not(String :: ISBLANK))
java.util.Könüllü java.util.OptionalInt java.util.OptionalDouble java.util.OptionalLong
  • boolean isEmpty (): Dəyər yoxdursa doğru , əks halda yalan qaytarır .
java.util.regex.Pattern
  • Predicate asMatchPredicate (): Java eksperti Simon Ritter hesab edir ki, burada əsl JDK 11 API gem gizlənə bilər. Bu üsul bu nümunənin verilmiş giriş sətrinə uyğun olub-olmadığını yoxlayan predikat yaradır.
java.util.zip.Deflater
  • int deflate (ByteBuffer): Daxil edilmiş məlumatı sıxır və göstərilən buferi sıxılmış verilənlərlə doldurur.

  • int deflate (ByteBuffer, int): Daxil edilmiş məlumatı sıxır və göstərilən buferi sıxılmış verilənlərlə doldurur. Sıxılmış məlumatların faktiki miqdarını qaytarır.

  • void setDictionary (ByteBuffer): Verilmiş buferdə baytlara sıxılmaq üçün verilmiş lüğəti təyin edir. ByteBufferBu , bayt massivini deyil, indi qəbul edə bilən mövcud metodun həddindən artıq yüklənməsidir .

  • void setInput (ByteBuffer): Sıxılmalı olan giriş məlumatını təyin edir. Bu, həm də mövcud metodun həddindən artıq yüklənməsidir.
java.util.zip.Inflater
  • int inflate (ByteBuffer): Baytları göstərilən buferə çıxarır. Sıxılmamış baytların faktiki sayını qaytarır.

  • void setDictionary (ByteBuffer): Verilmiş lüğəti verilmiş buferdəki baytlara təyin edir. Mövcud metodun həddindən artıq yüklənmiş formasıdır.

  • void setInput (ByteBuffer): Dekompressiya üçün daxil edilmiş məlumatı təyin edir. Mövcud metodun həddindən artıq yüklənmiş forması.
javax.print.attribute.standard.DialogOwner Bu, JDK 11-də yeni sinifdir və bütün pəncərələrin və ya xüsusi pəncərənin üstündə göstəriləcək çap və ya fərdiləşdirmə səhifəsi sorğularını dəstəkləmək üçün istifadə edilən atribut sinfidir. javax.swing.DefaultComboBoxModel javax.swing.DefaultListModel
  • void addAll (Collection): Kolleksiyada mövcud olan bütün elementləri əlavə edir.

  • void addAll (int, Collection): Göstərilən indeksdən başlayaraq kolleksiyada mövcud olan bütün elementləri əlavə edir.
javax.swing.ListSelectionModel
  • int [] getSelectedIndices (): Seçilmiş modeldəki bütün seçilmiş indekslərin massivini artan qaydada qaytarır.

  • int getSelectedItemsCount (): Seçilmiş elementlərin sayını qaytarır.
jdk.jshell.EvalException
  • shell.JShellException getCause (): Bu EvalException tərəfindən təqdim edilən icra müştərisində atılan səbəbi qaytarır və ya səbəb mövcud deyilsə və ya naməlumdursa null.

Java 11-in inkişaf etdirici olmayan xüsusiyyətləri

[181] Nest-Based Access Control Java və digər dillər daxili siniflər vasitəsilə yuvalanmış sinifləri dəstəkləyir. Bunun işləməsi üçün kompilyator müəyyən fəndləri yerinə yetirməlidir. Misal üçün:
public class Outer {
    private int outerInt;

     class Inner {
       public void printOuterInt() {
         System.out.println("Outer int = " + outerInt);
       }
     }
   }
Kompilyator onu tərtib etməzdən əvvəl aşağıdakı kimi bir şey yaratmaq üçün dəyişdirir:
public class Outer {
      private int outerInt;

      public int access$000() {
        return outerInt;
      }

    }


    class Inner$Outer {

      Outer outer;

      public void printOuterInt() {
        System.out.println("Outer int = " + outer.access$000());
      }
    }
Məntiqi olaraq daxili sinif xarici siniflə eyni kodun bir hissəsi olsa da, ayrı bir sinif kimi tərtib edilmişdir. Buna görə də, bu əməliyyat xarici sinfin şəxsi sahəsinə girişi təmin etmək üçün tərtibçi tərəfindən yaradılmalı olan sintetik birləşmə metodunu tələb edir . Bu JEP eyni yuvanın iki üzvü (bizim nümunəmizdə Xarici və Daxili) yuva quran dostlar olduğu yuvalar anlayışını təqdim edir. Sinif fayl formatı üçün iki yeni atribut müəyyən edilmişdir: NestHostNestMembers . Bu dəyişikliklər daxili sinifləri və bayt kodunu dəstəkləyən digər dillər üçün faydalıdır. Bu funksiya java.lang.Class üçün üç yeni metod təqdim edir : Sinif getNestHost () Sinif [] getNestMembers () boolean isNestmateOf (Sinif) [309] Dinamik Sinif-Fayl Sabitləri Bu JEP yeni faylları dəstəkləmək üçün sinif fayl formatının genişləndirilməsini təsvir edir. davamlı hovuz forması CONSTANT_Dynamic. Dinamik sabit ideyası oxymoron kimi görünür, lakin mahiyyətcə siz onu Java 11-də son dəyər kimi düşünə bilərsiniz. Birləşmə sabitinin dəyəri kompilyasiya zamanı təyin edilmir (digər sabitlərdən fərqli olaraq), lakin açılışdan istifadə edir. təhvil vaxtında dəyəri müəyyən etmək üsulu. Buna görə də dəyər dinamikdir, lakin onun dəyəri yalnız bir dəfə təyin edildiyi üçün o da sabitdir. Bu xüsusiyyət ilk növbədə JVM-də işləmək üçün bayt kodları və sinif faylları yaradacaq yeni dillər və kompilyatorlar inkişaf etdirən insanlara yönəldilmişdir. [315] Aarch64 Intrinsics təkmilləşdirilməsi Bu JEP Red Hat icması tərəfindən təklif edilmişdir. JVM indi Arm 64 təlimat dəstində mövcud olansin () daha ixtisaslaşmış təlimatlardan istifadə edə bilər.Xüsusilə, bu, metodların və cos ()java.lang.Math log ()sinfinin işini yaxşılaşdırır . [318] Epsilon: Əməliyyatsız Zibil Kollektoru JEP 315- də olduğu kimi , siz Epsilon zibil yığıcısının tətbiqi üçün Red Hat-a təşəkkür edə bilərsiniz. Epsilon qeyri-adidir ki, əslində zibil yığmır! Yeni obyektlər yaratarkən, lazım olduqda yaddaş ayırır, lakin qeydiyyatdan keçməmiş obyektlərin tutduğu yerləri geri qaytarmır. “ Nə mənası var? ", - soruşursan. Məlum oldu ki, bu “zibil kolleksiyası”nın iki məqsədi var:
  1. Hər şeydən əvvəl, bu zibil toplayıcı yeni GC alqoritmlərinin performans təsirləri baxımından qiymətləndirilməsini təmin etmək üçün nəzərdə tutulmuşdur. İdeya Epsilon ilə nümunə tətbiqi işə salmaq və bir sıra ölçülər yaratmaqdır. Yeni zibil toplama alqoritmi işə salınır, eyni testlər aparılır və sonra nəticələr müqayisə edilir.

  2. Çox qısa tapşırıqlar üçün (buludda serversiz funksiyaları düşünün) yığın üçün ayrılmış yaddaşı aşmayacağınıza zəmanət verə bilərsiniz. Bu, proqram kodunda əlavə xərcləri (kollektorun işə salınması barədə qərar vermək üçün lazım olan statistik məlumatların toplanması daxil olmaqla) aradan qaldırmaqla performansı yaxşılaşdıra bilər. Yığın sahəsi tükənərsə, JVM üç yoldan biri ilə yanlış konfiqurasiya edilə bilər:
    • Normal deyilir OutOfMemoryError.
    • Yığın sıfırlamasını həyata keçirin
    • JVM sərt diski uğursuz oldu və ola bilər ki, başqa tapşırığı yerinə yetirir (məsələn, sazlayıcının işə salınması).
[328]: Uçuş Recorder Uçuş Recorder JVM üçün aşağı səviyyəli məlumatların toplanması çərçivəsidir. JDK 11-dən əvvəl bu, Oracle JDK binar sistemində kommersiya funksiyası idi. Oracle indi Oracle JDK ilə OpenJDK-dan bir quruluş arasındakı funksional fərqləri aradan qaldırır. Uçuş Recorder nə edir :
  • Hadisələr kimi verilənlərin istehsalı və istehlakı üçün API təmin edir
  • Bufer mexanizmini və ikili məlumat formatını təmin edir
  • Hadisələrin fərdiləşdirilməsinə və filtrlənməsinə imkan verir
  • ƏS, JVM HotSpot və JDK kitabxanaları üçün tədbirlər təmin edin
Burada iki yeni modul var: jdk.jfrjdk.management.jfr . [329] ChaCha20 və Poly1305 kriptoqrafik alqoritmləri Bu JEP JDK tərəfindən istifadə edilən şifrələrin yenilənməsi haqqındadır . Bu hal RFC 7539-da göstərildiyi kimi ChaCha20ChaCha20-Poly1305 şifrələmə alqoritmlərini həyata keçirir. ChaCha20 köhnə, etibarsız RC4 şifrəsini əvəz edə bilən nisbətən yeni axın şifrəsidir . [333] ZGC: Ölçəklənən Aşağı Gecikməli Zibil Kollektoru Eksperimental genişlənə bilən aşağı gecikməli zibil toplayıcısı. Böyük (multiqqabayt) yığın və aşağı gecikmə tələb edən proqramlarla istifadə üçün nəzərdə tutulmuşdur. O, tək nəsil yığınından istifadə edir və zibil toplama işlərinin əksəriyyətini (lakin hamısını deyil) tətbiq ilə eyni vaxtda yerinə yetirir. [332] Nəqliyyat Layeri Təhlükəsizliyi (TLS) 1.3 TLS 1.3 (RFC 8446) TLS nəqliyyat qatının təhlükəsizlik protokolunun əsas yamasıdır və əvvəlki versiyalarla müqayisədə əhəmiyyətli təhlükəsizlik və performans təkmilləşdirmələri təmin edir. JDK indi bu protokol versiyasını dəstəkləyir. Material Simon Ritterin məqaləsinə və rəsmi sənədlərə əsaslanır .
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION