После шести месяцев разработки Oracle выпустила выпуск новая версия Ява SE 18 (Standard Edition), в котором в качестве эталонной реализации используется проект с открытым исходным кодом OpenJDK.
В этой новой версии Java SE 18 поставляется за исключением удаление некоторых устаревших функций, поддерживает совместимость со старыми версиями платформы Java, и большинство проектов Java, написанных ранее, будут продолжать работать без изменений при запуске с новой версией.
Основные новые возможности Java SE 18
В этом новом выпуске Java SE 18 по умолчанию используется кодировка UTF-8. API-интерфейсы Java, которые обрабатывают текстовые данные в символьной кодировке. теперь будет использовать UTF-8 по умолчанию на всех платформах, независимо от настроек системы и региональных настроек. Чтобы вернуть старое поведение, когда кодировка выбирается с учетом локали системы, можно использовать параметр «-Dfile.encoding=COMPAT».
Еще одно изменение, которое выделяется, это он переработана реализация API java.lang.reflect (Core Reflection), предназначенный для получения информации о методах, полях и конструкторах классов, а также доступа к внутренней структуре классов. API java.lang.reflect сам не изменился, но теперь реализуется с помощью идентификаторов методов, предоставляемых модулем java.lang.invoke вместо использования генераторов байт-кода. Изменение позволило унифицировать и облегчить обслуживание реализаций java.lang.reflect и java.lang.invoke.
В дополнение к этому упоминается также, что предлагается третья предварительная реализация Vector API, который предоставляет функции для векторных вычислений, которые выполняются с помощью векторных инструкций процессоров x86_64 и AArch64 и позволяют применять операции одновременно к нескольким значениям (SIMD). В отличие от возможностей компилятора HotSpot JIT для автоматической векторизации скалярных операций, новый API позволяет явно управлять векторизацией для параллельной обработки данных.
Также подчеркивается, что добавлен интерфейс SPI (интерфейс поставщика услуг) для разрешения имен хостов и IP-адресов, что позволяет использовать альтернативные преобразователи в java.net.InetAddress, не привязанные к драйверам, предоставляемым операционной системой.
С другой стороны, было предложено вторая предварительная реализация API сторонних функций и памяти, с помощью которого приложения могут взаимодействовать с кодом и данными вне среды выполнения Java. Новый API позволяет эффективно вызывать функции, отличные от JVM y доступ к памяти который не управляется JVM. Например, вы можете вызывать функции из внешних общих библиотек и получать доступ к данным процесса без использования JNI.
Добавлен вторая экспериментальная реализация сопоставления с образцом в выражениях выключатель, что позволяет использовать гибкие шаблоны вместо точных значений в тегах case, охватывающих сразу несколько значений, что ранее требовало громоздких строк выражений if...else.
В пакет включено com.sun.net.httpserver, который включает утилиту jwebserver и API библиотеки с реализацией с простого http сервера для обслуживания статического содержимого (контроллеры, подобные CGI и сервлетам, не поддерживаются). Встроенный http-сервер не оптимизирован для рабочих нагрузок и не поддерживает управление доступом или аутентификацию, так как он предназначен в первую очередь для использования в процессе разработки прототипов, отладки и тестирования проектов.
Из других изменений которые выделяются:
- JavaDoc поддерживает тег "@фрагмент» для встраивания рабочих примеров и фрагментов кода в документацию API, к которой можно получить доступ с помощью инструментов проверки, подсветки синтаксиса и интеграции с IDE.
- Устарело и будет удалено в будущем выпуске, механизм завершения, а также связанные методы, такие как Object.finalize(), Enum.finalize(), Runtime.runFinalization() и System.runFinalization().
- сборщики мусора ZGC (сборщик мусора Z), SerialGC и ParallelGC они поддерживают дедупликацию строк.
Ява SE 18 классифицируется как регулярный выпуск поддержки, с обновлениями, которые будут выпущены перед следующей версией. Веткой долгосрочной поддержки (LTS) должна быть Java SE 17, которая будет получать обновления до 2029 года.
Важно помнить, что начиная с релиза Java 10, проект перешел на новый процесс разработки, а это означает более короткий цикл формирования нового релиза. Новая функциональность сейчас разрабатывается в постоянно обновляемой основной ветке, которая включает в себя уже завершенные изменения и из которой ответвления разветвляются каждые шесть месяцев для стабилизации новых выпусков.
Получить Java SE 18
Для тех, кто заинтересован в возможности протестировать этот новый выпуск, знайте, что сборки готовы для Linux (x86_64, AArch64), Windows (x86_64) и macOS (x86_64, AArch64) и могут быть получены по ссылке ниже.