JavaRush /Java Blog /Random-TL /Inilabas ang Java 11: mga bagong feature at kakayahan

Inilabas ang Java 11: mga bagong feature at kakayahan

Nai-publish sa grupo
Noong nakaraan, ang mga bagong bersyon ng Java ay bihirang lumitaw at may mga pagkaantala. Ngayon, matagumpay na napapanatili ng Oracle ang sarili nitong itinakda na ritmo ng "bagong Java tuwing anim na buwan." Kaya ilang araw na ang nakalipas, mahigpit na nasa iskedyul, sa wakas ay natanggap namin ang Java SE 11 at ang pagpapatupad ng JDK (Java Development Kit). Inilabas ang Java 11: mga bagong tampok at kakayahan - 1Gaya ng nakasanayan, magiging tugma ang bagong bersyon sa mga luma, at matatapos ang suporta para sa Java 11 nang hindi mas maaga sa Disyembre 2026.

Mga bagong feature sa Java SE 11 (nakikita ng mga developer)

Alalahanin na sa Java, ang mga pagbabago ay ginawa sa pamamagitan ng pagpapatupad ng JEP "JDK Enhancement Proposal". Ang JEP ay isang panukala upang mapabuti ang OpenJDK at maaaring maaprubahan, maantala, o tanggihan. Iyon ay, sa esensya, ang isang koleksyon ng mga JEP ay isang diskarte sa pag-unlad para sa OpenJDK. Sa mga square bracket bago ang bagong "tampok" ipahiwatig namin ang bilang ng kaukulang JEP. [323] Local-Variable Syntax para sa Lambda Parameters - var syntax para sa mga parameter ng lambda Ipinakilala ng Java 10 ang var keyword, na naging posible na hindi tahasang tukuyin ang uri ng lokal na variable. Pinasimple nito ang code. Pinalawak ng JEP 323 ang paggamit ng syntax na ito sa mga expression ng lambda. Simpleng halimbawa:
list.stream ()
                 .map ((var s) -> s.toLowerCase ())
                 .collect (Collectors.toList ());
Tulad ng isinulat ni Simon Ritter , isang kilalang Java evangelist, mapapansin ng isang bihasang Java programmer na ang paggamit ng var sa kasong ito ay maaaring hindi kailangan, dahil ang code sa itaas ay maaaring mapalitan ng sumusunod:
list.stream ()
                  .map (s -> s.toLowerCase ())
                  .collect (Collectors.toList ());
Bakit, kung gayon, sinusuportahan ang var? Mayroon lang isang espesyal na kaso - kapag gusto mong magdagdag ng anotasyon sa isang parameter ng lambda. Hindi ito magagawa nang walang kasamang uri, at upang maiwasan ang paggamit ng tahasang uri, maaari naming gawing simple ang lahat gamit ang var tulad nito:
list.stream ()
                 .map ((@ Notnull var s) -> s.toLowerCase ())
                 .collect (Collectors.toList ());
