[[_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 <haraldei@FreeBSD.org> +
Список рассылки FreeBSD по Java <freebsd-java@lists.freebsd.org>

Цель этого проекта — улучшить поддержку 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
//
