Java SE 17 lage

Apre sis mwa nan devlopman, Oracle te pibliye Java SE 17 (Java Platform, Standard Edition 17), ki sèvi ak pwojè OpenJDK sous louvri kòm yon aplikasyon referans. Ak eksepsyon de retire kèk karakteristik demode, Java SE 17 kenbe konpatibilite bak ak degaje anvan yo nan platfòm Java a - pifò pwojè Java yo te ekri yo pral travay san chanjman lè yo kouri anba nouvo vèsyon an. Pare-pou-enstale bati nan Java SE 17 (JDK, JRE ak sèvè JRE) yo prepare pou Linux (x86_64, AArch64), Windows (x86_64) ak macOS (x86_64, AArch64). Pwojè OpenJDK devlope, aplikasyon referans Java 17 la se yon sous totalman louvri anba lisans GPLv2, ak eksepsyon GNU ClassPath ki pèmèt lyen dinamik ak pwodwi komèsyal yo.

Java SE 17 klase kòm yon lage Sipò Alontèm (LTS), ki pral kontinye resevwa mizajou jiska 2029. Mizajou pou lage etap jalon anvan Java 16 yo sispann. Branch LTS anvan Java 11 la pral sipòte jiska 2026. Pwochen piblikasyon LTS la pwograme pou septanm 2024. Se pou nou raple w ke kòmanse ak lage nan Java 10, pwojè a chanje nan yon nouvo pwosesis devlopman, ki vle di yon sik ki pi kout pou fòmasyon nan nouvo degaje. Nouvo fonksyonalite kounye a devlope nan yon sèl branch mèt toujou ap mete ajou, ki gen ladann chanjman ki pare yo epi ki soti nan ki branch yo branch chak sis mwa estabilize nouvo degaje.