[330] Ilunsad ang Single-File Source-Code Programs Ang pagpapahusay sa Java launcher upang ilunsad ang isang programa bilang isang solong file na may Java source code Ang Java ay madalas na pinupuna dahil sa verbose syntax nito at multi-step na "seremonya" ng paglulunsad ng kahit isang maliit na aplikasyon. Minsan nakakatakot ito sa mga baguhan. Upang magsulat ng isang application na nagpi-print lamang ng " Hello World! " ", kailangan mong magsulat ng isang klase na may pampublikong static na voidpangunahing pamamaraan at gamitin ang System.out.println. Matapos magawa ito, dapat mong i-compile ang code gamit ang javac . Sa wakas, pagkatapos nito, maaari mong ilunsad ang application, na magpapakita ng masamang pagbati (siyempre, ang pinagsama-samang kapaligiran sa pag-unlad, parehong IDEA at ang isa na binuo sa JavaRush , ay nagsasagawa ng "magic sa paglulunsad ng app" sa sarili nitong - tala ng editor ). Maging tapat tayo: sa karamihan ng mga programming language, ang aktwal na script para sa pagpapatakbo ng mga programa ay mukhang mas simple. Tinatanggal ng JEP 330 ang pangangailangan na mag-compile ng isang solong file na application, kaya ngayon kung gagamitin mo ang command line, i-type lamang
java HelloWorld.java
Matutukoy ng Java launcher na ang file ay naglalaman ng Java source code at i-compile ang code sa isang class file bago ito isagawa. Maaari kang maglagay ng mga parameter pagkatapos o bago ang pangalan ng file ng source code. Ang mga inilagay pagkatapos ng pangalan ay ipinasa bilang mga parameter kapag ang aplikasyon ay naisakatuparan. Ang mga inilagay bago ang pangalan ay ipinasa bilang mga parameter sa Java launcher pagkatapos ma-compile ang code. Ang mga opsyon na partikular sa compiler (gaya ng classpath) ay ipapasa din sa javac para sa compilation. Halimbawa. Linya:
java -classpath / home / foo / java Hello.java Bonjour
ay katumbas ng mga linyang ito:
javac -classpath / home / foo / java Hello.java
java -classpath / home / foo / java Hello Bonjour
[321] HTTP Client (Standard) - Ang suporta sa HTTP Client API ay na-standardize. Ipinakilala ng JDK 9 ang isang bagong API upang suportahan ang HTTP Client protocol (JEP 110) . Dahil ipinakilala din ng JDK 9 ang Java Platform Module System (JPMS) , ang API na ito ay isinama bilang isang incubator module (ito ay mga module para magbigay sa mga developer ng mga bagong API na hindi pa naging pamantayan sa Java SE, habang ang "live" na mga API ay ginagawa. inihanda para sa pag-alis - maaaring subukan ng mga developer ang mga bagong API at subukang magbigay ng feedback). Kapag nagawa na ang mga kinakailangang pagbabago (na-update na ang API na ito sa JDK 10), maaaring maging bahagi ng pamantayan ang API. Kaya, ang HTTP Client API ay opisyal na ngayong kasama sa Java SE 11 . Ito ay nagpapakilala ng bagong module at package para sa JDK, java.net.http . Ang mga pangunahing bagong uri ay: HttpClient HttpRequest HttpResponse WebSocket Maaaring gamitin ang API na ito nang sabay-sabay o asynchronously. Sa asynchronous mode, CompletionFuturesat ginagamit CompletionStages. [320] Alisin ang Java EE at CORBA Module Sa pagpapakilala ng Java Platform Module System (JPMS) sa ikasiyam na bersyon ng Java, naging posible na hatiin ang monolitikong rt.jar file sa ilang mga module. Bilang karagdagan, binibigyang-daan ka ng JPMS na lumikha ng isang Java runtime environment na kinabibilangan lamang ng mga module na kailangan ng iyong application, na lubos na nagpapababa sa laki nito. Sa malinaw na tinukoy na mga hangganan ng module, mas madaling alisin ang mga hindi na ginagamit na bahagi ng Java API - iyon ang ginagawa ng JEP 320. Ang java.se.ee metamodule ay may kasamang anim na module na hindi magiging bahagi ng Java SE 11 na pamantayan at hindi isasama sa JDK:
  • corba
  • transaksyon
  • pag-activate
  • xml.bind
  • xml.ws
  • xml.ws.annotation
Ang mga module na ito ay hindi na ginagamit sa JDK 9 at hindi isinama bilang default sa compilation o execution. Nangangahulugan ito na kung sinubukan mong mag-compile o magpatakbo ng isang application na gumagamit ng mga API ng mga module na ito sa JDK 9 o JDK 10, nabigo ito. Kung gagamitin mo ang mga API ng mga module na ito sa iyong code, kakailanganin mong ibigay ang mga ito bilang isang hiwalay na module o library.

Mga bagong API

Ang isang malaking bilang ng mga bagong API sa JDK 11 ay lumitaw salamat sa pagsasama ng mga module ng HTTP Client at Flight Recorder sa pamantayan ng wika . Para sa kumpletong listahan ng mga API, tingnan ang sumusunod na komprehensibong paghahambing ng iba't ibang bersyon ng JDK , na pinagsama-sama ni Gunnar Morling. At sa tala na ito ay maglilista kami ng ilang bagong pamamaraan na hindi kasama sa java.net.http , jdk.jfr at java.security modules . java.lang.String Masasabing isa sa pinakamahalagang pagbabago sa String sa JDK 11 API, mayroong ilang kapaki-pakinabang na bagong pamamaraan.
  • boolean isBlank (): nagbabalik ng true kung ang string ay walang laman o naglalaman lamang ng mga puwang, false kung hindi.

  • Stream lines(): Nagbabalik ng stream ng mga linyang nakuha mula sa string na ito, na pinaghihiwalay ng mga line terminator.

  • String repeat (int): Nagbabalik ng string na ang value ay ang concatenation ng string na iyon na int ulit na int .

  • String strip (): Nagbabalik ng string na inalis ang lahat ng puwang bago o pagkatapos ng unang character na hindi espasyo.

  • String stripLeading (): Nagbabalik ng string na inalis ang lahat ng espasyo hanggang sa unang character na hindi espasyo.

  • String stripTrainling (): Ibinabalik ang isang string na may lahat ng mga puwang na nagaganap pagkatapos maalis ang huling character na hindi espasyo.
