Hoʻokuʻu ʻia ʻo Java SE 18

Ma hope o ʻeono mahina o ka hoʻomohala ʻana, ua hoʻokuʻu ʻo Oracle iā Java SE 18 (Java Platform, Standard Edition 18), e hoʻohana ana i ka papahana OpenJDK open-source ma ke ʻano he hoʻokō kuhikuhi. Me ka wehe ʻana i kekahi mau hiʻohiʻona kahiko, mālama ʻo Java SE 18 i ka hoʻohālikelike hope me nā hoʻokuʻu mua ʻana o ka platform Java - ʻo ka hapa nui o nā papahana Java i kākau mua ʻia e hana me ka ʻole o nā loli ke holo ʻia ma lalo o ka mana hou. Hoʻomākaukau ʻia nā kūkulu kūkulu ʻana o Java SE 18 (JDK, JRE a me Server JRE) no Linux (x86_64, AArch64), Windows (x86_64) a me macOS (x86_64, AArch64). Hoʻomohala ʻia e ka papahana OpenJDK, ʻo ka Java 18 reference hoʻokō i wehe piha ʻia ma lalo o ka laikini GPLv2, me nā ʻokoʻa GNU ClassPath e ʻae ana i ka pilina ikaika me nā huahana kalepa.

Ua helu ʻia ʻo Java SE 18 ma ke ʻano he hoʻokuʻu kākoʻo maʻamau a e hoʻomau i ka loaʻa ʻana o nā mea hou a hiki i ka hoʻokuʻu hou ʻana. Pono ka lālā Long Term Support (LTS) ʻo Java SE 17, e hoʻomau i ka loaʻa ʻana o nā mea hou a hiki i 2029. E hoʻomanaʻo mākou iā ʻoe e hoʻomaka ana me ka hoʻokuʻu ʻana o Java 10, ua hoʻololi ka papahana i kahi kaʻina hana hou, e hōʻike ana i kahi pōkole pōkole no ka hoʻokumu ʻana i nā hoʻokuʻu hou. Hoʻomohala ʻia nā hana hou i loko o kahi lālā kumu i hoʻonui mau ʻia, aia nā hoʻololi i hana ʻia a hoʻololi ʻia nā lālā i kēlā me kēia ʻeono mahina e hoʻopaʻa i nā hoʻokuʻu hou.

Aia nā hiʻohiʻona hou ma Java 18:

  • По умолчанию задействована кодировка 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: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka