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 в различных нативных реализациях библиотек классов.
Конечно, есть и небольшие изменения в системе сборки, но они не должны доставить особых проблем.