Java SE 17 idasilẹ

Lẹhin oṣu mẹfa ti idagbasoke, Oracle ti tu Java SE 17 (Java Platform, Standard Edition 17) Syeed, eyiti o nlo iṣẹ orisun ṣiṣi OpenJDK gẹgẹbi imuse itọkasi. Yatọ si yiyọkuro diẹ ninu awọn ẹya ti a ti sọ tẹlẹ, Java SE 17 n ṣetọju ibaramu sẹhin pẹlu awọn idasilẹ iṣaaju ti pẹpẹ Java — awọn iṣẹ akanṣe Java ti a kọ tẹlẹ yoo tun ṣiṣẹ laisi iyipada nigbati o ba ṣiṣẹ labẹ ẹya tuntun. Awọn ipilẹ fifi sori ẹrọ ti Java SE 17 (JDK, JRE, ati Server JRE) ti pese sile fun Linux (x86_64, AArch64), Windows (x86_64), ati macOS (x86_64, AArch64). Ti dagbasoke nipasẹ iṣẹ akanṣe OpenJDK, imuse itọkasi Java 17 jẹ orisun ṣiṣi ni kikun labẹ iwe-aṣẹ GPLv2 pẹlu awọn imukuro GNU ClassPath lati gba ọna asopọ agbara si awọn ọja iṣowo.

Java SE 17 jẹ ipin bi itusilẹ Atilẹyin Igba pipẹ (LTS), eyiti yoo tẹsiwaju lati gba awọn imudojuiwọn titi di ọdun 2029. Awọn imudojuiwọn fun itusilẹ pataki pataki Java 16 ti dawọ duro. Ẹka LTS ti tẹlẹ ti Java 11 yoo ni atilẹyin titi di ọdun 2026. Itusilẹ LTS ti nbọ ti ṣe eto fun Oṣu Kẹsan 2024. Jẹ ki a leti pe bẹrẹ pẹlu itusilẹ ti Java 10, iṣẹ akanṣe naa yipada si ilana idagbasoke tuntun kan, ti o tumọ si ọna kukuru fun dida awọn idasilẹ tuntun. Iṣẹ ṣiṣe tuntun ti ni idagbasoke ni ẹka titunto si imudojuiwọn nigbagbogbo, eyiti o pẹlu awọn ayipada ti a ti ṣetan ati lati eyiti awọn ẹka ti wa ni ẹka ni gbogbo oṣu mẹfa lati mu awọn idasilẹ titun duro.

