Java SE 18 чыгаруу

Алты айлык иштеп чыгуудан кийин Oracle Java SE 18 (Java Platform, Standard Edition 18) платформасын чыгарды, ал OpenJDK ачык булак долбоорун маалымдама ишке ашыруу катары колдонот. Кээ бир эскирген функцияларды алып салууну кошпогондо, 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 ичинде операциялык тутум сунуштаган иштетүүчүлөргө байланышпаган альтернативдик чечүүчүлөрдү колдонууга мүмкүндүк берет.
  • Тышкы функция жана эс тутум API'нин экинчи алдын ала кароосу, колдонмолорго Java иштөө убактысынан тышкары код жана маалыматтар менен иштешүүгө мүмкүндүк берет. Жаңы API сизге JVM эмес функцияларды эффективдүү чакырууга жана JVM башкарылбаган эстутумга кирүүгө мүмкүндүк берет. Мисалы, сиз тышкы жалпы китепканалардан функцияларды чакырып, JNI колдонбостон процесс маалыматтарына кире аласыз.
  • "Которуу" туюнтмаларында үлгү дал келүүнүн экинчи эксперименталдык ишке ашырылышы кошулду, бул ийкемдүү үлгүлөрдү так баалуулуктарга эмес, "капка" этикеткаларында колдонууга мүмкүндүк берет, буга чейин колдонуу зарыл болгон бир катар маанилерди камтыйт. "эгер... башка" сөз айкаштарынын түйшүктүү чынжырлары. Объект o = 123L; Стринг форматталган = 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(); };
  • Аяктоо механизми жана аны менен байланышкан Object.finalize(), Enum.finalize(), Runtime.runFinalization() жана System.runFinalization() сыяктуу ыкмалары эскирилген жана келечектеги чыгарылышта өчүрүлөт.
  • ZGC (Z Garbage Collector), SerialGC жана ParallelGC таштанды жыйноочулары саптардын кайталанышын колдойт.

Source: opennet.ru

Комментарий кошуу