strip()Nagawa na ng pamamaraan ang isang bagay na katulad trim (), ngunit sa pamamagitan ng mga puwang ang mga pamamaraang ito ay nangangahulugang magkaibang bagay. Kung sakaling, trim()mga puwang lamang ang pinutol, at sa strip()- mga espesyal na character din, tulad ng mga tab. java.lang.StringBuffer java.lang.StringBuilder Pareho sa mga klaseng ito ay naglalaman ng bagong paraan compareTo ()na tumatanggap ng StringBuffer/ StringBuilderat nagbabalik int. Ang lexical na paraan ng paghahambing ay katulad ng bagong paraan compareTo() CharSequence. java.io.ByteArrayOutputStream
  • void writeBytes (byte []): nagsusulat ng lahat ng byte ng parameter sa java.io.FileReader output stream
Mayroong dalawang bagong constructor dito na nagpapahintulot sa iyo na tukuyin ang Charset. java.io.FileWriter Apat na bagong konstruktor na nagbibigay-daan sa iyong tukuyin Charseang t. java.io.InputStream
  • io.InputStream nullInputStream (): returns InputStream, na hindi nagbabasa ng anumang byte. Paano gamitin ang pamamaraang ito? Maaari mong isipin ito bilang isang bagay tulad ng /dev/null upang itapon ang output na hindi mo kailangan, o upang mag-inject ng input na palaging nagbabalik ng zero byte.
java.io.OutputStream
  • io.OutputStream nullOutputStream ()
java.io.Reader
  • io.Reader nullReader ()
java.io.Writer
  • io.Writer nullWriter ()
java.lang.Character
  • String toString (int): Ito ay isang labis na karga ng isang umiiral na pamamaraan, ngunit gumagamit ng int sa halip na char.
java.lang.CharSequence
  • int compare (CharSequence, CharSequence): lexicographically naghahambing ng dalawang pagkakataon CharSequence. Nagbabalik ng negatibong value, zero, o positibong value kung ang unang sequence ay lexicographically mas mababa kaysa, katumbas ng, o mas malaki kaysa sa pangalawa, ayon sa pagkakabanggit.
java.lang.ref.Reference
    lang.Object clone (): Ang Java ebanghelist na si Simon Ritter ay umamin na ang paraang ito ay nakalilito sa kanya. Ang klase Referenceay hindi nagpapatupad ng isang interface Cloneableat ang paraang ito ay palaging magtapon ng isang pagbubukod CloneNotSupportedException. Gayunpaman, iminumungkahi ng eksperto na ang pamamaraang ito ay magiging kapaki-pakinabang para sa isang bagay sa hinaharap.
java.lang.Runtime java.lang.System Walang mga bagong pamamaraan dito. Banggitin lang natin na ang pamamaraan runFinalizersOnExit ()ay tinanggal mula sa parehong mga klase, na maaaring magdulot ng mga isyu sa pagiging tugma. java.lang.Thread Walang karagdagang pamamaraan, babanggitin lang namin na inalis destroy ()ang mga ito . stop (Throwable)Gayunpaman stop (), na hindi kumukuha ng mga argumento, ay magagamit pa rin. Mangyaring tandaan ito dahil maaaring may mga isyu sa compatibility. java.nio.ByteBuffer java.nio.CharBuffer java.nio.DoubleBuffer java.nio.FloatBuffer java.nio.LongBuffer java.nio.ShortBuffer Sa lahat ng klaseng ito, nagdagdag ang mga developer ng wika ng isang paraan mismatch ()na naghahanap at nagbabalik ng relative index ng unang mismatch sa pagitan ng buffer na ito at isang ibinigay na buffer. java.nio.channels.SelectionKey
  • int interestOpsAnd (int)

  • int interestOpsOr (int)
java.nio.channels.Selector
  • int select (java.util.function.Consumer, long): Pumipili at nagsasagawa ng pagkilos sa mga key na ang mga katumbas na channel ay handa na para sa mga operasyon ng I/O. Ang mahabang parameter ay isang timeout.

  • int select (java.util.function.Consumer): gumagana tulad ng pamamaraan sa itaas, ngunit walang timeout.

  • int selectNow (java.util.function.Consumer): gumagana tulad ng pamamaraan sa itaas, tanging ito ay hindi naka-block.

