Java SE 18 saor an asgaidh

Às deidh sia mìosan de leasachadh, leig Oracle a-mach Java SE 18 (Java Platform, Standard Edition 18), a bhios a ’cleachdadh a’ phròiseact stòr fosgailte OpenJDK mar bhuileachadh iomraidh. Ach a-mhàin a bhith a’ toirt air falbh cuid de fheartan nach eil air an cleachdadh, tha Java SE 18 a’ cumail suas co-chòrdalachd air ais le fiosan a chaidh fhoillseachadh roimhe den àrd-ùrlar Java - obraichidh a’ mhòr-chuid de phròiseactan Java a chaidh a sgrìobhadh roimhe gun atharrachaidhean nuair a thèid an ruith fon dreach ùr. Tha togalaichean deiseil airson an stàladh de Java SE 18 (JDK, JRE agus Server JRE) air an ullachadh airson Linux (x86_64, AArch64), Windows (x86_64) agus macOS (x86_64, AArch64). Air a leasachadh leis a’ phròiseact OpenJDK, tha buileachadh iomraidh Java 18 gu tur fosgailte fo chead GPLv2, le eisgeachdan GNU ClassPath a’ ceadachadh ceangal fiùghantach le toraidhean malairteach.

Tha Java SE 18 air a chomharrachadh mar sgaoileadh taic cunbhalach agus cumaidh e a’ faighinn ùrachaidhean gus an ath fhoillseachadh. Bu chòir gum biodh am meur Taic Fad-ùine (LTS) Java SE 17, a chumas air adhart a’ faighinn ùrachaidhean gu 2029. Leig dhuinn do chuimhneachadh, a’ tòiseachadh le sgaoileadh Java 10, gun do thionndaidh am pròiseact gu pròiseas leasachaidh ùr, a’ ciallachadh cearcall nas giorra airson fiosan ùra a chruthachadh. Tha comas-gnìomh ùr a-nis air a leasachadh ann an aon phrìomh mheur a tha air ùrachadh gu cunbhalach, a tha a’ toirt a-steach atharrachaidhean deiseil agus às am bi meuran air an cur còmhla gach sia mìosan gus fiosan ùra a dhèanamh seasmhach.

Am measg nam feartan ùra ann an Java 18 tha:

  • По умолчанию задействована кодировка UTF-8. Java API, обрабатывающие текстовые данные с учётом кодировки символов, теперь будут по умолчанию использовать UTF-8 на всех платформах, независимо от системных настроек и выставленной локали. Для возвращения старого поведения, в котором кодировка выбирается с учётом системной локали, можно использовать параметр «-Dfile.encoding=COMPAT».
  • В состав включён пакет com.sun.net.httpserver, в которых входит утилита jwebserver и библиотечный API с реализацией простого http-сервера для отдачи статического контента (CGI и servlet-подобные обработчики не поддерживаются). Встроенный http-сервер не оптимизирован для рабочих нагрузок и не поддерживает управление доступом и аутентификацию, так как нацелен главным образом на использование в процессе разработки для создания прототипов, отладки и тестирования проектов.
  • В JavaDoc реализована поддержка тега «@snippet» для встраивания рабочих примеров и фрагментов кода в документацию на API, к которым можно применять средства для проверки корректности, подсветки синтаксиса и интеграции с IDE.
  • Переделана реализация API java.lang.reflect (Core Reflection), предназначенного для получения информации о методах, полях и контрукторах классов, а также доступа к внутренней структуре классов. Сам API java.lang.reflect остался неизменен, но теперь реализован через использование дескрипторов методов (method handles), предоставляемых модулем java.lang.invoke, вместо применения генераторов байткода. Изменение позволило унифицировать реализации java.lang.reflect и java.lang.invoke, и упростить их сопровождение.
  • Предложена третья предварительная реализация API Vector, предоставляющего функции для векторных вычислений, которые выполняются с использованием векторных инструкций процессоров x86_64 и AArch64 и позволяют одновременно применить операции сразу к нескольким значениям (SIMD). В отличие от предоставляемых в JIT-компиляторе HotSpot возможностей по автовекторизации скалярных операций, новый API даёт возможность явно управлять векторизацией для параллельной обработки данных.
  • Добавлен SPI-интерфейс (service-provider interface) для резолвинга имён хостов и IP-адресов, позволяющий задействовать в java.net.InetAddress альтернативные резолверы, не привязанные к обработчикам, предлагаемым операционной системой.
  • Предложена вторая предварительная реализация API Foreign Function & Memory, при помощи которого приложения могут взаимодействовать с кодом и данными, находящимися за пределами Java runtime. Новый API позволяет эффективно вызывать функции, выполняемые не в JVM, и обращаться к памяти, не управляемой JVM. Например, можно вызывать функции из внешних разделяемых библиотек и обращаться к данным процесса без использования JNI.
  • Добавлена вторая экспериментальная реализация сопоставления по шаблону в выражениях «switch», позволяющая в метках «case» использовать не точные значения, а гибкие шаблоны, охватывающие сразу серию значений, для которых ранее приходилось использовать громоздкие цепочки выражений «if…else». Object o = 123L; String formatted = 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: fosgailtenet.ru

Cuir beachd ann