openjdk.ruOpenJDK на русском

JEP 175: PowerPC/AIX Port

Порт на PowerPC/AIX

ОтветственныйVolker Simonis
ТипFeature
ОбластьImplementation
СтатусClosed / Delivered
Выпуск8u20
Обсуждениеppc dash aix dash port dash dev at openjdk dot java dot net
ТрудоёмкостьL
ДлительностьM
РецензентыAlan Bateman, Vladimir Kozlov
ОдобренMikael Vidstedt
Создан2013/01/11 20:00
Обновлён2017/08/17 16:22
Задача8046165

Аннотация

Добавить Linux/PowerPC64 и AIX/PowerPC64 в число поддерживаемых платформ OpenJDK.

Мотивация

  • Расширить набор платформ, поддерживаемых исходным кодом JDK, платформами Linux/PowerPC64 и AIX/PowerPC64
  • Провести рефакторинг и разбить исходный код HotSpot на модули, чтобы упростить будущие порты
  • Развивать сотрудничество между разработчиками реализаций Java в сообществе OpenJDK

Описание

PowerPC/AIX Porting Project перенёс исходный код JDK на две новые платформы: Linux/PowerPC64 и AIX/PowerPC64. Для новых платформ реализованы интерпретатор C++ (его также использует порт Zero) и JIT-компилятор C2 Server. Обратите внимание, что эти два новых порта — на самом деле бэкпорты коммерческих реализаций Java от IBM и SAP, поэтому их код можно считать стабильным и готовым к промышленной эксплуатации.

Предмет этого JEP — не сам перенос, который в основном завершён, а интеграция портов в основные репозитории OpenJDK.

Общий план интеграции мог бы выглядеть так:

  • Первым шагом была бы интеграция изменений HotSpot:

    Сейчас у нас около 80 наборов изменений (changesets) поверх репозитория HotSpot. Для интеграции наших изменений в дерево HotSpot разумно было бы подготовить несколько более крупных наборов изменений (т. е. 20–30), которые можно рецензировать и вносить по одному. Большинство этих «крупных» изменений вообще не затронут текущие платформы, потому что содержат только код, относящийся к ppc64/AIX, в новых платформенно-зависимых файлах и подкаталогах.

  • Вторым шагом были бы изменения в библиотеках классов:

    Когда виртуальная машина HotSpot будет успешно собираться на новых платформах, можно будет начать интеграцию изменений в библиотеках классов. По сравнению с изменениями HotSpot их будет меньше и они будут проще, а кроме того, они гораздо меньше зависят друг от друга, поэтому рецензировать их должно быть проще, и этот процесс легче распараллелить (например, изменения AWT не зависят от изменений NIO и могут выполняться в любом порядке). Мы ожидаем, что общая сложность изменений в библиотеках классов будет ниже, чем у порта на MacOS (например, нам не нужен полностью новый графический стек).

Oracle создаст промежуточный репозиторий, который будет принадлежать проекту PowerPC/AIX и будет содержать исправления, прошедшие рецензирование и одобренные. Проект PowerPC/AIX отвечает за то, чтобы лес репозиториев был в актуальном состоянии относительно последних изменений из основного репозитория. Oracle создаст для промежуточного репозитория закрытый экземпляр hudson, который будет собирать и тестировать изменения. Oracle будет периодически тестировать изменения в промежуточном репозитории и при необходимости передавать замечания проекту PowerPC/AIX. Oracle, SAP и IBM совместно определят, когда промежуточный лес будет готов к интеграции. Когда этот момент наступит, все изменения из промежуточного репозитория будут интегрированы в основной репозиторий одним пакетом.

Более подробное описание этого плана будет доступно в документе PowerPC/AIX Port Integration Plan в вики-разделе PowerPC/AIX Port OpenJDK.

Тестирование

IBM и SAP регулярно собирают и тестируют порты на целевых платформах, а также на платформах, поддерживаемых сейчас в JDK 8, чтобы не допустить регрессий, которые нарушили бы работу существующих платформ.

IBM и SAP обязуются полностью поддерживать (т. е. регулярно обновлять, улучшать и тестировать) код для новых платформ, добавленных в рамках этой работы.

Риски и допущения

Мы не ожидаем серьёзных рисков, поскольку весь код, который мы предлагаем интегрировать, перенесён из коммерческих реализаций Java от IBM и SAP, которые годами работают в промышленной эксплуатации как на новых предлагаемых платформах, так и на платформах, уже поддерживаемых исходным кодом OpenJDK.

Зависимости

Фактически единственные зависимости — это ресурсы и обязательства со стороны Oracle. С учётом текущих недостатков инфраструктуры нам действительно нужна поддержка коллег из Oracle во всём: от создания отчётов об ошибках и рецензирования изменений до внутреннего тестирования в Oracle (JPRT) и окончательного внесения изменений. Поэтому мы считаем, что этому JEP нужно финансирование не только от IBM и SAP, но и от Oracle, в частности, чтобы инженеры Oracle из групп HotSpot и Core Libraries могли помогать в этой работе.

Влияние

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

Большая часть изменений общего кода приходится на лес HotSpot, поскольку нужно было:

  • поддержать в интерпретаторе C++ возможности, которые там ещё не были реализованы (method handles, профилирование, compressed oops и т. д.);
  • поддержать слабую модель памяти архитектуры PowerPC;
  • поддержать требования нового процессора в серверном компиляторе C2 (соглашения о вызовах, упорядочивание операций с памятью, особенности ассемблера), а также
  • поддержать новые возможности, специфичные для ОС AIX (например, управление памятью)

Общие изменения в лесу JDK, то есть в библиотеках классов, в основном связаны с адаптацией под AIX в различных нативных реализациях библиотек классов.

Конечно, есть и небольшие изменения в системе сборки, но они не должны доставить особых проблем.