
Axiom JDK предлагает нативную поддержку Apple Silicon M1
Июль 08, 2021
Начиная с январского релиза, Liberica JDK (с 2022 года - Axiom JDK) работает в нативном режиме на компьютерах Mac с M1 — первым процессором, разработанным компанией Apple специально для собственных устройств. Нововведение относится как к LTS (Java 8, Java 11), так и к текущей версии. Мы подробно рассмотрим эту захватывающую тему и изучим, как поддержка Apple Silicon реализована в Liberica JDK.
Apple Silicon меняет ИТ-индустрию
Что мы понимаем под этой концепцией? У нее три основных аспекта, и каждый имеет свое значение.
В первую очередь, компания Apple разработала собственные процессоры, в частности, первую SoC (system on a chip, «систему на кристалле») на базе архитекутры Arm для Macintosh, получившую название M1. Они призваны заменить процессоры Intel Core в компьютерах Apple. Во-первых, термин относится к определенным устройствам с данным процессором: Mac mini, MacBook Pro 13 и MacBook Air (конец 2020 г.), а также 24-дюймовому iMac (май 2021 г.) и пятому поколению iPad Pro. Третий аспект связан с новейшей операционной системой macOS Big Sur. В этом случае Apple Silicon следует рассматривать как комбинацию аппаратного и программного обеспечения, разработанную, чтобы обеспечить максимальную скорость и производительность.
Главная особенность ситуации — переход к архитектуре AArch64/ARM64. Это как раз по профилю БЕЛЛСОФТ, ведь мы изучаем технологию много лет (подробнее читайте в нашей статье для журнала Java Magazine за сент/окт 2018 г. на английском языке). Ключевое различие между процессорами Arm и x86 заключается в методах построения архитектур наборов команд (ISA): CISC и RISC. Первая использует сложные инструкции для кодирования более чем одной операции, вторая — инструкции фиксированной длины, каждая из которых выполняет одну операцию. Поэтому Arm оптимально подходит для мобильных устройств, а x86 — для настольных компьютеров. По крайней мере, так было в течение долгого времени.
При использовании в настольных компьютерах AArch64 демонстрирует значительные преимущества:
- благодаря более низкой TDP (расчетной тепловой мощности) на ядро, характерной для ARM, M1 отличается значительно большей энергоэффективностью;
- уже первые тесты производительности показывают, насколько новые микросхемы превосходят процессоры Intel, используемые в предыдущих компьютерах Mac.
Продемонстрируем наглядно, почему нужна JVM с нативной поддержкой Apple Silicon. Мы провели несколько тестов DaCapo с параметрами JVM по умолчанию в двух реализациях: macOS-x86_64 на Rosetta 2 и macOS-aarch64. В результате стала очевидна многократная разница в производительности.
При использовании ОС Big Sur M1 становится еще более мощным инструментом, открывая новые возможности для графического дизайна приложений.
Какие ограничения Arm могут беспокоить разработчиков Java? Пока повышенные требования к безопасности от Apple не позволяют записывать и считывать данные из одного и того же участка памяти.
Нативная Axiom на M1
Liberica JDK с поддержкой Apple Silicon — это готовый к эксплуатации бинарный дистрибутив, прошедший проверку тестовой сюитой TCK. Выберите прогрессивную среду исполнения Java от БЕЛЛСОФТ для современных развертываний и в полной мере ощутите преимущества, которые она дает пользователям macOS.
БЕЛЛСОФТ предлагает последнюю версию Liberica JDK для macOS в двух реализациях: под x86 и Arm. Если вы читаете эту статью в 2021 году, мы рекомендуем установить на устройство с M1 оба варианта среды.
-
Скачайте архив .zip и распакуйте его. Измените имя каталога верхнего уровня на jdk‑xx.xx.xx.jdk (например,
jdk-11.0.10.jdk
).wget https://download.bell-sw.com/java/11.0.11+9/bellsoft-jdk11.0.11+9-macos-amd64.zip unzip bellsoft-jdk11.0.11+9-macos-amd64.zip
-
Скачайте второй архив и распакуйте его, ничего не меняя.
wget https://download.bell-sw.com/java/11.0.11+9/bellsoft-jdk11.0.11+9-macos-aarch64.zip unzip bellsoft-jdk11.0.11+9-macos-aarch64.zip
НЕ скачивайте и не устанавливайте файлы расширения DMG, если хотите запускать обе сборки — x86 и Arm — на одной версии JDK.
С другой стороны, вы можете использовать DMG для установки двух разных версий Liberica JDK (например, 16.0.1 для Arm + 11.0.11 для x86). Подробнее эта процедура изложена в Руководстве по установке.
Почему это важно? Java™ — кросс-платформенный язык. Это означает, что все приложения на нем должны работать в любой существующей системе. Однако код больших программных пакетов часто компилируется под определенную архитектуру, например x86_64, которая до недавних пор была единственным вариантом для настольных компьютеров и ноутбуков Apple.
Помимо этого, многие разработчики Java-приложений еще не перевели свои продукты на Arm. На полноценную миграцию потребуется время — Apple ожидает, что переход займет около двух лет, в течение которых компания по-прежнему будет производить устройства на базе Intel. Более старые версии ПО, созданного для x86, пока могут работать в специальном двоичном переводчике Rosetta 2, который поставляется в комплекте с macOS Big Sur. Этот инструмент виртуализации обеспечивает одновременную работу сборок Liberica JDK под x86 и AArch64.
Поддержка функций JVM в последней версии JDK (8u292, 11.0.11, 16.0.1):
- большинство сборщиков мусора (ZGC не входит);
- JIT-компиляторы C1 и C2, необходимые для нормальной работы.
Особенности Axiom JDK
- БЕЛЛСОФТ предоставляет нотаризованную среду исполнения, позволяющую нотаризовать приложения Java или JavaFX. Чтобы узнать больше о том, как использовать Axiom JDK с инструментом Javapackager, обратитесь к нашему подробному руководству по нотаризации.
- Агент контроля надежности Serviceability Agent API в JDK 8 — удобный инструмент для мониторинга внутренних операций виртуальной машины и перспективной разработки на Java.
- Дистрибутивы Axiom JDK Full включают JavaFX для разработки сложных графических интерфейсов в комплекте с модулями OpenJFX Graphics, Media (видео и аудио), Controls и Webkit.
Следующие функции пока не поддерживаются:
- JIT-компиляторы Graal;
- компиляция перед выполнением (AOT), поскольку она полностью зависит от предыдущей функции;
- Class Data Sharing, что связано с ограничением безопасности Apple.
Перспективы
Мы тесно сотрудничаем с другими участниками сообщества OpenJDK, чтобы найти решения вышеупомянутых проблем. Одна из целей БЕЛЛСОФТ — расширить поддержку AArch64 на все проекты с открытым исходным кодом, в которых мы участвуем.
Во-первых, мы указали на изменения, необходимые для портирования WebKit в OpenJFX для его работы на устройствах на базе архитектуры Arm. Вторым важным мероприятием стал запуск Axiom Native Image Kit, что стало возможным благодаря нашему постоянному участию в проекте Graal. Получит ли компиляция AOT нативную поддержку процессоров M1, в частности, зависит от этой разработки.
Хотите быть среди первых, кто узнает о новых функциях Java на Arm? Наша команда инженеров обеспечивает выход важнейших обновлений в кратчайшие сроки после релиза OpenJDK, круглосуточно отвечает на запросы клиентов и обеспечивает поддержку при миграции на Apple Silicon. Мы понимаем, насколько важно для вас оставаться на шаг впереди конкурентов. Заполните форму ниже и бесплатно получите консультацию с одним из наших специалистов.
Заключение
Компания БЕЛЛСОФТ активно участвует в развитии OpenJDK для архитектуры Arm. Мы были одними из тех, кто первыми предложил дистрибутивы JDK с нативной поддержкой платформы Apple M1 на базе AArch64. Одновременно с этим, мы продолжаем поддерживать сборки для x86 под macOS. Наша среда исполнения Java будет гарантированно работать на любом устройстве, а ваш проект на Liberica JDK встанет в один ряд с самыми прогрессивными игроками.