Awọn ẹya tuntun ni Java 17 pẹlu:

  • Imuse idanwo ti ibaamu ilana ni awọn ikosile “yipada” ni a dabaa, eyiti ngbanilaaye lilo kii ṣe awọn iye deede ni awọn aami “irú”, ṣugbọn awọn awoṣe rọ ti o bo lẹsẹsẹ awọn iye ni ẹẹkan, fun eyiti o jẹ dandan lati lo ni iṣaaju. awọn ẹwọn ti awọn ikosile "ti o ba ... miiran". Ni afikun, “yipada” ni agbara lati mu awọn iye NULL mu. Nkan o = 123L; Okun kika = yipada (o) {case Integer i -> String.format ("int%d", i); irú Long l -> String.format ("gun% d", l); irú Double d -> String.format ("ė% f", d); irú Okun s -> String.format ("Okun %s", s); aiyipada -> o.toString (); };
  • Atilẹyin iduroṣinṣin fun awọn kilasi edidi ati awọn atọkun, eyiti ko ṣee lo nipasẹ awọn kilasi miiran ati awọn atọkun lati jogun, faagun, tabi bori imuse naa. Awọn kilasi ti o ni edidi tun pese ọna asọye diẹ sii lati ni ihamọ lilo ti superkilasi ju awọn iyipada iraye si, da lori ṣiṣe atokọ ni gbangba awọn kilasi ipin ti o gba laaye fun itẹsiwaju. package com.example.geometry; Kilasi edidi ti gbogbo eniyan Apẹrẹ apẹrẹ awọn iyọọda com.apẹẹrẹ.polar.Circle, com.apẹẹrẹ.quad.Mẹgun, com.example.quad.simple.Square {…}
  • Awotẹlẹ keji ti Vector API ni a dabaa, eyiti o pese awọn iṣẹ fun awọn iṣiro fekito ti a ṣe ni lilo awọn ilana fekito lori x86_64 ati awọn ilana AArch64 ati gba awọn iṣẹ laaye lati lo ni nigbakannaa si awọn iye pupọ (SIMD). Ko awọn agbara ti a pese ni HotSpot JIT alakojo fun auto-vectorization ti scalar mosi, titun API mu ki o ṣee ṣe lati ṣakoso awọn taara vectorization fun ni afiwe data processing.
  • Ṣafikun awotẹlẹ ti Iṣẹ Ajeji & Iranti API, eyiti ngbanilaaye awọn ohun elo lati ṣe ajọṣepọ pẹlu koodu ati data ni ita akoko asiko Java. API tuntun gba ọ laaye lati pe awọn iṣẹ ti kii ṣe JVM daradara ati wọle si iranti ti kii ṣe iṣakoso JVM. Fun apẹẹrẹ, o le pe awọn iṣẹ lati awọn ile-ikawe pinpin ita ati wọle si data ilana laisi lilo JNI.
  • Enjini Rendering macOS ti o ṣe agbara Java 2D API, eyiti o mu agbara Swing API, ti ni atunṣe lati lo API awọn eya aworan. Syeed macOS tẹsiwaju lati lo OpenGL nipasẹ aiyipada, ati muuṣiṣẹ atilẹyin Irin nilo eto “-Dsun.java2d.metal=otitọ” ati pe o kere ju ṣiṣiṣẹ macOS 10.14.x.
  • Ṣe afikun ibudo kan fun pẹpẹ macOS/AArch64 (awọn kọnputa Apple ti o da lori awọn eerun Apple M1 tuntun). Ẹya pataki ti ibudo naa jẹ atilẹyin fun ẹrọ aabo iranti W^X (Kọ XOR Execute), ninu eyiti awọn oju-iwe iranti ko le wọle si ni nigbakannaa fun kikọ ati ipaniyan. (koodu le ṣee ṣe nikan lẹhin kikọ ti wa ni alaabo, ati kikọ si oju-iwe iranti jẹ ṣee ṣe nikan lẹhin ipaniyan ti wa ni alaabo).
  • Pada si lilo awọn atumọ lilefp nikan fun awọn ikosile aaye lilefoofo. Atilẹyin fun awọn atunmọ “aiyipada”, ti o wa lati itusilẹ ti Java 1.2, ti dawọ duro, pẹlu awọn simplifications fun ṣiṣẹ lori awọn eto pẹlu awọn coprocessors x87 math ti atijọ (lẹhin dide ti awọn ilana SSE2, iwulo fun awọn atunmọ afikun ti sọnu).
  • Awọn oriṣi tuntun ti awọn atọkun si awọn olupilẹṣẹ nọmba pseudorandom ti ni imuse, ati awọn alugoridimu afikun ti ni imuse fun iran ti o dara julọ ti awọn nọmba ID. Awọn ohun elo ni a fun ni aye lati yan algorithm kan fun ṣiṣẹda awọn nọmba pseudorandom. Imudara atilẹyin fun ṣiṣẹda awọn ṣiṣan ohun airotẹlẹ.
  • Ti fi agbara mu ifasilẹ ti o muna ti gbogbo awọn inu JDK, pẹlu ayafi awọn API to ṣe pataki gẹgẹbi sun.misc.Unsafe. Ifipamọ to muna ṣe idiwọ awọn igbiyanju lati koodu lati wọle si awọn kilasi inu, awọn ọna, ati awọn aaye. Ni iṣaaju, ipo fifipamu to muna le jẹ alaabo nipa lilo aṣayan "--illegal-access=permit", ṣugbọn eyi ti jẹ idilọwọ. Awọn ohun elo ti o nilo iraye si awọn kilasi inu, awọn ọna, ati awọn aaye yẹ ki o ṣalaye wọn ni gbangba nipa lilo aṣayan --add-opens tabi ẹya Fikun-Ṣi ni faili ifihan.
  • Awọn ohun elo ni a fun ni agbara lati setumo awọn asẹ deserialization data, eyiti o le jẹ ifarabalẹ ọrọ-ọrọ ati ni agbara ti a yan ti o da lori awọn iṣẹ isọdọkan pato. Awọn asẹ pàtó kan wulo fun gbogbo ẹrọ foju (JVM-jakejado), i.e. bo kii ṣe ohun elo funrararẹ, ṣugbọn tun awọn ile-ikawe ẹnikẹta ti a lo ninu ohun elo naa.
  • Swing ti ṣafikun ọna javax.swing.filechooser.FileSystemView.getSystemIcon lati kojọpọ awọn aami nla lati mu UI pọ si lori awọn iboju DPI giga.
  • Java.net.DatagramSocket API n pese atilẹyin fun sisopọ si awọn ẹgbẹ Multicast laisi iwulo fun Java.net.MulticastSocket API lọtọ.
  • IwUlO IGV (Ideal Graph Visualizer) ti ni ilọsiwaju, n pese iworan ibaraenisepo ti aṣoju koodu agbedemeji ni akopọ HotSpot VM C2 JIT.
  • Ni JavaDoc, nipasẹ afiwe pẹlu olupilẹṣẹ javac, nigbati aṣiṣe kan ba jade, nọmba ti laini iṣoro ninu faili orisun ati ipo aṣiṣe naa ni itọkasi bayi.
  • Ṣe afikun ohun-ini native.encoding, ti n ṣe afihan orukọ ti fifi koodu ohun kikọ silẹ (UTF-8, koi8-r, cp1251, ati bẹbẹ lọ).
  • A ti ṣafikun wiwo java.time.InstantSource, ngbanilaaye ifọwọyi akoko laisi itọkasi agbegbe aago kan.
  • Ṣafikun java.util.HexFormat API fun iyipada si aṣoju hexadecimal ati idakeji.
  • A ti ṣafikun ipo blackhole si alakojọ, eyiti o mu awọn iṣẹ imukuro koodu ku kuro, eyiti o le ṣee lo nigbati o ba nṣe awọn idanwo iṣẹ.
  • Ṣafikun “-Xlog:async” aṣayan si Akoko ṣiṣe lati ṣe igbasilẹ awọn igbasilẹ ni ipo asynchronous.
  • Nigbati o ba n ṣeto awọn asopọ to ni aabo, TLS 1.3 ti ṣiṣẹ nipasẹ aiyipada (TLS 1.2 ti lo tẹlẹ).
  • Applet API ti a ti sọ tẹlẹ (java.applet.Applet *, javax.swing.JApplet), eyiti a lo lati ṣiṣe awọn ohun elo Java ninu ẹrọ aṣawakiri, ti gbe lọ si ẹka ti slated fun yiyọ kuro (ibaramu ti o padanu lẹhin opin atilẹyin. fun ohun itanna Java fun awọn aṣawakiri).
  • Oluṣakoso Aabo, eyiti o ti padanu ibaramu rẹ tipẹtipẹ ti o tan-an lati jẹ aibikita lẹhin opin atilẹyin fun ohun itanna ẹrọ aṣawakiri, ti gbe lọ si ẹka ti awọn ti a ṣeto fun yiyọ kuro.
  • A ti yọ ẹrọ imuṣiṣẹ RMI kuro, eyiti o jẹ ti igba atijọ, ti sọ silẹ si ẹya aṣayan ni Java 8 ati pe o fẹrẹ jẹ pe ko lo ni iṣe ode oni.
  • Olupilẹṣẹ esiperimenta ti o ṣe atilẹyin JIT (o kan-ni-akoko) fun akopọ agbara ti koodu Java fun HotSpot JVM, bakanna bi ipo akojọpọ ifojusọna (AOT, ṣaaju-akoko) ti awọn kilasi sinu koodu ẹrọ ṣaaju bẹrẹ ẹrọ foju. , ti yọkuro lati SDK. A ti kọ olupilẹṣẹ ni Java ati da lori iṣẹ ti iṣẹ akanṣe Graal. O ṣe akiyesi pe itọju alakojọ nilo iṣẹ pupọ, eyiti ko ṣe idalare nigbati ko si ibeere lati ọdọ awọn olupilẹṣẹ.

orisun: opennet.ru

Fi ọrọìwòye kun