java.nio.file.Files
  • String readString (Path): Binabasa ang lahat ng nilalaman mula sa isang file patungo sa isang string, nagde-decode ng mga byte sa mga character gamit ang UTF-8 encoding .

  • String readString (Path, Charset): Gumagana tulad ng pamamaraan sa itaas, ngunit nagde-decode ng mga byte sa mga character gamit ang Charset.

  • Path writeString (Path, CharSequence, java.nio.file. OpenOption []): Kung magsulat ka ng pagkakasunod-sunod ng mga character CharSequencesa isang file, ang mga character na iyon ay ie-encode sa mga byte (gamit ang UTF-8 ).

  • Path writeString (Path, CharSequence, java.nio.file. Charset, OpenOption []): gumagana tulad ng pamamaraan sa itaas, ang mga character lamang ang naka-encode sa mga byte gamit ang Charset.
java.nio.file.Path
  • Path(String, String[]): Ibinabalik ang Path, binabago ang isang pathstring o sequence ng mga string na kapag pinagsama ay bumubuo ng isang pathstring.

  • Path (net.URI): Ibinabalik ang path sa pamamagitan ng pagbabago sa URI.
java.util.Collection
  • Object [] toArray (java.util.function.IntFunction): Nagbabalik ng array na naglalaman ng lahat ng elemento sa koleksyong ito, gamit ang ibinigay na function ng generator upang ipamahagi ang ibinalik na array.
java.util.concurrent.PriorityBlockingQueue java.util.PriorityQueue
  • void forEach (java.util.function.Consumer): Nagsasagawa ng tinukoy na aksyon sa bawat Iterable na elemento hanggang sa maproseso ang lahat ng elemento o ang aksyon ay maghagis ng exception.

  • boolean removeAll (java.util.Collection): Tinatanggal ang lahat ng elemento ng koleksyong ito na nakapaloob din sa tinukoy na koleksyon (opsyonal na operasyon).

  • boolean removeIf (java.util.function.Predicate): Tinatanggal ang lahat ng elemento ng koleksyong ito na nakakatugon sa ibinigay na panaguri.

  • boolean retainAll (java.util.Collection): Pinapanatili lamang ang mga elemento sa koleksyong ito na nakapaloob sa tinukoy na koleksyon (opsyonal na operasyon).
java.util.concurrent.TimeUnit
  • long convert (java.time.Duration): Kino-convert ang ibinigay na tagal ng oras sa yunit na ito.
java.util.function.Predicate
  • Predicate not(Predicate): nagbabalik ng panaguri na ang negasyon ng ibinigay na panaguri.
Halimbawa, ang sumusunod na code:
lines.stream ()

.filter (s ->! s.isBlank ())
maaaring i-convert dito:
lines.stream ()

.filter (Predicate.not (String :: ISBLANK))
at kung gumagamit kami ng static na pag-import, ito ang makukuha namin:
lines.stream ()
.filter (not(String :: ISBLANK))
java.util.Optional java.util.OptionalInt java.util.OptionalDouble java.util.OptionalLong
  • boolean isEmpty (): Nagbabalik ng true kung walang value , false kung hindi .
java.util.regex.Pattern
  • Predicate asMatchPredicate (): Naniniwala ang dalubhasa sa Java na si Simon Ritter na maaaring mayroong isang tunay na hiyas ng JDK 11 API na nakatago dito. Ang pamamaraang ito ay lumilikha ng isang panaguri na nagsusuri kung ang pattern na ito ay tumutugma sa isang ibinigay na string ng input.
java.util.zip.Deflater
  • int deflate (ByteBuffer): Kino-compress ang data ng input at pinupunan ang tinukoy na buffer ng naka-compress na data.

  • int deflate (ByteBuffer, int): Kino-compress ang data ng input at pinupunan ang tinukoy na buffer ng naka-compress na data. Ibinabalik ang aktwal na dami ng naka-compress na data.

  • void setDictionary (ByteBuffer): Itinatakda ang ibinigay na diksyunaryo na i-compress sa mga byte sa ibinigay na buffer. Ito ay isang labis na karga ng isang umiiral na paraan na maaari na ngayong tumanggap ng isang ByteBuffer, sa halip na isang byte array.

  • void setInput (ByteBuffer): Itinatakda ang input data na i-compress. Ito rin ay isang labis na karga ng isang umiiral na pamamaraan.
