No sechs Méint Entwécklung huet Oracle d'Java SE 17 Plattform (Java Platform, Standard Edition 17) erausbruecht, déi den Open-Source OpenJDK Projet als Referenzimplementatioun benotzt. Mat Ausnam vun der Entfernung vun e puer ofgeschaafte Funktiounen, behÀlt Java SE 17 RéckwÀrtskompatibilitéit mat fréiere Versioune vun der Java Plattform - déi meescht virdru geschriwwe Java Projeten lafen onverÀnnert wann se ënner der neier Versioun lafen. Installéierbar Builds vu Java SE 17 (JDK, JRE a Server JRE) sinn dofir virbereet. Linux (x86_64, AArch64), Windows (x86_64) an macOS (x86_64, AArch64). Entwéckelt vum OpenJDK Projet, ass d'Java 17 Referenzimplementatioun voll Open Source ënner der GPLv2 Lizenz mat der GNU ClassPath Exception, déi eng dynamesch Verknëppung mat kommerziellen Produkter erlaabt.
Java SE 17 ass klassĂ©iert als Long Term Support (LTS) VerĂ«ffentlechung, dĂ©i weider Updates bis 2029 krĂ©ien. Updates fir dĂ©i frĂ©ier Java 16 Meilesteen VerĂ«ffentlechung goufen ofgeschaaft. DĂ©i viregt LTS Branche vu Java 11 gĂ«tt bis 2026 Ă«nnerstĂ«tzt. DĂ©i nĂ€chst LTS VerĂ«ffentlechung ass geplangt fir September 2024. Loosst eis Iech drun erĂ«nneren datt ugefaang mat der VerĂ«ffentlechung vu Java 10, de Projet op en neien EntwĂ©cklungsprozess gewiesselt ass, wat e mĂ©i kuerzen Zyklus fir d'Bildung vun neie VerĂ«ffentlechungen implizĂ©iert. Nei FunktionalitĂ©it ass elo an enger stĂ€nneg aktualisĂ©ierter Master-Branche entwĂ©ckelt, dĂ©i fĂ€erdeg Ănnerunge enthĂ€lt an aus deenen d'Branchen all sechs MĂ©int verzweifelt ginn fir nei VerĂ«ffentlechungen ze stabilisĂ©ieren.
Nei Features am Java 17 enthalen:
- Eng experimentell Implementatioun vu Mustermatching an "Schalter" Ausdréck gëtt proposéiert, wat et erlaabt net exakt WÀerter an "Fall" Etiketten ze benotzen, awer flexibel Templates déi eng Serie vu WÀerter glÀichzÀiteg ofdecken, fir déi virdru gebraucht gouf fir ëmstÀndlech ze benotzen Ketten vun "wann ... soss" Ausdréck. ZousÀtzlech, "Schalter" huet d'FÀhegkeet NULL WÀerter ze verschaffen. Objekt o = 123L; String formatted = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("lang %d", l); case Double d -> String.format("duebel %f", d); case String s -> String.format("String %s", s); default -> o.toString(); };
- StabilisĂ©iert ĂnnerstĂ«tzung fir versiegelt Klassen an SchnĂ«ttplazen, dĂ©i net vun anere Klassen an SchnĂ«ttplazen benotzt kĂ«nne ginn fir d'Ămsetzung ze ierwen, ze verlĂ€ngeren oder ze iwwerschreiden. Versiegelte Klassen bidden och e mĂ©i deklarativen Wee fir d'Benotzung vun enger Superklass ze beschrĂ€nken wĂ©i Zougangsmodifikateur, basĂ©iert op explizit OplĂ«schtung vun den Ănnerklassen, dĂ©i fir d'VerlĂ€ngerung erlaabt sinn. Package com.example.geometrie; Ă«ffentlech versiegelt Klass Form erlaabt com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {...}
- Eng zweet Virschau vun der Vector API gĂ«tt proposĂ©iert, dĂ©i Funktiounen fir Vecteure Berechnungen ubitt, dĂ©i mat Vektorinstruktiounen op x86_64 an AArch64 Prozessoren ausgefouert ginn an et erlaben Operatiounen glĂ€ichzĂ€iteg op verschidde WĂ€erter (SIMD) applizĂ©iert ze ginn. Am GĂ©igesaz zu de FĂ€egkeeten, dĂ©i am HotSpot JIT Compiler zur Auto-VektorisĂ©ierung vu scalar Operatiounen zur VerfĂŒgung gestallt ginn, mĂ©cht dĂ©i nei API et mĂ©iglech explizit VektorisĂ©ierung fir parallel Datenveraarbechtung ze kontrollĂ©ieren.
- Eng Virschau vun der Foreign Function & Memory API bĂ€igefĂŒĂŒgt, dĂ©i Uwendungen erlaabt mat Code an Daten ausserhalb der Java Runtime ze interagĂ©ieren. DĂ©i nei API erlaabt Iech effizient Net-JVM Funktiounen ze ruffen an Zougang zu Net-JVM-verwalte ErĂ«nnerung. Zum Beispill kĂ«nnt Dir Funktiounen aus externen gemeinsame BibliothĂ©iken ruffen an Zougang zu Prozessdaten ouni JNI benotzen.
- Rendering-Motor fir macOS, dĂ©i d'Java 2D API ubitt, dĂ©i dann an der Swing API benotzt gĂ«tt, ass ugepasst fir d'Metal Graphics API ze benotzen. StandardmĂ©isseg ass d'Plattform macOS OpenGL gĂ«tt nach Ă«mmer benotzt, an d'AktivĂ©ierung vun der Metal-ĂnnerstĂ«tzung erfuerdert d'Astellung vum Parameter "-Dsun.java2d.metal=true" an d'Benotzung vun op d'mannst der Versiounsdatum. macOS 10.14.x.
- Port fir d'Plattform bĂ€igefĂŒĂŒgt macOS/AArch64 (Apple Computeren basĂ©iert op den neien Apple M1 Chips). Eng speziell Funktioun vun dĂ«sem Port ass d'ĂnnerstĂ«tzung fir de W^X (Write XOR Execute) Speicherschutzmechanismus, deen verhĂ«nnert datt SpeichersĂ€iten glĂ€ichzĂ€iteg beschriwwen an ausfĂ©ierbar sinn. (Code kann nĂ«mmen ausgefĂŒhrt ginn nodeems de Schreifzougang deaktivĂ©iert ass, an d'Schreiwe op eng SpeichersĂ€it ass nĂ«mme mĂ©iglech nodeems de AusfĂ©ierungszougang deaktivĂ©iert ass.)
- ZrĂ©ckgaang fir nĂ«mmen strictfp Semantik fir Floating Point AusdrĂ©ck ze benotzen. ĂnnerstĂ«tzung fir d'"Standard" Semantik, dĂ©i zanter der VerĂ«ffentlechung vu Java 1.2 verfĂŒgbar ass, ass gestoppt ginn, dorĂ«nner Vereinfachunge fir op Systemer mat ganz alen x87 Mathematik-Koprozessoren ze schaffen (no der Entstoe vun SSE2 Instruktiounen ass de Besoin fir zousĂ€tzlech Semantik verschwonnen).
- Nei Zorte vu SchnĂ«ttplazen zu pseudorandom Zuel Generatoren goufen Ă«mgesat, an zousĂ€tzlech algorithms goufen fir eng besser Generatioun vun zoufĂ€lleg Zuelen Ă«mgesat. D'Applikatioune ginn d'MĂ©iglechkeet en Algorithmus ze wielen fir pseudorandom Zuelen ze generĂ©ieren. Verbesserte ĂnnerstĂ«tzung fir zoufĂ€lleg Objetstroum ze generĂ©ieren.
- Gezwongen strikt Verschlësselung vun all JDK interns, mat Ausnam vun kritescher API wéi sun.misc.Unsafe. Strikt Encapsulation blockéiert Versuche vum Code fir Zougang zu intern Klassen, Methoden a Felder ze kréien. Virdrun konnt de strenge Encapsuléierungsmodus mat der "--illegal-access=permit" Optioun ausgeschalt ginn, awer dëst gouf elo ofgeschaaft. Uwendungen déi Zougang zu intern Klassen, Methoden a Felder erfuerderen, solle se explizit definéieren mat der --add-opens Optioun oder dem Add-Opens Attribut an der Manifestdatei.
- Applikatioune kënnen elo Filter fir Datendeserialisatioun definéieren, déi kontextofhÀngeg kënne sinn an dynamesch a Verbindung mat spezifeschen Deserialisatiounsoperatiounen ausgewielt ginn. D'Filter, déi Dir definéiert, gëllen fir de ganze ... virtuell Maschinn (JVM-wÀit), d.h. si decken net nëmmen d'Applikatioun selwer of, mÀ och Drëttubidder-Bibliothéike vun an der Applikatioun benotzt.
- Swing huet d'javax.swing.filechooser.FileSystemView.getSystemIcon Method derbÀigesat fir grouss Ikonen ze lueden fir d'UI op High DPI Schiirme ze verbesseren.
- D'java.net.DatagramSocket API bitt ĂnnerstĂ«tzung fir d'Verbindung mat Multicast Gruppen ouni de Besoin fir eng separat java.net.MulticastSocket API.
- D'IGV (Ideal Graph Visualizer) Utility gouf verbessert, bitt interaktiv Visualiséierung vun der mëttlerer Code Representatioun am HotSpot VM C2 JIT Compiler.
- Am JavaDoc, duerch Analogie mam javac Compiler, wann e Feeler erausgeet, ginn d'Zuel vun der problematescher Linn an der Quelldatei an d'Location vum Feeler elo uginn.
- D'native.encoding Eegeschafte bĂ€igefĂŒĂŒgt, wat den Numm vum System Charakter KodĂ©ierung reflektĂ©iert (UTF-8, koi8-r, cp1251, etc.).
- D'java.time.InstantSource Interface gouf bĂ€igefĂŒĂŒgt, wat ZĂ€itmanipulatioun erlaabt ouni Referenz op eng ZĂ€itzone.
- DerbÀigesat java.util.HexFormat API fir d'Konvertéierung op hexadezimal Representatioun a vice versa.
- E Blackhole Modus gouf zum Compiler bĂ€igefĂŒĂŒgt, deen dout-Code Eliminatiounsoperatioune deaktivĂ©iert, dĂ©i kĂ«nne benotzt ginn wann Dir Leeschtungstester ausfĂ©iert.
- D'Optioun "-Xlog:async" op Runtime bĂ€igefĂŒĂŒgt fir Logbicher am asynchrone Modus opzehuelen.
- Wann Dir sécher Verbindungen opstellt, ass TLS 1.3 als Standard aktivéiert (virdrun TLS 1.2 gouf benotzt).
- DĂ©i virdru deklarĂ©iert verouderd Applet API (java.applet.Applet*, javax.swing.JApplet), dĂ©i benotzt gouf fir Java Uwendungen am Browser ze lafen, gouf an d'Kategorie geplĂ«nnert fir d'Entfernung (verluer Relevanz nom Enn vun der ĂnnerstĂ«tzung) fir den Java Plugin fir Browser).
- De SĂ©cherheetsmanager, deen zĂ«nter laangem seng Relevanz verluer huet a sech no der Enn vun der ĂnnerstĂ«tzung fir de Browser Plugin net ugefrot huet, ass an d'Kategorie vun de geplangten Entfernung geplĂ«nnert.
- De RMI Aktivéierungsmechanismus gouf ofgeschaaft, deen al ass, an d'Kategorie vun enger Optioun am Java 8 ofgestig ass a bal ni an der moderner Praxis benotzt gëtt.
- En experimentellen Compiler deen JIT (just-in-time) Ă«nnerstĂ«tzt fir dynamesch KompilĂ©ierung vum Java Code fir HotSpot JVM, souwĂ©i de Modus vun der antizipativer KompilĂ©ierung (AOT, viraussiichtlech) vu Klassen a Maschinncode ier Dir dĂ©i virtuell Maschinn ufĂ€nkt , gouf aus der SDK gelĂ€scht. De Compiler gouf op Java geschriwwen a basĂ©iert op der Aarbecht vum Graal Projet. Et gĂ«tt bemierkt datt Compiler Ănnerhalt vill Aarbecht erfuerdert, wat net gerechtfĂ€erdegt ass wann et keng Nofro vun EntwĂ©ckler ass.
Source: opennet.ru