Nouvo karakteristik nan Java 17 yo enkli:

  • Yo pwopoze yon aplikasyon eksperimantal nan matche modèl nan ekspresyon "chanjman", ki pèmèt itilize pa valè egzak nan etikèt "ka", men modèl fleksib ki kouvri yon seri de valè nan yon fwa, pou ki deja li te nesesè yo sèvi ak ankonbran. chenn ekspresyon "si... lòt bagay". Anplis de sa, "switch" gen kapasite nan okipe valè NULL. Objè o = 123L; String fòma = switch (o) { ka 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(); };
  • Sipò estabilize pou klas sele ak koòdone, ki pa ka itilize pa lòt klas ak koòdone pou eritye, pwolonje, oswa depase aplikasyon an. Klas sele yo bay tou yon fason ki pi klè pou mete restriksyon sou itilizasyon yon sipèklas pase modifikasyon aksè, ki baze sou lis klèman sou klas yo pèmèt pou ekstansyon. pake com.example.geometry; klas piblik sele fòm pèmi kom.egzanp.polè.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}
  • Yo pwopoze yon dezyèm aperçu nan Vector API a, ki bay fonksyon pou kalkil vektè ke yo egzekite lè l sèvi avèk enstriksyon vektè sou processeurs x86_64 ak AArch64 epi ki pèmèt operasyon yo dwe aplike ansanm nan plizyè valè (SIMD). Kontrèman ak kapasite yo bay nan HotSpot JIT du pou oto-vectorization nan operasyon eskalè, nouvo API a fè li posib pou kontwole klèman vektorizasyon pou pwosesis done paralèl.
  • Te ajoute yon aperçu nan Fonksyon Etranjè & API memwa, ki pèmèt aplikasyon yo kominike avèk kòd ak done deyò ègzekutabl Java a. Nouvo API a pèmèt ou byen rele fonksyon ki pa JVM epi jwenn aksè nan memwa ki pa jere JVM. Pou egzanp, ou ka rele fonksyon ki soti nan bibliyotèk ekstèn pataje ak aksè done pwosesis san yo pa itilize JNI.
  • Motè rann macOS ki pouse Java 2D API, ki an vire pouvwa Swing API, te adapte pou itilize API Metal graphics. Platfòm macOS la kontinye sèvi ak OpenGL pa default, epi pèmèt sipò Metal mande pou mete "-Dsun.java2d.metal=true" ak omwen kouri macOS 10.14.x.
  • Te ajoute yon pò pou platfòm macOS/AArch64 (òdinatè Apple ki baze sou nouvo chips Apple M1 yo). Yon karakteristik espesyal nan pò a se sipò pou mekanis pwoteksyon memwa W ^ X (Write XOR Execute), nan ki paj memwa pa ka jwenn aksè ansanm pou ekri ak ekzekisyon. (Kòd ka egzekite sèlman apre ekriti enfim, epi ekri nan yon paj memwa se posib sèlman apre ekzekisyon enfim).
  • Retounen sèvi ak semantik strictfp sèlman pou ekspresyon pwen k ap flote. Sipò pou semantik "default" yo, ki disponib depi liberasyon Java 1.2, te sispann, ki gen ladan senplifikasyon pou travay sou sistèm ki gen anpil ansyen koprosesè matematik x87 (apre avenman enstriksyon SSE2, bezwen an pou semantik adisyonèl disparèt).
  • Nouvo kalite entèfas pou dèlko nimewo pseudo-random yo te aplike, ak algoritm adisyonèl yo te aplike pou pi bon jenerasyon nimewo o aza. Yo bay aplikasyon yo opòtinite pou yo chwazi yon algorithm pou jenere nimewo pseudo-random. Amelyore sipò pou jenere kouran objè o aza.
  • Ranfòse strik enkapsulasyon nan tout entèn JDK, ak eksepsyon de API kritik tankou sun.misc.Unsafe. Enkapsulasyon strik bloke tantativ nan kòd pou jwenn aksè nan klas entèn yo, metòd, ak jaden yo. Anvan sa, mòd enkapsulasyon strik yo te kapab enfim lè l sèvi avèk "--illegal-access=permit" opsyon a, men sa a kounye a te depreche. Aplikasyon ki bezwen aksè nan klas entèn yo, metòd, ak jaden yo ta dwe klèman defini yo lè l sèvi avèk opsyon --add-opens oswa atribi Add-Opens nan dosye manifest la.
  • Aplikasyon yo bay kapasite pou defini filtè deserialization done, ki ka sansib nan kontèks ak dinamik chwazi ki baze sou operasyon espesifik deserialization. Filtè yo espesifye yo aplikab a tout machin vityèl la (JVM-lajè), i.e. kouvri non sèlman aplikasyon an tèt li, men tou bibliyotèk twazyèm pati yo itilize nan aplikasyon an.
  • Swing te ajoute metòd javax.swing.filechooser.FileSystemView.getSystemIcon pou chaje gwo ikon pou amelyore UI sou ekran DPI segondè.
  • API java.net.DatagramSocket bay sipò pou konekte ak gwoup Multicast san yo pa bezwen yon API separe java.net.MulticastSocket.
  • Yo amelyore sèvis piblik IGV (Ideal Graph Visualizer), ki bay vizyalizasyon entèaktif reprezantasyon kòd entèmedyè nan HotSpot VM C2 JIT du.
  • Nan JavaDoc, pa analoji ak konpilatè javac la, lè yon erè se pwodiksyon, nimewo liy pwoblèm nan fichye sous la ak kote erè a kounye a endike.
  • Te ajoute pwopriyete a native.encoding, ki reflete non an nan kodaj karaktè sistèm (UTF-8, koi8-r, cp1251, elatriye).
  • Yo te ajoute koòdone java.time.InstantSource, sa ki pèmèt manipilasyon tan san referans a yon zòn lè.
  • Te ajoute API java.util.HexFormat pou konvèti nan reprezantasyon egzadesimal ak vis vèrsa.
  • Yo te ajoute yon mòd blackhole nan konpilatè a, ki enfim operasyon eliminasyon kòd mouri, ki ka itilize lè w ap fè tès pèfòmans.
  • Te ajoute opsyon "-Xlog: async" nan Runtime pou anrejistre mòso bwa nan mòd asynchrone.
  • Lè yo etabli koneksyon an sekirite, TLS 1.3 aktive pa default (anvan TLS 1.2 te itilize).
  • API Applet ki te deklare demode (java.applet.Applet*, javax.swing.JApplet), ki te itilize pou kouri aplikasyon Java nan navigatè a, te deplase nan kategori ki te planifye pou retire (pèdi enpòtans apre fen sipò). pou plugin Java pou navigatè).
  • Manadjè Sekirite Sosyal, ki depi lontan pèdi enpòtans li epi li te tounen soti yo pa reklame apre fen sipò pou Plugin navigatè a, te deplase nan kategori sa yo ki pwograme pou retire li.
  • Yo te retire mekanis RMI Aktivasyon an, ki demode, rlege nan kategori yon opsyon nan Java 8 epi li prèske pa janm itilize nan pratik modèn.
  • Yon konpilateur eksperimantal ki sipòte JIT (jis-in-time) pou konpilasyon dinamik nan kòd Java pou HotSpot JVM, osi byen ke mòd nan konpilasyon antisipatwa (AOT, davans) nan klas nan kòd machin anvan yo kòmanse machin vityèl la. , yo te retire nan SDK la. Konpilatè a te ekri an Java epi ki baze sou travay pwojè Graal la. Li te note ke antretyen du mande anpil travay, ki pa jistifye lè pa gen okenn demann nan men devlopè yo.

Sous: opennet.ru

Add nouvo kòmantè