Rilaxx Java SE 17

Wara sitt xhur ta 'żvilupp, Oracle ħareġ il-pjattaforma Java SE 17 (Java Platform, Standard Edition 17), li tuża l-proġett OpenJDK open source bħala implimentazzjoni ta' referenza. Bl-eċċezzjoni tat-tneħħija ta 'xi karatteristiċi deprecati, Java SE 17 iżomm kompatibilità b'lura ma' rilaxxi preċedenti tal-pjattaforma Java - il-biċċa l-kbira tal-proġetti Java miktuba qabel xorta se jaħdmu mingħajr modifika meta jitħaddmu taħt il-verżjoni l-ġdida. Bini ta' Java SE 17 lest biex jiġi installat (JDK, JRE, u Server JRE) huma ppreparati għal Linux (x86_64, AArch64), Windows (x86_64), u macOS (x86_64, AArch64). Żviluppata mill-proġett OpenJDK, l-implimentazzjoni ta' referenza Java 17 hija sors kompletament miftuħ taħt il-liċenzja GPLv2 b'eċċezzjonijiet GNU ClassPath biex tippermetti konnessjoni dinamika ma' prodotti kummerċjali.

Java SE 17 huwa kklassifikat bħala rilaxx ta' Appoġġ fit-Tul (LTS), li se jkompli jirċievi aġġornamenti sal-2029. Aġġornamenti għar-rilaxx tal-mira ta' Java 16 preċedenti ma tkomplewx. Il-fergħa LTS preċedenti ta' Java 11 se tkun appoġġjata sal-2026. Ir-rilaxx LTS li jmiss huwa skedat għal Settembru 2024. Ejjew infakkarkom li b'bidu bir-rilaxx ta 'Java 10, il-proġett qaleb għal proċess ta' żvilupp ġdid, li jimplika ċiklu iqsar għall-formazzjoni ta 'rilaxxi ġodda. Funzjonalità ġdida issa hija żviluppata f'fergħa prinċipali waħda aġġornata kontinwament, li tinkludi bidliet lesti u li minnha fergħat huma ramifikati kull sitt xhur biex jistabbilizzaw rilaxxi ġodda.

Karatteristiċi ġodda f'Java 17 jinkludu:

  • Hija proposta implimentazzjoni sperimentali tat-tqabbil tal-mudelli f'espressjonijiet "swiċċ", li tippermetti li jintużaw mhux valuri eżatti f'tikketti "każ", iżda mudelli flessibbli li jkopru serje ta' valuri f'daqqa, li għalihom qabel kien meħtieġ li jintużaw ingombranti. ktajjen ta’ espressjonijiet “jekk... inkella”. Barra minn hekk, "swiċċ" għandu l-abbiltà li jimmaniġġja valuri NULL. Oġġett o = 123L; String formatted = switch (o) { case Integer i -> String.format ("int %d", i); case Long l -> String.format ("long %d", l); każ Double d -> String.format ("double %f", d); case String s -> String.format ("String %s", s); default -> o.toString(); };
  • Appoġġ stabilizzat għal klassijiet u interfaces issiġillati, li ma jistgħux jintużaw minn klassijiet u interfaces oħra biex jirtu, jestendu, jew jegħlbu l-implimentazzjoni. Klassijiet issiġillati jipprovdu wkoll mod aktar dikjarattiv biex jirrestrinġu l-użu ta 'superklassi minn modifikaturi ta' aċċess, ibbażati fuq elenkar espliċitu tas-subklassijiet permessi għall-estensjoni. pakkett com.example.geometry; klassi pubblika ssiġillata Permessi tal-Forma com.example.polar.Circle, com.example.quad.Rettangolu, com.example.quad.simple.Square {…}
  • Hija proposta t-tieni previżjoni tal-API Vector, li tipprovdi funzjonijiet għal kalkoli tal-vettur li huma esegwiti bl-użu ta 'struzzjonijiet tal-vettur fuq proċessuri x86_64 u AArch64 u jippermettu li l-operazzjonijiet jiġu applikati simultanjament għal valuri multipli (SIMD). B'differenza mill-kapaċitajiet ipprovduti fil-kompilatur HotSpot JIT għall-vettorizzazzjoni awtomatika ta 'operazzjonijiet skalari, l-API l-ġdida tagħmilha possibbli li tikkontrolla b'mod espliċitu l-vettorizzazzjoni għall-ipproċessar tad-dejta parallela.
  • Żiedet preview tal-Funzjoni Barranija u l-API tal-Memorja, li tippermetti li l-applikazzjonijiet jinteraġixxu mal-kodiċi u d-dejta barra l-ħin tar-runtime Java. L-API l-ġdida tippermettilek issejjaħ b'mod effiċjenti funzjonijiet mhux JVM u taċċessa memorja mhux ġestita minn JVM. Pereżempju, tista' ċċempel funzjonijiet minn libreriji kondiviżi esterni u taċċessa d-dejta tal-proċess mingħajr ma tuża JNI.
  • Il-magna tar-rendi macOS li tħaddem l-API Java 2D, li min-naħa tagħha tħaddem l-API Swing, ġiet adattata biex tuża l-API tal-grafika tal-metall. Il-pjattaforma macOS għadha tuża OpenGL b'mod awtomatiku, u l-abilitazzjoni tal-appoġġ tal-Metall teħtieġ li tissettja "-Dsun.java2d.metal=true" u tal-inqas taħdem macOS 10.14.x.
  • Miżjud port għall-pjattaforma macOS/AArch64 (kompjuters Apple bbażati fuq iċ-ċipep il-ġodda Apple M1). Karatteristika speċjali tal-port hija l-appoġġ għall-mekkaniżmu ta 'protezzjoni tal-memorja W^X (Write XOR Execute), li fih il-paġni tal-memorja ma jistgħux jiġu aċċessati simultanjament għall-kitba u l-eżekuzzjoni. (il-kodiċi jista 'jiġi eżegwit biss wara li l-kitba tkun diżattivata, u l-kitba f'paġna tal-memorja hija possibbli biss wara li l-eżekuzzjoni tkun diżattivata).
  • Reġgħet lura għall-użu ta' semantika strictfp biss għal espressjonijiet b'punt li jvarja. L-appoġġ għas-semantika "default", disponibbli mir-rilaxx ta 'Java 1.2, twaqqaf, inklużi simplifikazzjonijiet għal ħidma fuq sistemi b'koproċessuri matematika x87 antiki ħafna (wara l-miġja tal-istruzzjonijiet SSE2, il-ħtieġa għal semantika addizzjonali sparixxa).
  • Ġew implimentati tipi ġodda ta 'interfaces għal ġeneraturi ta' numri pseudorandom, u algoritmi addizzjonali ġew implimentati għal ġenerazzjoni aħjar ta 'numri każwali. L-applikazzjonijiet jingħataw l-opportunità li jagħżlu algoritmu biex jiġġeneraw numri psewdondożwali. Appoġġ imtejjeb għall-ġenerazzjoni ta 'flussi ta' oġġetti bl-addoċċ.
  • Inkapsulament strett infurzat tal-intern JDK kollha, bl-eċċezzjoni ta 'APIs kritiċi bħal sun.misc.Unsafe. L-inkapsulament strett jimblokka t-tentattivi mill-kodiċi biex jaċċessaw klassijiet, metodi u oqsma interni. Preċedentement, il-mod ta 'inkapsulament strett jista' jiġi diżattivat bl-użu tal-għażla "--illegal-access=permit", iżda dan issa ġie deprecated. Applikazzjonijiet li jeħtieġu aċċess għal klassijiet, metodi u oqsma interni għandhom jiddefinixxuhom b'mod espliċitu billi jużaw l-għażla --add-opens jew l-attribut Add-Opens fil-fajl manifest.
  • L-applikazzjonijiet jingħataw il-kapaċità li jiddefinixxu filtri tad-deserialization tad-dejta, li jistgħu jkunu sensittivi għall-kuntest u magħżula dinamikament abbażi ta' operazzjonijiet speċifiċi ta' deserialization. Il-filtri speċifikati huma applikabbli għall-magna virtwali kollha (JVM kollha), i.e. tkopri mhux biss l-applikazzjoni nnifisha, iżda wkoll il-libreriji ta 'partijiet terzi użati fl-applikazzjoni.
  • Swing żied il-metodu javax.swing.filechooser.FileSystemView.getSystemIcon biex jgħabbi ikoni kbar biex ittejjeb l-UI fuq skrins DPI Għoli.
  • Il-java.net.DatagramSocket API jipprovdi appoġġ għall-konnessjoni ma 'gruppi Multicast mingħajr il-ħtieġa ta' java.net.MulticastSocket API separat.
  • L-utilità IGV (Ideal Graph Visualizer) ġiet imtejba, li tipprovdi viżwalizzazzjoni interattiva tar-rappreżentazzjoni tal-kodiċi intermedja fil-kompilatur HotSpot VM C2 JIT.
  • F'JavaDoc, b'analoġija mal-kompilatur javac, meta joħroġ żball, in-numru tal-linja problematika fil-fajl tas-sors u l-post tal-iżball issa huma indikati.
  • Miżjud il-proprjetà native.encoding, li tirrifletti l-isem tal-kodifikazzjoni tal-karattri tas-sistema (UTF-8, koi8-r, cp1251, eċċ.).
  • L-interface java.time.InstantSource ġiet miżjuda, li tippermetti manipulazzjoni tal-ħin mingħajr referenza għal żona tal-ħin.
  • Miżjud java.util.HexFormat API għall-konverżjoni għal rappreżentazzjoni eżadeċimali u viċi versa.
  • Modalità blackhole ġiet miżjuda mal-kompilatur, li tiddiżattiva l-operazzjonijiet ta 'eliminazzjoni ta' kodiċi mejjet, li jistgħu jintużaw meta jsiru testijiet tal-prestazzjoni.
  • Miżjud "-Xlog: async" għażla għal Runtime biex jirreġistra zkuk fil-modalità asinkronika.
  • Meta jiġu stabbiliti konnessjonijiet sikuri, TLS 1.3 huwa attivat awtomatikament (preċedentement kien jintuża TLS 1.2).
  • L-Applet API (java.applet.Applet*, javax.swing.JApplet) iddikjarat preċedentement skadut, li kien użat biex imexxu l-applikazzjonijiet Java fil-browser, ġie mċaqlaq għall-kategorija ta 'slated għat-tneħħija (rilevanza mitlufa wara t-tmiem tal-appoġġ għall-plugin Java għall-browsers).
  • Maniġer tas-Sigurtà, li ilu tilef ir-rilevanza tiegħu u rriżulta li ma kienx mitlub wara t-tmiem tal-appoġġ għall-plugin tal-browser, ġie mċaqlaq għall-kategorija ta 'dawk skedati għat-tneħħija.
  • Il-mekkaniżmu ta 'Attivazzjoni RMI tneħħa, li huwa skadut, relegat għall-kategorija ta' għażla f'Java 8 u kważi qatt ma jintuża fil-prattika moderna.
  • Kompilatur sperimentali li jappoġġja JIT (just-in-time) għall-kumpilazzjoni dinamika tal-kodiċi Java għal HotSpot JVM, kif ukoll il-mod ta 'kumpilazzjoni antiċipattiva (AOT, qabel iż-żmien) ta' klassijiet f'kodiċi tal-magni qabel ma tibda l-magna virtwali , tneħħa mill-SDK. Il-kompilatur inkiteb bil-Java u bbażat fuq ix-xogħol tal-proġett Graal. Huwa nnutat li l-manutenzjoni tal-kompilatur teħtieġ ħafna xogħol, li mhux iġġustifikat meta ma jkunx hemm domanda mill-iżviluppaturi.

Sors: opennet.ru

Żid kumment