Java SE 25 LTS ба OpenJDK 25 хувилбар

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

Java SE 25 нь 2033 он хүртэл (ерөнхийдөө 2030 оны 17-р сар хүртэл боломжтой) шинэчлэлтүүдтэй, өргөтгөсөн дэмжлэгийн хувилбар юм. Java SE 21 ба 2029 нь урт хугацааны дэмжлэгийн (LTS) салбар болгон дэмжигдсээр байх бөгөөд шинэчлэлтүүд 2031, 2026 он хүртэл үргэлжилнэ (ерөнхийдөө 2028, 8 он хүртэл). Java SE 11 болон 2030 LTS салбаруудын өргөтгөсөн дэмжлэг 2032, XNUMX он хүртэл үргэлжилнэ.

Java SE-д санал болгож буй 25 шинэ боломжуудын дотор (1, 2, 3, 4):

  • Туршилтын StableValue API-г JVM-д өөрчлөгдөшгүй өгөгдөл агуулсан объектуудтай ажиллахад зориулж нэмсэн. Ийм объектуудад "эцсийн" түлхүүр үг бүхий талбаруудын гүйцэтгэлийн оновчлолыг ашигладаг. StableValue API нь тогтмол утгуудын үүсгэлтийг эхлүүлэхээс нь салгаж, утгыг зөвхөн нэг удаа эхлүүлэх боломжийг баталгаажуулж, програмыг эхлүүлэх хугацааг багасгаж, өмнө нь зөвхөн JDK-дотоод кодонд ашиглагдаж байсан тогтмол эвхдэг оновчлолыг хэрэглэгчийн кодонд ашиглах боломжийг олгодог. class Application { // Өмнө нь: // статик эцсийн UserService USERS = new UserService(); // Одоо: статик эцсийн StableValue USERS = StableValue.of(); нийтийн статик UserService users() { буцаана USERS.orElseSet(UserService::new); } }
  • PEM (Pivacy-Enhanced Mail) форматыг ашиглан криптограф түлхүүр, гэрчилгээ, гэрчилгээг хүчингүй болгох жагсаалт бүхий объектуудыг кодлох, тайлах туршилтын API нэмсэн.
  • Хамрах хүрээг хамарсан утгуудын дэмжлэг нэмэгдсэн бөгөөд энэ нь хэлхээнүүдийн хооронд өөрчлөгдөшгүй өгөгдлийг хуваалцах, хүүхдийн хэлхээ хооронд үр дүнтэй өгөгдөл солилцох боломжийг олгодог (утга нь өвлөгдөнө). Хамрах хүрээний утгууд нь урсгалын локал хувьсагчдыг орлуулах зориулалттай бөгөөд маш олон тооны виртуаль хэлхээг (мянган эсвэл сая хэлхээ) ашиглах үед илүү үр дүнтэй байдаг. Хамрах хүрээний утгууд ба thread-локал хувьсагчдын гол ялгаа нь тэдгээрийг нэг удаа бичдэг, өөрчлөх боломжгүй бөгөөд зөвхөн урсгалын гүйцэтгэлийн хугацаанд л боломжтой хэвээр байх явдал юм.
  • Нууц түлхүүр (жишээ нь, нууц үг) болон дурын өгөгдлийн багц дээр үндэслэн шаардлагатай урттай нэмэлт түлхүүрүүдийг үүсгэх боломжийг олгодог криптографийн түлхүүр гарган авах функцийг (KDFs) ашиглах API-г нэмсэн.
  • 32 битийн x86 системийг дэмжих код болон бүтээх скриптүүдийг устгасан. 32 битийн x86 системүүдийн дэмжлэгийг хассанаар JDK бүтээх, турших дэд бүтцийг хялбарчилж, 32 битийн x86 системд нөөц зохицуулагч үүсгэхгүйгээр платформд хамаарах онцлогуудыг хэрэгжүүлэх боломжтой болсон.
  • Өгөгдсөн модулийн экспортолсон бүх багцыг импортлохын тулд нэг "импортын модуль M" мэдэгдлийг ашиглах боломжийг нэмсэн. Энэхүү өөрчлөлт нь модульчлагдсан номын сангуудын дахин ашиглалтыг ихээхэн хялбарчилж, номын сан, ангиудыг багцын шатлал дахь байрлалыг заахгүйгээр оруулах боломжийг олгодог. Жишээлбэл, "импортын модуль java.base" гэж зааж өгснөөр өмнө нь тус тусын лавлагаа шаардлагатай байсан java.base модульд агуулагдах бүх 54 багцыг импортлох болно ("import java.io.*", "import java.util.*," гэх мэт).
  • Жижиг програмуудыг сурах, хөгжүүлэхэд хэрэгтэй байж болох авсаархан програмын форматлах аргыг санал болгож байна. Компакт формат нь шаардлагагүй ангиудыг тодорхойлох хэрэгцээг арилгаж, стандарт API-г автоматаар импортлож, хялбаршуулсан оролт/гаралтын аргуудаар хангадаг. Жишээлбэл, "Сайн уу, Дэлхий!" програмыг дараах байдлаар багасгаж болно: void main() { IO.println("Сайн уу, Дэлхий!"); }
  • Үүсмэл анги үүсгэгч дотроос эх анги үүсгэгчийг тодорхой дуудахын тулд super(...) руу залгахаас өмнө тухайн илэрхийллүүд нь бүтээгчийн үүсгэсэн жишээнд хамаарахгүй бол илэрхийлэлийг бүтээгчид ашиглахыг зөвшөөрдөг. class Outer { void hello() { System.out.println("Сайн уу"); } анги Өвөр { Өвөр() { сайн уу(); супер(); } } }
  • Shenandoah хог цуглуулагчийн хувьд үүсгүүртэй хог цуглуулагч горим нэмэгдсэн бөгөөд энэ нь хуучин болон саяхан бий болсон объектуудыг тусад нь боловсруулдаг бөгөөд богино хугацааны объектуудыг цуглуулах үр ашгийг дээшлүүлэх болно. Энэхүү шинэ горим нь илүү урьдчилан таамаглах боломжтой нэвтрүүлэх чадвар, ачааллын хэлбэлзлийг тэсвэрлэх чадвар, хог цуглуулах явцад санах ойн зарцуулалтыг бууруулдаг. Shenandoah төлөвлөгч нь Java програмын гүйцэтгэлтэй зэрэгцэн илүү олон ажлыг гүйцэтгэх замаар хог цуглуулах үеийн зогсолтыг багасгах зорилготой юм.
  • Урьдчилан ангиллыг ачаалах, холбох кэш үүсгэх ажлыг хялбаршуулж, аль хэдийн ачаалагдсан, холбогдсон ангиудыг ашиглан HotSpot JVM эхлүүлэхийг хурдасгасан. Эхлэх үед үйл ажиллагааг бүртгэх, кэш үүсгэх тусдаа үйлдлүүд шаардлагагүй болсон; нэг тушаал хангалттай: java -XX:AOTCacheOutput=app.aot -cp app.jar com.example.App …
  • HotSpot Java VM-г эхлүүлэх үед өмнөх програмыг эхлүүлэх явцад олж авсан аргын гүйцэтгэлийн профайлыг ашиглах чадварыг хэрэгжүүлсэн. Энэхүү өөрчлөлт нь JIT хөрвүүлэгчид статистикийн хуримтлалыг алгасаж, профайлыг үүсгэхийг хүлээхгүйгээр шууд эх кодыг үүсгэж эхлэх боломжийг олгодог.
  • HotSpot JVM нь 64 битийн систем дээрх хэмжээ нь 96-аас 64 бит (12-аас 8 байт) болж буурсан авсаархан объектын толгойн хэсгийг дэмждэг. Толгойн хэмжээг багасгах нь овоолгын хэмжээг багасгаж, кэшийн үр ашгийг сайжруулдаг.
  • Vector API-ийн туршилтын хэрэгжилтийг санал болгож байна. Энэ нь x86_64 болон AArch64 процессорын векторын зааварчилгааг ашиглан гүйцэтгэсэн вектор тооцоололд зориулсан функцуудыг хангаж, олон утгууд (SIMD) дээр нэгэн зэрэг ажиллах боломжийг олгодог. HotSpot JIT хөрвүүлэгчийн скаляр үйлдлийн автомат векторчлалаас ялгаатай нь шинэ API нь параллель өгөгдөл боловсруулах векторжуулалтыг тодорхой хянах боломжийг олгодог.
  • Янз бүрийн урсгал дээр ажиллаж байгаа олон даалгавруудыг нэг нэгж болгон авч үзэх замаар олон урсгалтай програмуудыг хөгжүүлэхэд хялбаршуулсан Structured Concurrency API-ийн тав дахь ноорог туршилтанд зориулж гаргалаа.
  • Загвар тааруулах хөдөлгүүр нь бүх төрлийн загвар, instanceof оператор болон шилжүүлэгч блокуудад анхдагч төрлүүдийг (int, байт, тэмдэгт болон бусад объектын бус үндсэн төрлүүд) ашиглах боломжийг олгохын тулд функцийн гурав дахь төслийг танилцуулж байна. switch (x.getStatus()) { case 0 -> "за"; тохиолдол 1 -> "анхааруулах"; тохиолдол 2 -> "алдаа"; case int i -> "үл мэдэгдэх төлөв:" + i; } if (i instanceof byte b) { … b … }
  • JDK Flight Recorder (JFR) нь платформ дээрх CPU нөөцийн хэрэглээг илүү нарийвчлалтай хянах туршилтын профайлын дэмжлэгийг нэмдэг. LinuxТөрөл бүрийн бүтцийн гүйцэтгэлийн хугацааны талаарх мэдээллийг өнгөт FlameGraph диаграмм ашиглан тодорхой дүрслэн харуулж болно.
  • Дуудлагын стекийг зөвхөн аюулгүй цэгүүдээр дамжих замаар Java урсгалын стекийг асинхрон түүвэрлэх үед JDK Flight Recorder (JFR)-ийн тогтвортой байдлыг сайжруулсан.
  • JDK Flight Recorder (JFR) нь мөшгөх, цаг хугацааг тогтоох шинэ аргуудаар шинэчлэгдсэн. Энэ нь тодорхой аргуудын дуудлагын стекийг хянах, гүйцэтгэх хугацаа, дуудлагын тоо зэрэг хэмжигдэхүүнийг хамарсан аргын дуудлагын статистикийг бүртгэхийг дэмждэг.

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

DDoS хамгаалалт, VPS VDS сервер бүхий сайтуудад найдвартай хостинг худалдаж аваарай 🔥 DDoS хамгаалалттай, VPS VDS сервертэй найдвартай вэбсайт хостинг худалдаж аваарай | ProHoster