Выпущена новая сборка Eclipse Temurin OpenJDK
Фонд Eclipse Foundation совместно с рабочей группой Adoptium объявили о выпуске последней версии среды выполнения Temurin Java SE.
Число предлагаемых функций для Java Development Kit (JDK) 23, следующей планируемой версии стандартного Java, возросло до дюжины. Последнее дополнение включает в себя скопированные значения, которые позволяют методу обмениваться неизменяемыми данными как внутри потока, так и с дочерними потоками.
Выходящий 17 сентября JDK 23 также будет включать в себя третью предварительную версию структурированного параллелизма, вторую предварительную версию гибких тел конструкторов, обесценивание методов доступа к памяти в sun.misc.UnSafe, восьмую инкубацию векторного API, вторую предварительную версию сборщиков потоков, вторую предварительную версию API класс-файлов и предварительную версию примитивных типов в паттернах, instanceof и switch. Среди других предлагаемых возможностей - декларации импорта модулей, комментарии к документации в формате Markdown, превращение генеративного режима сборщика мусора Z в режим по умолчанию и третий предварительный просмотр неявно объявленных классов и методов экземпляра.
Сборки раннего доступа для JDK 23 доступны по адресу jdk.java.net.
Scoped values, представленные ранее в JDK 22 и JDK 21, позволяют методу обмениваться неизменяемыми данными как со своими вызовами внутри потока, так и с дочерними потоками. По сравнению с локальными значениями в потоке, о скопированных значениях легче рассуждать, и они требуют меньше затрат пространства и времени, особенно при использовании вместе с виртуальными потоками и структурированным параллелизмом, говорится в предложении. Предварительный просмотр скопированных значений в JDK 23 вносит одно изменение по сравнению с предыдущими предварительными просмотрами: Тип параметра операции в методе ScopedValue.callWhere - это новый функциональный интерфейс, который позволяет компилятору Java определить, может ли быть выброшено проверяемое исключение. С этим изменением метод ScopeValue.getWhere больше не нужен и был удален.
В планах на JDK 23 также значится устаревание методов доступа к памяти в sun.misc.Unsafe для их удаления в будущем выпуске. Эти методы не поддерживаются и заменены стандартными API, а именно API VarHandle и API внешней функции и памяти. Разработчикам библиотек рекомендуется перейти с sun.misc.Unsafe на поддерживаемые замены, чтобы приложения могли плавно переходить на современные выпуски JDK. Цели предложения - подготовить экосистему к удалению методов доступа к памяти в sun.misc.Unsafe в будущем выпуске JDK и помочь разработчикам осознать, когда их приложения прямо или косвенно полагаются на эти методы доступа к памяти. Целью не является полное удаление sun.misc.Unsafe, поскольку небольшое количество его методов не используется для доступа к памяти. Эти методы будут устаревшими и удалены отдельно.
Структурированный параллелизм получит третье предварительное представление в JDK 23, после того как он был представлен в JDK 22 и JDK 21. Его цель - упростить параллельное программирование путем внедрения API для структурированного параллелизма, который рассматривает группы связанных задач в разных потоках как единую единицу работы, оптимизируя обработку ошибок и отмену для повышения надежности и наблюдаемости. Цели этого предложения включают продвижение стиля программирования, который может устранить общие риски, возникающие при отмене и завершении работы, такие как утечка потоков и задержки при отмене, а также улучшить наблюдаемость параллельного кода.
Гибкие тела конструкторов получат второе предварительное представление в JDK 23. Эта возможность была представлена в JDK 22 под названием statement before super(...). Это предложение позволит телу конструктора инициализировать поля в том же классе до явного вызова конструктора. Оно призвано предоставить разработчикам большую свободу в выражении поведения конструкторов, обеспечивая более естественное размещение логики, которая в настоящее время должна быть вынесена во вспомогательные статические методы, вспомогательные промежуточные конструкторы или аргументы конструктора. Эта возможность также призвана сохранить гарантию того, что конструкторы запускаются в порядке сверху вниз во время инстанцирования класса, гарантируя, что код в конструкторе подкласса не сможет вмешаться в инстанцирование суперкласса.
Неявно объявленные классы и методы экземпляра, ранее представленные в JDK 21 и JDK 22, развивают язык Java, позволяя начинающим программистам писать свои первые программы без необходимости разбираться в особенностях языка, предназначенных для больших программ. Новички могут писать упрощенные декларации для программ с одним классом, а затем, по мере роста навыков, плавно расширять программы, используя более продвинутые возможности. В JDK 23 добавлены два усовершенствования: неявно объявленные классы будут автоматически импортировать три статических метода для простого ввода/вывода текста с консоли, а также будут импортировать по требованию все публичные классы верхнего уровня и интерфейсы пакетов, экспортируемых модулем java.base.
Декларации импорта модулей, которые станут предварительной функцией в JDK 23, расширяют возможности Java, позволяя лаконично импортировать все пакеты, экспортируемые модулем. Это предложение, которое было создано в августе, упрощает повторное использование модульных библиотек, но не требует, чтобы импортируемый код находился в самом модуле. Среди целей - упростить использование модульных библиотек, позволив импортировать сразу целые модули, и избежать шума от многочисленных объявлений типа-импорта по требованию при использовании различных частей API, экспортируемых модулем. Другая цель - позволить новичкам легче использовать сторонние библиотеки и фундаментальные классы Java без необходимости изучать, где они расположены в иерархии пакетов.
Markdown documentation comments, предложение, созданное в сентябре прошлого года, позволит писать комментарии к документации JavaDoc в формате Markdown, а не только в виде смеси HTML и @тегов JavaDoc. Предложение призвано облегчить написание и чтение комментариев к документации API в виде исходного текста за счет возможности использования синтаксиса Markdown наряду с элементами HTML и тегами JavaDoc. Также предполагается расширить API Compiler Tree, чтобы другие инструменты, анализирующие комментарии к документации, могли работать с содержимым в формате Markdown. План не должен негативно повлиять на интерпретацию существующих комментариев к документации.
В JDK 23 также планируется переключить режим по умолчанию сборщика мусора Z (ZGC) на режим генерации. Поколенческий ZGC призван повысить производительность Java-приложений за счет более частого сбора молодых объектов, которые, как правило, умирают молодыми. Негенеративный режим будет устаревшим, с намерением удалить его в будущем выпуске. Цели этой функции - сигнализировать о том, что будущие разработки будут сосредоточены на поколенческом ZGC, и снизить затраты на поддержку двух разных режимов. Поддержание негенеративного ZGC замедляет разработку новых функций. ZGC была добавлена в Java в JDK 15 в сентябре 2020 года.
Векторный API, который был разработан в предыдущих версиях Java, начиная с JDK 16 и заканчивая выпущенной в прошлом месяце JDK 22, представляет API для выражения векторных вычислений, которые надежно компилируются во время выполнения в оптимальные векторные инструкции на поддерживаемых архитектурах CPU. Цели предложения включают предоставление ясного и четкого API, обеспечение надежной компиляции и производительности во время выполнения на архитектурах x64 и AArch64, обеспечение плавной деградации, платформозависимость и согласование с проектом Valhalla, который предназначен для дополнения объектной модели Java объектами значений.
Сборщики потоков, ранее представленные в JDK 22, улучшат API потоков для поддержки пользовательских промежуточных операций. Сборщики потоков позволят потоковым конвейерам преобразовывать данные таким образом, который невозможно реализовать с помощью существующих встроенных промежуточных операций. Среди целей - сделать потоковые конвейеры более гибкими и выразительными и позволить пользовательским промежуточным операциям манипулировать потоками бесконечного размера.
API для работы с файлами классов призван обеспечить API для обработки файлов классов, который соответствует формату файлов классов, определенному спецификацией виртуальной машины Java. Он также позволит компонентам JDK перейти на стандартный API и в конечном итоге удалить внутреннюю копию библиотеки ASM стороннего производителя. API для файлов классов добавит усовершенствования, включая оптимизацию класса CodeBuilder, который имеет фабричные методы для инструкций байткода, включая низкоуровневые фабрики, фабрики среднего уровня и высокоуровневые сборщики для базовых блоков.
В JDK 23 разработчики Java удалили методы среднего уровня, которые дублировали методы низкого уровня или редко использовались, а оставшиеся методы среднего уровня переименовали, чтобы улучшить удобство использования. Они также доработали модель классов ClassSignature, которая была улучшена для более точного моделирования общих сигнатур суперклассов и суперинтерфейсов. Согласно предложению OpenJDK, лежащему в основе этой функции, платформа Java должна определить и реализовать стандартный API класс-файлов, который будет развиваться вместе с форматом класс-файлов, который может меняться каждые шесть месяцев.
Кроме того, в JDK 23 планируется включить еще одну функцию предварительного просмотра - примитивные типы в шаблонах, instanceof и switch. Эта функция улучшит сопоставление шаблонов, позволив использовать шаблоны примитивных типов во всех контекстах шаблонов, а также расширит функции instanceof и switch для работы со всеми примитивными типами. Цели включают в себя предоставление простых в использовании конструкций, которые устраняют риск потери информации из-за небезопасного приведения, выравнивание типов шаблонов с instanceof, выравнивание instanceof с безопасным приведением, а также обеспечение единообразного исследования данных путем разрешения шаблонов типов для всех типов, будь то примитивные или ссылочные типы. Еще одна цель - позволить сопоставлению шаблонов использовать все шаблоны примитивных типов во вложенных контекстах и контекстах верхнего уровня.
Ряд других функций, представленных в JDK 22, могут попасть в JDK 23. К ним относятся утверждения перед super(...), которые дадут разработчикам большую свободу в выражении поведения конструктора; и шаблоны строк, которые упростят выражение строк, включающих значения, вычисляемые во время выполнения. Также возможны создание производных записей и предложение горячей кучи кода, которое сократит время выполнения приложения.
Разработчик Java компания Oracle также раскрыла планы по развитию Java в 2024 году. Oracle рассказала об усовершенствованиях, связанных с проектами OpenJDK, начиная с Amber, предназначенного для разработки небольших функций, ориентированных на производительность, и Babylon, предназначенного для расширения Java на иностранные модели программирования, такие как GPU, и Valhalla, предназначенного для дополнения объектной модели Java объектами значений, чтобы устранить давние узкие места в производительности.
Фонд Eclipse Foundation совместно с рабочей группой Adoptium объявили о выпуске последней версии среды выполнения Temurin Java SE.
Три языка программирования остаются главными для разработчиков на протяжении почти 30 лет и будут оставаться таковыми в обозримом будущем.
RustRover предоставляет встроенный набор инструментов для тестирования, запуска, отладки и анализа кода на языке Rust, а также дополнительную помощь искусственного интеллекта через плагин и подписку.
Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!
Только свежие новости программирования и технологий каждый день.
Комментарии