Mwepụta Java SE 18

Mgbe ọnwa isii nke mmepe gachara, Oracle wepụtara Java SE 18 (Java Platform, Standard Edition 18), nke na-eji mmemme isi mmalite OpenJDK dị ka mmejuputa nrụtụ aka ya. Ewezuga mwepụ nke ụfọdụ njirimara anaghị akwụ ụgwọ, Java SE 18 na-akwado ndakọrịta azụ na mwepụta ndị gara aga nke ikpo okwu Java - ọrụ Java edeburu na mbụ ga-arụ ọrụ na-enweghị mgbanwe mgbe ọ na-agba ọsọ n'okpuru ụdị ọhụrụ. Njikere maka ịwụnye Java SE 18 (JDK, JRE na Server JRE) dị njikere maka Linux (x86_64, AArch64), Windows (x86_64) na macOS (x86_64, AArch64). Emepụtara site na ọrụ OpenJDK, mmejuputa ntụaka Java 18 bụ isi mmalite mepere emepe n'okpuru ikikere GPLv2, yana ndị GNU ClassPath na-enye ohere ijikọ ike na ngwaahịa azụmahịa.

Java SE 18 bụ nkewa dị ka ntọhapụ nkwado izugbe ga-aga n'ihu na-enweta mmelite ruo mgbe ntọhapụ na-esote. Alaka Nkwado Ogologo Ogologo (LTS) kwesịrị ịbụ Java SE 17, nke ga-aga n'ihu na-enweta mmelite ruo 2029. Ka anyị chetara gị na malite na ntọhapụ nke Java 10, ọrụ ahụ gbanwere na usoro mmepe ọhụrụ, na-egosi usoro dị mkpirikpi maka ịmepụta mwepụta ọhụrụ. A na-emepụta ọrụ ọhụrụ ugbu a n'otu alaka ụlọ ọrụ na-emelite mgbe niile, nke gụnyere mgbanwe ndị emebere na nke a na-esi na ya na-esi na alaka ụlọ ọrụ na-arụ ọrụ kwa ọnwa isii iji kwadoo mwepụta ọhụrụ.

Ihe ọhụrụ dị na Java 18 gụnyere:

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

isi: opennet.ru

Tinye a comment