Liberica JDK предлагает нативную поддержку Apple Silicon M1

Liberica JDK предлагает нативную поддержку Apple Silicon M1


Июль 08, 2021


Начиная с январского релиза, Liberica 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. Это как раз по профилю BellSoft, ведь мы изучаем технологию много лет (подробнее читайте в нашей статье для журнала 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. В результате стала очевидна многократная разница в производительности.

alt_text

При использовании ОС Big Sur M1 становится еще более мощным инструментом, открывая новые возможности для графического дизайна приложений.

Какие ограничения Arm могут беспокоить разработчиков Java? Пока повышенные требования к безопасности от Apple не позволяют записывать и считывать данные из одного и того же участка памяти.

Нативная Liberica на M1

Liberica JDK с поддержкой Apple Silicon — это готовый к эксплуатации бинарный дистрибутив, прошедший проверку тестовой сюитой TCK. Выберите прогрессивную среду исполнения Java от BellSoft для современных развертываний и в полной мере ощутите преимущества, которые она дает пользователям macOS.

BellSoft предлагает последнюю версию Liberica JDK для macOS в двух реализациях: под x86 и Arm. Если вы читаете эту статью в 2021 году, мы рекомендуем установить на устройство с M1 оба варианта среды.

  1. Скачайте архив .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
    
  2. Скачайте второй архив и распакуйте его, ничего не меняя.

     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.

alt_text

Поддержка функций JVM в последней версии JDK (8u292, 11.0.11, 16.0.1):

  • большинство сборщиков мусора (ZGC не входит);
  • JIT-компиляторы C1 и C2, необходимые для нормальной работы.

Особенности Liberica JDK

  • BellSoft предоставляет нотаризованную среду исполнения, позволяющую нотаризовать приложения Java или JavaFX. Чтобы узнать больше о том, как использовать Liberica JDK с инструментом Javapackager, обратитесь к нашему подробному руководству по нотаризации.
  • Агент контроля надежности Serviceability Agent API в JDK 8 — удобный инструмент для мониторинга внутренних операций виртуальной машины и перспективной разработки на Java.
  • Дистрибутивы Liberica JDK Full включают JavaFX для разработки сложных графических интерфейсов в комплекте с модулями OpenJFX Graphics, Media (видео и аудио), Controls и Webkit.

Следующие функции пока не поддерживаются:

  • JIT-компиляторы Graal;
  • компиляция перед выполнением (AOT), поскольку она полностью зависит от предыдущей функции;
  • Class Data Sharing, что связано с ограничением безопасности Apple.

Перспективы

Мы тесно сотрудничаем с другими участниками сообщества OpenJDK, чтобы найти решения вышеупомянутых проблем. Одна из целей BellSoft — расширить поддержку AArch64 на все проекты с открытым исходным кодом, в которых мы участвуем.

Во-первых, мы указали на изменения, необходимые для портирования WebKit в OpenJFX для его работы на устройствах на базе архитектуры Arm. Вторым важным мероприятием стал запуск Liberica Native Image Kit, что стало возможным благодаря нашему постоянному участию в проекте Graal. Получит ли компиляция AOT нативную поддержку процессоров M1, в частности, зависит от этой разработки.

Хотите быть среди первых, кто узнает о новых функциях Java на Arm? Наша команда инженеров обеспечивает выход важнейших обновлений в кратчайшие сроки после релиза OpenJDK, круглосуточно отвечает на запросы клиентов и обеспечивает поддержку при миграции на Apple Silicon. Мы понимаем, насколько важно для вас оставаться на шаг впереди конкурентов. Заполните форму ниже и бесплатно получите консультацию с одним из наших специалистов.

Заключение

Компания BellSoft активно участвует в развитии OpenJDK для архитектуры Arm. Мы были одними из тех, кто первыми предложил дистрибутивы JDK с нативной поддержкой платформы Apple M1 на базе AArch64. Одновременно с этим, мы продолжаем поддерживать сборки для x86 под macOS. Наша среда исполнения Java будет гарантированно работать на любом устройстве, а ваш проект на Liberica JDK встанет в один ряд с самыми прогрессивными игроками.

Author image

Алексей Войтылов

BellSoft CTO

 LinkedIn

BellSoft LTD [email protected] BellSoft LTD logo Liberica Committed to Freedom 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67 BellSoft LTD 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67 BellSoft LTD 111 North Market Street, Suite 300 CA 95113 San Jose US +1 702 213-59-59