java.util.zip.Inflater
  • int inflate (ByteBuffer): Nag-unpack ng mga byte sa tinukoy na buffer. Ibinabalik ang aktwal na bilang ng mga hindi naka-compress na byte.

  • void setDictionary (ByteBuffer): Itinatakda ang ibinigay na diksyunaryo sa mga byte sa ibinigay na buffer. Ay isang overloaded form ng isang umiiral na paraan.

  • void setInput (ByteBuffer): Itinatakda ang input data para sa decompression. Isang overloaded na anyo ng isang umiiral na paraan.
javax.print.attribute.standard.DialogOwner Ito ay isang bagong klase sa JDK 11 at isang attribute class na ginagamit upang suportahan ang mga kahilingan sa pag-print o pag-customize na pahina na ipapakita sa itaas ng lahat ng mga window o isang partikular na window. javax.swing.DefaultComboBoxModel javax.swing.DefaultListModel
  • void addAll (Collection): Idinaragdag ang lahat ng elementong naroroon sa koleksyon.

  • void addAll (int, Collection): Idinaragdag ang lahat ng elementong naroroon sa koleksyon, simula sa tinukoy na index.
javax.swing.ListSelectionModel
  • int [] getSelectedIndices (): Nagbabalik ng array ng lahat ng napiling index sa napiling modelo sa pataas na pagkakasunud-sunod.

  • int getSelectedItemsCount (): Ibinabalik ang bilang ng mga napiling item.
jdk.jshell.EvalException
  • shell.JShellException getCause (): Ibinabalik ang throwable reason sa execution client na ipinakita ng EvalException na ito, o null kung ang dahilan ay wala o hindi alam.

Mga tampok na hindi developer ng Java 11

[181] Ang Nest-Based Access Control Java at iba pang mga wika ay sumusuporta sa mga nested na klase sa pamamagitan ng mga panloob na klase. Para gumana ito, dapat magsagawa ang compiler ng ilang partikular na trick. Halimbawa:
public class Outer {
    private int outerInt;

     class Inner {
       public void printOuterInt() {
         System.out.println("Outer int = " + outerInt);
       }
     }
   }
Binabago ito ng compiler upang makagawa ng isang bagay tulad ng sumusunod bago mag-compile:
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());
      }
    }
