[[_improve_openjdk_on_freebsd]] === Улучшение OpenJDK в FreeBSD (Improve OpenJDK on FreeBSD) Ссылки: + link:https://freebsdfoundation.org/project/improving-openjdk-on-freebsd/[Описание проекта] URL: https://freebsdfoundation.org/project/improving-openjdk-on-freebsd/[] + link:https://github.com/freebsd/openjdk[Репозиторий проекта] URL: https://github.com/freebsd/openjdk[] Контакт: + Harald Eilertsen + Список рассылки FreeBSD по Java Цель этого проекта — улучшить поддержку OpenJDK для FreeBSD/amd64 и FreeBSD/arm64. Java — важная среда выполнения для многих высокопроизводительных критически важных корпоративных систем. Обеспечение корректной и эффективной работы приложений на базе Java на FreeBSD важно для того, чтобы FreeBSD продолжала оставаться жизнеспособной и привлекательной платформой для предприятий, а также для бизнеса и организаций любого размера. В этом квартале были достигнуты следующие результаты/вехи: * link:https://reviews.freebsd.org/D53326[Выпущен порт] для OpenJDK 25, позже link:https://reviews.freebsd.org/D53975[обновлен до OpenJDK 25.0.1]. Спасибо Грегу Льюису (Greg Lewis) и Курту Миллеру (Kurt Miller) за помощь. * Добавлены link:https://kodeknekkeriet.net/en/blog/introducing-flavors-in-openjdk-freebsd/[FLAVORS `headless` и `jre`] в порт OpenJDK 25. Это позволяет собирать и устанавливать только версию JDK без графического интерфейса (headless) или только среду выполнения Java (Java Runtime Environment, без компилятора или инструментов разработчика). Также возможно комбинировать их для установки только варианта `headless-jre`. Это полезно в серверных средах или других средах с ограниченными ресурсами, где полный JDK и инструменты не нужны. Планируется распространить эти FLAVORS и на остальные порты OpenJDK. * Отправлено link:https://bugs.openjdk.org/browse/JDK-8371637[исправление в вышестоящий проект (upstream)], которое исправляет недопустимое выравнивание памяти в системах, использующих `jemalloc` или другие аллокаторы, которые не используют link:https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2293.htm[строгую интерпретацию выравнивания] требований стандарта C к выравниванию. Это вызывало проблемы при выделении небольших сегментов памяти вне кучи (off-heap) с использованием API `java.lang.foreign.Arena` на FreeBSD. Это исправление будет включено в OpenJDK 26. * Помечены как устаревшие порты OpenJDK, link:https://reviews.freebsd.org/D54176[больше не поддерживаемые] вышестоящим проектом. Порты будут объявлены устаревшими и удалены в течение первой половины 2026 года, после чего останутся только версии LTS и последние поддерживаемые порты. Другие примечания: * Потратил некоторое время на изучение link:https://github.com/battleblow/jdk25u/pull/4[истории системного вызова `getrlimitusage(2)`], обнаружив, что он доступен начиная с версии 14.2, несмотря на то, что страница Справочника утверждает, что он впервые появился в версии 15. Смотрите также link:https://reviews.freebsd.org/D53320[соответствующую рецензию от emaste]. Это было важно, потому что link:https://www.freebsd.org/status/report-2025-07-2025-09/#_improve_openjdk_on_freebsd[улучшения производительности из предыдущего квартала] полагаются на этот системный вызов. Знание того, что он доступен для всех текущих поддерживаемых версий FreeBSD, означает, что нам не нужно оставлять код для возврата к менее эффективным способам получения той же информации. * Обновления, внесённые в реализацию отладочного средства Hotspot Serviceability Agent для Mac OS X, привели к неработоспособности реализации для BSD. По историческим соображениям эти реализации используют одни и те же исходные файлы и каталоги, несмотря на несколько разные реализации. Начата link:https://bugs.openjdk.org/browse/JDK-8374372[работа] по перемещению кода OS X в отдельную реализацию, чтобы мы могли работать над реализацией для BSD, не мешая друг другу. * Возобновлена работа по изменению способа начальной загрузки сборок OpenJDK в системе портов. Эта работа снова стала более актуальной, поскольку объявление неподдерживаемых портов устаревшими нарушает предыдущее предположение о том, что для сборки текущей версии OpenJDK можно было полагаться на предыдущую версию. Новый механизм начальной загрузки должен быть внедрён до фактического удаления существующих портов. * В начале этого квартала я потерял доступ к своей тестовой системе на Aarch64, поэтому не мог тестировать на этой архитектуре так хорошо, как хотелось бы. Эта ситуация теперь исправлена, и я нахожусь в процессе настройки новой системы для сборки и тестирования. Спонсор: Фонд FreeBSD // // The FreeBSD Russian Documentation Project // // Original EN revision (26.12.2025): 41e2d6fc2aa5a79979577136d0f791097331a105 //