Улучшение OpenJDK в FreeBSD (Improve OpenJDK on FreeBSD)

Контакт:
Harald Eilertsen <haraldei@FreeBSD.org>
Список рассылки FreeBSD по Java <freebsd-java@lists.freebsd.org>

Цель этого проекта — улучшить поддержку OpenJDK для FreeBSD/amd64 и FreeBSD/arm64.

Java — важная среда выполнения для многих высокопроизводительных критически важных корпоративных систем. Обеспечение корректной и эффективной работы приложений на базе Java на FreeBSD важно для того, чтобы FreeBSD продолжала оставаться жизнеспособной и привлекательной платформой для предприятий, а также для бизнеса и организаций любого размера.

В этом квартале были достигнуты следующие результаты/вехи:

  • Выпущен порт для OpenJDK 25, позже обновлен до OpenJDK 25.0.1. Спасибо Грегу Льюису (Greg Lewis) и Курту Миллеру (Kurt Miller) за помощь.

  • Добавлены FLAVORS headless и jre в порт OpenJDK 25. Это позволяет собирать и устанавливать только версию JDK без графического интерфейса (headless) или только среду выполнения Java (Java Runtime Environment, без компилятора или инструментов разработчика). Также возможно комбинировать их для установки только варианта headless-jre. Это полезно в серверных средах или других средах с ограниченными ресурсами, где полный JDK и инструменты не нужны. Планируется распространить эти FLAVORS и на остальные порты OpenJDK.

  • Отправлено исправление в вышестоящий проект (upstream), которое исправляет недопустимое выравнивание памяти в системах, использующих jemalloc или другие аллокаторы, которые не используют строгую интерпретацию выравнивания требований стандарта C к выравниванию. Это вызывало проблемы при выделении небольших сегментов памяти вне кучи (off-heap) с использованием API java.lang.foreign.Arena на FreeBSD. Это исправление будет включено в OpenJDK 26.

  • Помечены как устаревшие порты OpenJDK, больше не поддерживаемые вышестоящим проектом. Порты будут объявлены устаревшими и удалены в течение первой половины 2026 года, после чего останутся только версии LTS и последние поддерживаемые порты.

Другие примечания:

  • Потратил некоторое время на изучение истории системного вызова getrlimitusage(2), обнаружив, что он доступен начиная с версии 14.2, несмотря на то, что страница Справочника утверждает, что он впервые появился в версии 15. Смотрите также соответствующую рецензию от emaste. Это было важно, потому что улучшения производительности из предыдущего квартала полагаются на этот системный вызов. Знание того, что он доступен для всех текущих поддерживаемых версий FreeBSD, означает, что нам не нужно оставлять код для возврата к менее эффективным способам получения той же информации.

  • Обновления, внесённые в реализацию отладочного средства Hotspot Serviceability Agent для Mac OS X, привели к неработоспособности реализации для BSD. По историческим соображениям эти реализации используют одни и те же исходные файлы и каталоги, несмотря на несколько разные реализации. Начата работа по перемещению кода OS X в отдельную реализацию, чтобы мы могли работать над реализацией для BSD, не мешая друг другу.

  • Возобновлена работа по изменению способа начальной загрузки сборок OpenJDK в системе портов. Эта работа снова стала более актуальной, поскольку объявление неподдерживаемых портов устаревшими нарушает предыдущее предположение о том, что для сборки текущей версии OpenJDK можно было полагаться на предыдущую версию. Новый механизм начальной загрузки должен быть внедрён до фактического удаления существующих портов.

  • В начале этого квартала я потерял доступ к своей тестовой системе на Aarch64, поэтому не мог тестировать на этой архитектуре так хорошо, как хотелось бы. Эта ситуация теперь исправлена, и я нахожусь в процессе настройки новой системы для сборки и тестирования.

Спонсор: Фонд FreeBSD


Последнее изменение: 24 февраля 2026 г. от Vladlen Popolitov