Java SE 18 шығарылымы

Алты айлық әзірлеуден кейін Oracle анықтамалық іске асыру ретінде OpenJDK ашық бастапқы жобасын пайдаланатын Java SE 18 (Java Platform, Standard Edition 18) платформасын шығарды. Кейбір ескірген мүмкіндіктердің жойылуын қоспағанда, Java SE 18 Java платформасының алдыңғы шығарылымдарымен кері үйлесімділікті сақтайды — бұрын жазылған Java жобаларының көпшілігі жаңа нұсқада іске қосылған кезде өзгеріссіз жұмыс істейді. Java SE 18 (JDK, JRE және Server JRE) орнатуға дайын жинақтары Linux (x86_64, AArch64), Windows (x86_64) және macOS (x86_64, AArch64) үшін дайындалған. OpenJDK жобасы әзірлеген Java 18 анықтамалық іске асыру коммерциялық өнімдермен динамикалық байланыстыруға мүмкіндік беру үшін GNU ClassPath ерекшеліктері бар GPLv2 лицензиясы бойынша толық ашық көзі болып табылады.

Java SE 18 келесі шығарылымға дейін шығарылатын жаңартулары бар тұрақты қолдау шығарылымы ретінде жіктеледі. Ұзақ мерзімді қолдау (LTS) тармағы Java SE 17 болуы керек, ол 2029 жылға дейін жаңартуларды алады. Естеріңізге сала кетейік, Java 10 шығарылымынан бастап жоба жаңа әзірлеу процесіне көшті, бұл жаңа шығарылымдарды қалыптастырудың қысқа циклін білдіреді. Жаңа функционалдылық қазірдің өзінде аяқталған өзгерістерді қамтитын және жаңа шығарылымдарды тұрақтандыру үшін жарты жылда бір рет тармақталып тұратын бір негізгі бөлімде жаңа функционалдылық әзірленуде.

Java 18-дағы жаңа мүмкіндіктер мыналарды қамтиды:

  • Әдепкі кодтау - UTF-8. Таңбаларды кодтауға негізделген мәтіндік деректерді өңдейтін Java API интерфейстері енді жүйе параметрлері мен тіл параметрлеріне қарамастан барлық платформаларда әдепкі бойынша UTF-8 пайдаланады. Жүйе тілінің негізінде кодтау таңдалған ескі әрекетке оралу үшін "-Dfile.encoding=COMPAT" опциясын пайдалануға болады.
  • Бума com.sun.net.httpserver бумасын қамтиды, ол jwebserver утилитасын және статикалық мазмұнға қызмет көрсетуге арналған қарапайым http серверін іске асырумен кітапхана API қосады (CGI және сервлет тәрізді өңдеушілерге қолдау көрсетілмейді). Кірістірілген HTTP сервері жұмыс жүктемелері үшін оңтайландырылмаған және қол жеткізуді басқару мен аутентификацияны қолдамайды, өйткені ол ең алдымен жобаларды прототиптеу, жөндеу және тестілеу үшін әзірлеу процесінде пайдалануға бағытталған.
  • JavaDoc жұмыс мысалдары мен код үзінділерін API құжаттамасына ендіру үшін "@snippet" тегін қолдауды қамтамасыз етеді, мұнда тексеру құралдарын, синтаксисті бөлектеуді және IDE интеграциясын пайдалануға болады.
  • Әдістер, өрістер және класс конструкторлары туралы ақпарат алуға, сондай-ақ сыныптардың ішкі құрылымына қол жеткізуге арналған java.lang.reflect API (Core Reflection) жүзеге асырылуы қайта жасалды. java.lang.reflect API өзі өзгеріссіз қалады, бірақ қазір байт-код генераторларын пайдаланудың орнына java.lang.invoke модулі қамтамасыз ететін әдіс дескрипторлары арқылы жүзеге асырылады. Өзгеріс java.lang.reflect және java.lang.invoke іске асыруларын біріздендіруге және оларға техникалық қызмет көрсетуді жеңілдетуге мүмкіндік берді.
  • x86_64 және AArch64 процессорларында векторлық нұсқауларды қолдану арқылы орындалатын және бірнеше мәндерге (SIMD) бір уақытта операцияларды қолдануға мүмкіндік беретін векторлық есептеулерге арналған функцияларды қамтамасыз ететін Vector API үшінші алдын ала қарауы ұсынылды. Скалярлық операцияларды автовекторлау үшін HotSpot JIT компиляторында берілген мүмкіндіктерден айырмашылығы, жаңа API деректерді параллель өңдеу үшін векторизацияны нақты басқаруға мүмкіндік береді.
  • Хост атаулары мен IP мекенжайларын шешуге арналған SPI интерфейсі (қызмет провайдерінің интерфейсі) қосылды, бұл амалдық жүйе ұсынатын өңдеушілермен байланысы жоқ java.net.InetAddress ішінде балама шешушілерді пайдалануға мүмкіндік береді.
  • Қолданбаларға Java орындалу уақытынан тыс кодпен және деректермен өзара әрекеттесуге мүмкіндік беретін шетелдік функция және жад API екінші алдын ала қарауы ұсынылады. Жаңа API JVM емес функцияларды тиімді шақыруға және JVM басқармайтын жадқа қол жеткізуге мүмкіндік береді. Мысалы, сыртқы ортақ кітапханалардан функцияларды шақыруға және JNI қолданбастан процесс деректеріне қол жеткізуге болады.
  • «Ауыстыру» өрнектеріндегі үлгіні сәйкестендірудің екінші эксперименттік іске асырылуы қосылды, бұл бұрын пайдалану қажет болған мәндер қатарын бірден қамтитын нақты мәндерден гөрі «регистрлік» белгілерде икемді үлгілерді пайдалануға мүмкіндік береді. «егер... басқаша» өрнектерінің күрделі тізбектері. Объект o = 123L; Жол пішімделген = ауыстырғыш (o) { 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(); };
  • Аяқтау механизмі және оның Object.finalize(), Enum.finalize(), Runtime.runFinalization() және System.runFinalization() сияқты байланысты әдістері ескірген және болашақ шығарылымда өшіріледі.
  • ZGC (Z Garbage Collector), SerialGC және ParallelGC қоқыс жинағыштары жолды қайталауды қолдайды.

Ақпарат көзі: opennet.ru

пікір қалдыру