Java SE 18 versiyasi

Olti oylik rivojlanishdan so'ng Oracle Java SE 18 (Java Platformasi, Standard Edition 18) ni chiqardi, u OpenJDK ochiq manba loyihasini mos yozuvlar dasturi sifatida ishlatadi. Ba'zi eskirgan xususiyatlarni olib tashlash bundan mustasno, Java SE 18 Java platformasining oldingi versiyalari bilan orqaga qarab muvofiqlikni saqlab qoladi - ilgari yozilgan Java loyihalarining ko'pchiligi yangi versiyada ishlayotganda o'zgartirishlarsiz ishlaydi. Java SE 18 (JDK, JRE va Server JRE) ning oΚ»rnatiladigan tuzilmalari Linux (x86_64, AArch64), Windows (x86_64) va macOS (x86_64, AArch64) uchun tayyorlangan. OpenJDK loyihasi tomonidan ishlab chiqilgan Java 18 mos yozuvlar ilovasi GPLv2 litsenziyasi ostida to'liq ochiq, GNU ClassPath istisnolari bilan tijorat mahsulotlariga dinamik ulanish imkonini beradi.

Java SE 18 muntazam qoΚ»llab-quvvatlash versiyasi sifatida tasniflanadi va keyingi nashrga qadar yangilanishlarni olishda davom etadi. Uzoq muddatli qo'llab-quvvatlash (LTS) filiali Java SE 17 bo'lishi kerak, u 2029 yilgacha yangilanishlarni olishda davom etadi. Eslatib o'tamiz, Java 10-ning chiqarilishidan boshlab, loyiha yangi ishlab chiqish jarayoniga o'tdi, bu yangi nashrlarni shakllantirish uchun qisqaroq tsiklni nazarda tutadi. Doimiy yangilanib turadigan bitta asosiy bo'limda yangi funksiyalar ishlab chiqilgan bo'lib, u tayyor o'zgarishlarni o'z ichiga oladi va yangi nashrlarni barqarorlashtirish uchun har olti oyda filiallar bo'linadi.

Java 18-dagi yangi xususiyatlar quyidagilarni o'z ichiga oladi:

  • Standart kodlash - UTF-8. Belgilarni kodlash asosida matn ma'lumotlarini qayta ishlaydigan Java API'lari endi tizim sozlamalari va mahalliy sozlamalardan qat'i nazar, barcha platformalarda sukut bo'yicha UTF-8 dan foydalanadi. Tizim tili asosida kodlash tanlangan eski xatti-harakatga qaytish uchun siz "-Dfile.encoding=COMPAT" opsiyasidan foydalanishingiz mumkin.
  • Paket com.sun.net.httpserver to'plamini o'z ichiga oladi, u jwebserver yordam dasturini va statik tarkibga xizmat ko'rsatish uchun oddiy http-serverni amalga oshiradigan kutubxona API-ni o'z ichiga oladi (CGI va servletga o'xshash ishlov beruvchilar qo'llab-quvvatlanmaydi). O'rnatilgan HTTP serveri ish yuklari uchun optimallashtirilmagan va kirishni boshqarish va autentifikatsiyani qo'llab-quvvatlamaydi, chunki u birinchi navbatda loyihalarni prototiplash, disk raskadrovka va sinovdan o'tkazish uchun ishlab chiqish jarayonida foydalanishga qaratilgan.
  • JavaDoc "@snippet" tegini qo'llab-quvvatlaydi, ish misollari va kod parchalarini API hujjatlariga joylashtirish uchun, siz tekshirish vositalaridan, sintaksisni ajratib ko'rsatishdan va IDE integratsiyasidan foydalanishingiz mumkin.
  • Usullar, maydonlar va sinf konstruktorlari haqida ma'lumot olish, shuningdek, sinflarning ichki tuzilishiga kirish uchun mo'ljallangan java.lang.reflect API (Core Reflection) ning amalga oshirilishi qayta ishlab chiqilgan. Java.lang.reflect API-ning o'zi o'zgarishsiz qolmoqda, lekin endi bayt-kod generatorlaridan foydalanish o'rniga java.lang.invoke moduli tomonidan taqdim etilgan metod tutqichlari yordamida amalga oshirilmoqda. O'zgartirish bizga java.lang.reflect va java.lang.invoke ilovalarini birlashtirish va ularga texnik xizmat ko'rsatishni soddalashtirish imkonini berdi.
  • X86_64 va AArch64 protsessorlarida vektor ko'rsatmalari yordamida bajariladigan va operatsiyalarni bir vaqtning o'zida bir nechta qiymatlarga (SIMD) qo'llash imkonini beruvchi vektorli hisoblar uchun funktsiyalarni ta'minlovchi Vektor API-ning uchinchi ko'rinishi taklif qilindi. HotSpot JIT kompilyatorida skalar operatsiyalarni avtovektorlashtirish uchun taqdim etilgan imkoniyatlardan farqli o'laroq, yangi API parallel ravishda ma'lumotlarni qayta ishlash uchun vektorizatsiyani aniq nazorat qilish imkonini beradi.
  • Xost nomlari va IP manzillarini echish uchun SPI interfeysi (xizmat ko'rsatuvchi provayder interfeysi) qo'shildi, bu sizga java.net.InetAddressda operatsion tizim tomonidan taklif qilingan ishlov beruvchilarga bog'lanmagan muqobil hal qiluvchilardan foydalanish imkonini beradi.
  • Ilovalarga Java ish vaqtidan tashqarida kod va ma'lumotlar bilan o'zaro ta'sir o'tkazish imkonini beruvchi xorijiy funksiya va xotira API ning ikkinchi ko'rinishi taqdim etiladi. Yangi API sizga JVM bo'lmagan funksiyalarga samarali qo'ng'iroq qilish va JVM tomonidan boshqarilmaydigan xotiraga kirish imkonini beradi. Masalan, JNI dan foydalanmasdan tashqi umumiy kutubxonalardan funksiyalarga qo'ng'iroq qilishingiz va jarayon ma'lumotlariga kirishingiz mumkin.
  • "O'tish" iboralarida naqshlarni moslashtirishning ikkinchi eksperimental amaliyoti qo'shildi, bu aniq qiymatlardan ko'ra "holat" yorliqlarida moslashuvchan naqshlardan foydalanishga imkon beradi, bir vaqtning o'zida ilgari foydalanish kerak bo'lgan bir qator qiymatlarni qamrab oladi. "agar ... boshqacha" iboralarining noqulay zanjirlari. Obyekt o = 123L; String formatlangan = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); };
  • Yakunlash mexanizmi va unga bog'liq bo'lgan Object.finalize(), Enum.finalize(), Runtime.runFinalization() va System.runFinalization() kabi usullar eskirgan va kelajakdagi versiyada o'chirib qo'yiladi.
  • ZGC (Z Garbage Collector), SerialGC va ParallelGC axlat yig'uvchilar qatorlarni birlashtirishni qo'llab-quvvatlaydi.

Manba: opennet.ru

a Izoh qo'shish