Java SE 20 хувилбар

Зургаан сарын турш хөгжүүлсний дараа Oracle нь OpenJDK нээлттэй эхийн төслийг лавлагаа болгон ашигладаг Java SE 20 (Java Platform, Standard Edition 20) платформыг гаргасан. Зарим нэг хуучирсан функцуудыг хассанаас бусад тохиолдолд Java SE 20 нь Java платформын өмнөх хувилбаруудтай хоцрогдсон нийцтэй байдлыг хадгалж байдаг - өмнө нь бичигдсэн ихэнх Java төслүүд шинэ хувилбар дээр ажиллах үед ямар ч өөрчлөлтгүйгээр ажиллах болно. Java SE 20 (JDK, JRE болон Server JRE)-ийн суулгахад бэлэн хувилбаруудыг Linux (x86_64, AArch64), Windows (x86_64) болон macOS (x86_64, AArch64)-д зориулан бэлтгэсэн. OpenJDK төслөөс боловсруулсан Java 20 лавлагааны хэрэгжилт нь GPLv2 лицензийн дагуу бүрэн нээлттэй эх сурвалж бөгөөд GNU ClassPath-ийн онцгой тохиолдлуудад арилжааны бүтээгдэхүүнтэй динамик холболт хийх боломжийг олгодог.

Java SE 20 нь байнгын дэмжлэгийн хувилбар гэж ангилагддаг бөгөөд дараагийн хувилбараас өмнө шинэчлэлтүүд гарах болно. Урт хугацааны дэмжлэг (LTS) салбар нь 17 он хүртэл шинэчлэлтүүдийг хүлээн авах Java SE 2029 байх ёстой. Java 10-ийг гаргаснаас хойш төсөл нь шинэ хөгжүүлэлтийн процесс руу шилжсэн бөгөөд энэ нь шинэ хувилбаруудыг бий болгох богино мөчлөгийг илтгэж байгааг санаарай. Байнга шинэчлэгдэж байдаг нэг мастер салбарт шинэ функцийг боловсруулж байгаа бөгөөд үүнд аль хэдийн дууссан өөрчлөлтүүд багтсан бөгөөд шинэ хувилбаруудыг тогтворжуулахын тулд зургаан сар тутамд салбаруудыг салбарладаг.

Java 20-ийн шинэ боломжууд:

  • Scoped Values-ийн урьдчилсан дэмжлэг байдаг бөгөөд энэ нь өөрчлөгдөшгүй өгөгдлийг урсгалуудаар хуваалцах, өгөгдлийг хүүхэд хэлхээ хооронд үр дүнтэй солилцох боломжийг олгодог (утга нь өвлөгдөнө). Scoped Values ​​нь thread-local variables механизмыг солих зорилгоор боловсруулагдаж байгаа бөгөөд маш олон тооны виртуаль хэлхээг (мянган, сая сая хэлхээ) ашиглах үед илүү үр дүнтэй байдаг. Scoped Values ​​болон thread-local variables-ийн гол ялгаа нь эхнийх нь нэг удаа бичигдсэн, цаашид өөрчлөх боломжгүй бөгөөд зөвхөн урсгалын гүйцэтгэлийн хугацаанд л боломжтой хэвээр байх явдал юм. анги сервер { эцсийн статик ScopedValue CURRENT_USER = шинэ ScopedValue(); void serve(Хүсэлт хүсэлт, Хариулт хариу) { var level = (хүсэлт. isAuthorized()? АДМИН : ЗОЧИН); var user = new User(level); ScopedValue.where(CURRENT_USER, user).run(() -> Application.handle(хүсэлт, хариу)); } } класс DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); хэрэв (!user.canOpen()) шинэ InvalidUserException(); шинэ DBConnection буцаах(...); } }
  • Бичлэгийн хэв маягийн хоёр дахь урьдчилан үзэх хувилбар нэмэгдсэн бөгөөд бичлэгийн ангиудын утгыг задлан шинжлэхийн тулд Java 16-д нэвтрүүлсэн загвар тааруулах функцийг өргөтгөсөн. Жишээ нь: бичлэг Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
  • "Switch" хэллэгт хэв маягийг тааруулах дөрөв дэх урьдчилсан хэрэгжилтийг нэмсэн бөгөөд энэ нь "case" шошгон дээр яг тодорхой утгуудыг биш, харин өмнө нь төвөгтэй утгыг ашиглах шаардлагатай байсан хэд хэдэн утгыг нэг дор багтаасан уян хатан хэв маягийг ашиглах боломжийг олгосон. “хэрэв... өөрөөр” илэрхийллийн хэлхээ. static String formatterPatternSwitch(Object obj) { буцах шилжүүлэгч (obj) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("давхар %f", d); case String s -> String.format("String %s", s); анхдагч -> o.toString(); }; }
  • FFM (Гадаад функц ба санах ой) API-ийн хоёр дахь урьдчилсан хэрэгжилт нэмэгдсэн бөгөөд энэ нь гадаад номын сангаас функцуудыг дуудаж, JVM-ийн гаднах санах ойд хандах замаар Java программуудын гадаад код, өгөгдөлтэй харилцан үйлчлэлийг зохион байгуулах боломжийг олгодог.
  • Виртуал утаснуудын хоёр дахь урьдчилан үзэх хувилбар нэмэгдсэн бөгөөд энэ нь өндөр хүчин чадалтай олон урсгалтай програмуудыг бичих, хадгалахад хялбар болгодог хөнгөн урсгалууд юм.
  • Бүтэцлэгдсэн параллелизмд зориулсан хоёр дахь туршилтын API-г нэмсэн бөгөөд энэ нь өөр өөр хэлхээнд ажиллаж байгаа олон даалгавруудыг нэг блок болгон авч үзэх замаар олон урсгалтай програмуудыг хөгжүүлэхэд хялбар болгодог.
  • X86_64 болон AArch64 процессорууд дээрх векторын зааврыг ашиглан гүйцэтгэсэн вектор тооцоололд зориулсан функцээр хангагдсан, олон утгыг (SIMD) нэгэн зэрэг ашиглах боломжийг олгодог Vector API-ийн тав дахь урьдчилан харах хувилбар нэмэгдсэн. HotSpot JIT хөрвүүлэгчийн скаляр үйлдлүүдийг автоматаар векторжуулах боломжуудаас ялгаатай нь шинэ API нь параллель өгөгдөл боловсруулах векторжуулалтыг тодорхой хянах боломжийг олгодог.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх