Как выбрать JDK
Ноябрь 24, 2023
Java развивается в рамках опенсорсного проекта OpenJDK, благодаря чему на рынке доступно много дистрибутивов JDK помимо Oracle Java. Но какой из них выбрать?
Мы подготовили обзор самых распространенных Java-рантаймов, на основании которого вы можете выбрать JDK, отвечающий вашим нуждам.
- Самосборки OpenJDK
- Сравнение Java-рантаймов
- Сравнительная таблица JDK
- Какой JDK выбрать в текущих условиях российского рынка ПО
Самосборки OpenJDK
Исходный код OpenJDK находится в открытом доступе, и все Java-вендоры используют его для компиляции бинарных файлов своих рантаймов. Но тогда возникает вопрос: а почему нельзя взять исходный код и собрать свой собственный Java-дистрибутив?
Так сделать можно, однако использование самосборок OpenJDK — не лучшая стратегия по нескольким причинам:
- Компиляция бинарных файлов занимает много времени, часы или сутки, и требует больших вычислительных мощностей. При каждом обновлении рантайма процесс придется повторять.
- Необходимо использовать комплексные сборочные системы, полностью воспроизводящие среду сборки, и обладать высокой экспертностью в данной области.
- Если вы собираете рантайм из последней мастер-ветви OpenJDK, это может привести к непредсказуемым результатам, поскольку эта ветвь нестабильна и может содержать баги.
- Старые ветви стабильны, поэтому риск поломки проекта минимален. Однако эти ветви не поддерживаются, а значит, всю ответственность за работу критичных систем на основе самосборки вы берете на себя, и при возникновении проблем невозможно будет получить помощь.
Следовательно, для экономии временных, вычислительных, и человеческих ресурсов следует брать готовые стабильные бинарные файлы от известных вендоров с подтвержденным соответствием стандартам Java SE.
Сравнение Java-рантаймов
Oracle JDK
Oracle предоставляет бесплатные JDK сборки LTS-релизов 17 и 21 для личного и коммерческого использования, а также JDK/JRE сборки Java 8 для личного использования. Кроме того, разработчики могут скачать Oracle GraalVM для JDK 17 и 21, куда входит JIT-компилятор Graal и технология для создания нативных образов (AOT-компилятор) Native Image, но бесплатные обновления Oracle GraalVM для JDK 17 будут выпускаться до 2024 года, а для JDK 21 — до 2026 года.
В связи с уходом Oracle России коммерческая поддержка ее продуктов на территории РФ недоступна.
Axiom JDK Pro
Axiom JDK Pro — дистрибутив OpenJDK, который разрабатывается и поддерживается российской командой инженеров Axiom JDK. Команда использует собственный набор тестов, подтверждающий соответствие Axiom JDK Pro стандартам Java SE, включая соответствие стандарту языка (JLS) и виртуальной машины (JVMS).
В рамках коммерческой поддержки команда предоставляет регулярные и экстренные обновления всех LTS-версий (8, 11, 17, 21), текущей номерной версии и легаси версий Java 6 и 7. Поддержка осуществляется инженерами с 25-летним опытом работы с Java в режиме 24/7.
Команда выпускает три версии Axiom JDK Pro:
- Standard: стандартный Java-дистрибутив с незначительными изменениями кодовой базы;
- Full: версия с технологией OpenJFX;
- Lite: версия, оптимизированная для облака. Благодаря бэкпортам из более новых версий JDK и лучшей компрессии модулей Axiom JDK Pro Lite позволяет уменьшить потребление памяти Java-приложениями.
Все версии доступны в формате JDK/JRE и поддерживают широкий диапазон системных конфигураций, включая российские ОС, СУБД, оборудование и облака.
Помимо Java-рантайма, команда выпускает сервер приложений Libercat (реализующий спецификации Java EE/Jakarta EE) и ряд других решений для Java-разработки, включая утилиту для создания нативных образов Axiom NIK и решение для создания микроконтейнеров Axiom Runtime Container Pro. Все продукты входят в Единый реестр российского ПО и локализованы под российский рынок:
- Клиенты получают доступ к доверенному репозиторию, содержащему проверенные коды самых популярных Java-библиотек.
- Продукты разрабатываются в соответствии с промышленным процессом разработки безопасного ПО (РБПО).
- Доступна специальная версия Java-рантайма Axiom JDK Certified, сертифицированная ФСТЭК по 4 уровню доверия (УД). Это единственная среда разработки и запуска Java-приложений, разрешенная регулятором к применению в системах с повышенными требованиями к информационной безопасности — государственных информационных системах, объектах критической информационной инфраструктуры, информационных системах персональных данных, АСУ ТП и др.
- Axiom JDK Pro поставляется с готовыми конфигурациями TLS-сертификатов Минцифры и является допустимой средой функционирования КриптоПРО JCP и КриптоПРО CSP.
Azul Zulu
Azul Zulu — соответствующие стандартам Java SE сборки OpenJDK от компании Azul. Доступны JDK/JRE билды для всех LTS-версий (8, 11, 17, 21) и текущей номерной версии для Windows, Linux и macOS. Также есть сборки с OpenJFX. Обновления выходят регулярно, в соответствии с графиком релизов OpenJDK. Компания также предоставляет обновления Java 6 и 7 в рамках коммерческой поддержки.
Azul выпускает два типа сборок: бесплатные Azul Zulu и платные Azul Platform Core и Azul Platform Prime с дополнительным функционалом и оптимизациями. При этом Azul Platform Prime основан на собственной виртуальной машине Azul.
В связи с уходом Azul из России коммерческая поддержка ее продуктов на территории России недоступна.
Red Hat OpenJDK
Red Hat выпускает соответствующие стандартам Java SE сборки Red Hat OpenJDK всех LTS-версий Java (8, 11, 17 и 21) с регулярными обновлениями. Однако билды доступны только для Windows и Red Hat Enterprise Linux (RHEL). Коммерческая поддержка тоже распространяется только на Windows и RHEL, при этом если жизненный цикл поддержки используемой версии RHEL закончится, поддержка JDK также прекратится.
В 2022 году компания ушла из России, поэтому коммерческая поддержка Red Hat OpenJDK и RHEL на территории РФ больше недоступна.
Eclipse Temurin
Eclipse Temurin (ранее AdoptOpenJDK) — это дистрибутив OpenJDK, который разрабатывается рабочей группой Adoptium Working Group под эгидой Eclipse Foundation. Проверка соответствия сборок Eclipse Temurin стандартам Java осуществляется с помощью сюиты тестов Eclipse AQAvit™, разработанной Eclipse Foundation.
Разработчики могут скачать JDK/JRE сборки всех LTS-версий и текущей номерной версии. Поддерживается широкий диапазон системных конфигураций. Обновления выпускаются ежеквартально сообществом Adoptium. Что касается дорожной карты поддержки, Adoptium заявляет, что будет выпускать обновления LTS-версий до тех пор, пока будет поддерживаться соответствующая ветвь проекта OpenJDK.
Однако Eclipse Foundation не осуществляет коммерческую поддержку Eclipse Temurin — ее можно оформить у других компаний, например, Azul или Red Hat. Но из-за санкций она также не доступна в России.
IBM Semeru Runtimes
IBM выпускает соответствующий стандартам Java SE дистрибутив OpenJDK — IBM Semeru Runtimes, в основе которого лежит виртуальная машина OpenJ9. OpenJ9 разрабатывается IBM в качестве альтернативы HotSpot, который используется в большинстве остальных Java-рантаймов, включая Oracle Java и Axiom JDK Pro. Компания выпускает сборки JDK/JRE всех LTS-версий (8, 11, 17, 21) для Linux, macOS и Windows.
В связи с уходом IBM из России коммерческая поддержка ее продуктов на территории РФ недоступна.
Сборки OpenJDK компании Microsoft
В 2021 году Microsoft выпустила собственных дистрибутив OpenJDK. Для подтверждения соответствия стандартам Java SE сборки Microsoft OpenJDK тестируются с применением сюиты Eclipse Adoptium Quality Assurance.
Компания выпускает билды JDK/JRE LTS-версий 11, 17 и 21 для Microsoft, Linux и macOS, но сборки для Java 8 отсутствуют. Бинарники могут содержать фиксы, не бэкпортированные в апстрим, поскольку Microsoft оставляет за собой право внедрять улучшения, даже если они не были приняты в основную ветвь проекта. Это может в будущем осложнить миграцию на другой дистрибутив.
Коммерческая поддержка предоставляется клиентам Microsoft Azure и распространяется только на облако Azure Cloud.
В связи с уходом Microsoft из России коммерческая поддержка ее продуктов на территории РФ недоступна.
Amazon Corretto
Amazon Corretto — соответствующий стандартам Java SE дистрибутив OpenJDK от облачного провайдера Amazon Web Services (AWS). Сборки Amazon Corretto доступны для Linux, Windows и macOS. AWS выпускает регулярные обновления для всех LTS-версий и текущего номерного релиза. Доступны отдельные пакеты с JDK и JRE и сборки с OpenJFX (но только для Corretto 8 на определенных платформах).
Что касается дополнительных улучшений, AWS разработала собственный криптопровайдер Amazon Corretto Crypto Provider (ACCP), оптимизированный для облачной платформы AWS. Он позволяет повысить производительность более старых версий Java, но поскольку он отличается от стандартных криптографических алгоритмов OpenJDK, его поведение может отличаться.
Коммерческая поддержка доступна в рамках поддержки облачных услуг AWS и распространяется только на AWS Cloud.
С 2022 года Amazon Web Services прекратила поддержку своих продуктов в России и не принимает новых пользователей.
Сравнительная таблица JDK
Ниже представлен обзор ключевых характеристик самых популярных дистрибутивов JDK.
Axiom JDK Pro | Oracle | Azul Zulu | Red Hat OpenJDK | Amazon Corretto | Eclipse Temurin | |
---|---|---|---|---|---|---|
Сборка OpenJDK | + | + | + | + | + | + |
Соответствие стандартам Java SE | + | + | + | + | + | + |
Ежеквартальные обновления безопасности | + | + | + | + | + | + |
Регистрация в Едином реестре российского ПО | + | - | - | - | - | - |
Версия, сертифицированная ФСТЭК | + | - | - | - | - | - |
Несколько версий Версии: Full с FX, Standard и Lite с оптимизированным потреблением памяти | + | - | - | - | - | - |
Разные инсталляторы и пакеты
(tar, deb, MSI, DMG, JDK/JRE) |
+ | Нет apk
Нет pkg JRE для Java 8 |
+ | Нет dmg
Нет deb Нет apk Нет rpm Нет pkg |
Нет dmg | + |
Доверенный репозиторий проверенных Java-библиотек | + | - | - | - | - | - |
Нативная поддержка Alpine Linux (musl libc) | + | - | + | - | + | + |
Java Flight Recorder и Mission Control (для Java 8) | + | + | + | + | + | + |
Поддержка Java 6&7 | + | - | + | - | - | - |
LTS (Java 8, 11, 17, 21) и не-LTS версии | + | + | + | Только LTS | Не-LTS версия только текущая номерная | + |
Контейнер с Linux, оптимизированным для Java | + | - | - | - | - | - |
GraaVM Native Image | + | + | - | + | - | - |
Сборки для широкого диапазона системных конфигураций | + | + | + | - | + | + |
Совместимость с российскими ОС и СУБД-оборудованием | + | - | - | - | - | - |
OpenJFX | + | - | + | - | Только для некоторых платформ | - |
Поддержка 32-битной архитектуры | + | + | + | + | - | ± |
Техподдержка в России | + | - | - | - | - | - |
Какой JDK выбрать в текущих условиях российского рынка ПО
Выбор JDK зависит от того, кто выбирает: индивидуальный разработчик для себя или ИТ-команда для корпоративной разработки. Соответственно, на основании вышесказанного можно дать несколько общих рекомендаций:
- Если вы используете Java, чтобы тестировать новые фичи и изучать исходники, можете воспользоваться самосборкой OpenJDK. Во всех остальных случаях собирать OpenJDK из исходного кода не рекомендуется из-за сложности процесса и нестабильности итоговых бинарных файлов. Все риски за безопасность и производительность критичных систем на основе самосборки лежат на вас.
- Если вы изучаете Java или работаете на себя, можете взять любую бесплатную сборку, соответствующую стандартам Java SE и получающую регулярные обновления безопасности.
- Если вам необходим JDK для корпоративной разработки, и ваша компания не относится к объектам КИИ или ГИС, вы можете воспользоваться любым обновляемым дистрибутивом, однако если вы выберете зарубежного вендора, ваш рантайм останется без поддержки. Это значит, что при возникновении проблем обращаться будет не к кому. Можно оставить заявку на сайте проекта OpenJDK, но не факт, что фикс появится в ближайшее время или появится вообще. Из-за санкций зарубежным поставщикам запрещено оказывать услуги в России.
- Если ваша компания ведет деятельность в области финтеха или входит в перечень объектов КИИ или ГИС, воспользоваться сборками зарубежных вендоров не получится, так как они не входят в Единый реестр российского ПО и не поддерживаются, что не соответствует нормативно-правовым требованиям и наносит серьезный ущерб безопасности ИТ-инфраструктуры. Кроме того, в соответствии с требованием законодательства необходимо полностью перевести объекты КИИ на российское ПО до 1 января 2025 года. Поэтому, если вы используете технологии, не входящие в реестр российского или евразийского ПО, необходимо мигрировать на отечественные решения в ближайшее время.
В последнем случае вам подойдет доверенный Java-рантайм Axiom JDK Pro с российской техподдержкой и локализацией под российский рынок. Он уже зарекомендовал себя в системах крупнейших российских организаций, в числе которых — Национальная система платежных карт (НСПК), оператор Платежной системы Мир и Системы быстрых платежей, дочерние предприятия Газпром, Санкт-Петербургская Международная Товарно-сырьевая Биржа (СПбМТСБ).
Свяжитесь с нами, нажав на кнопку ниже, и наши инженеры проведут митап для вашей команды, предоставят демо-версию и помогут с миграцией!
Также подписывайтесь на наш Telegram-канал, чтобы быть в курсе новостей из мира Java.