Bagaman lohikal na ang panloob na klase ay bahagi ng parehong code ng panlabas na klase, ito ay pinagsama-sama bilang isang hiwalay na klase. Samakatuwid, ang operasyong ito ay nangangailangan ng isang synthetic na paraan ng pagsali na dapat gawin ng compiler upang magbigay ng access sa pribadong larangan ng panlabas na klase. Ipinakilala ng JEP na ito ang konsepto ng mga pugad, kung saan dalawang miyembro ng parehong pugad (Outer at Inner sa aming halimbawa) ay mga nesting buddies. Dalawang bagong attribute ang tinukoy para sa format ng class file: NestHost at NestMembers . Ang mga pagbabagong ito ay kapaki-pakinabang para sa iba pang mga wika na sumusuporta sa mga nested na klase at bytecode. Ang function na ito ay nagpapakilala ng tatlong bagong pamamaraan para sa java.lang.Class : Class getNestHost () Class [] getNestMembers () boolean isNestmateOf (Class) [309] Dynamic na Class-File Constants Ang JEP na ito ay naglalarawan ng extension sa class file format upang suportahan ang bagong persistent pool form na CONSTANT_Dynamic. Ang ideya ng isang dynamic na pare-pareho ay tila isang oxymoron, ngunit mahalagang maaari mong isipin ito bilang isang pangwakas na halaga sa Java 11. Ang halaga ng isang pooling constant ay hindi nakatakda sa oras ng pag-compile (hindi tulad ng iba pang mga constants), ngunit gumagamit ng isang bootstrap paraan upang matukoy ang halaga sa lead time. Samakatuwid ang halaga ay dynamic, ngunit dahil ang halaga nito ay nakatakda lamang ng isang beses, ito ay pare-pareho din. Ang tampok na ito ay pangunahing naglalayon sa mga tao na bumuo ng mga bagong wika at compiler na bubuo ng mga bytecode at class file bilang output na tatakbo sa JVM. [315] Pagbutihin ang Aarch64 Intrinsics Ang JEP na ito ay iminungkahi ng komunidad ng Red Hat. Ang JVM ay maaari na ngayong gumamit ng mas espesyal na mga tagubilin na magagamit sa hanay ng pagtuturo ng Arm 64. Sa partikular, pinapabuti nito ang pagganap ng , mga pamamaraan sin ()at cos ()ang log ()klase ng java.lang.Math . [318] Epsilon: Isang No-Op Garbage Collector Tulad ng sa JEP 315 , maaari mong pasalamatan ang Red Hat para sa pagpapakilala ng Epsilon garbage collector. Ang Epsilon ay hindi pangkaraniwan dahil hindi talaga ito nangongolekta ng basura! Kapag ang mga bagong bagay ay nilikha, ito ay naglalaan ng memorya kung kinakailangan, ngunit hindi nagre-reclaim ng espasyo na inookupahan ng mga hindi rehistradong bagay. “ Ano ang punto? ", - tanong mo. Lumalabas na ang "pagkolekta ng basura" na ito ay may dalawang gamit:
  1. Una sa lahat, ang basurero na ito ay idinisenyo upang matiyak na ang mga bagong GC algorithm ay sinusuri sa mga tuntunin ng epekto ng kanilang pagganap. Ang ideya ay magpatakbo ng sample na application sa Epsilon at bumuo ng isang hanay ng mga sukatan. Ang bagong algorithm sa pangongolekta ng basura ay pinagana, ang parehong mga pagsubok ay pinapatakbo, at pagkatapos ay inihambing ang mga resulta.

  2. Para sa napakaikling gawain (isipin ang mga walang server na function sa cloud) kung saan maaari mong garantiya na hindi ka lalampas sa memorya na nakalaan sa heap. Mapapabuti nito ang pagganap sa pamamagitan ng pag-aalis ng overhead (kabilang ang pagkolekta ng mga istatistika na kailangan upang magpasya kung tatakbo ang kolektor) sa code ng aplikasyon. Kung naubos na ang heap space, maaaring mali ang pagkaka-configure ng JVM sa isa sa tatlong paraan:
    • Normal ang tawag OutOfMemoryError.
    • Magsagawa ng heap reset
    • Nabigo ang JVM hard drive at maaaring nagsasagawa ng isa pang gawain (tulad ng pagsisimula ng debugger).
[328]: Flight Recorder Ang Flight Recorder ay isang mababang antas na framework ng pagkuha ng data para sa JVM. Bago ang JDK 11, ito ay isang komersyal na tampok sa Oracle JDK binary. Inaalis na ngayon ng Oracle ang mga pagkakaiba sa pagganap sa pagitan ng Oracle JDK at isang build mula sa OpenJDK. Narito ang ginagawa ng Flight Recorder :
  • Nagbibigay ng API para sa paggawa at paggamit ng data bilang mga kaganapan
  • Nagbibigay ng buffer mechanism at binary data format
  • Nagbibigay-daan sa pag-customize at pag-filter ng mga kaganapan
  • Magbigay ng mga kaganapan para sa OS, JVM HotSpot at JDK library
Mayroong dalawang bagong module dito: jdk.jfr at jdk.management.jfr . [329] ChaCha20 at Poly1305 cryptographic algorithm Ang JEP na ito ay tungkol sa pag-update ng mga cipher na ginamit ng JDK. Ang kasong ito ay nagpapatupad ng ChaCha20 at ChaCha20-Poly1305 encryption algorithm gaya ng tinukoy sa RFC 7539. Ang ChaCha20 ay medyo bagong stream cipher na maaaring palitan ang mas luma, hindi secure na RC4 cipher . [333] ZGC: Isang Scalable Low-Latency Garbage Collector Isang experimental scalable low-latency na kolektor ng basura. Idinisenyo para gamitin sa mga application na nangangailangan ng malaking (multigigabyte) na heap at mababang latency. Gumagamit ito ng isang solong henerasyong bunton at ginagawa ang karamihan (ngunit hindi lahat) ng gawaing pangongolekta ng basura kasabay ng aplikasyon. [332] Ang Transport Layer Security (TLS) 1.3 TLS 1.3 (RFC 8446) ay isang pangunahing patch sa TLS transport layer security protocol na nagbibigay ng makabuluhang seguridad at pagpapahusay sa pagganap kaysa sa mga nakaraang bersyon. Sinusuportahan na ngayon ng JDK ang bersyon ng protocol na ito. Ang materyal ay batay sa isang artikulo ni Simon Ritter at opisyal na dokumentasyon .
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION