Главная » Хабрахабр » [Перевод] Так много JDK… Какой использовать и чем это грозит?

[Перевод] Так много JDK… Какой использовать и чем это грозит?

К нам, как к вендорам фреймворка CUBA, обращаются с этим вопросом с завидной регулярностью. От переводчика: Решение перевести эту статью пришло не само собой — скорее это вынужденная мера :). Однако, эта тема еще не закрыта, и мы продолжаем внимательно следить за развитием событий, и, кто знает, возможно нам придется добавлять стенды для еще каких сборок JDK уже в следующем году... Безусловно, для нас это тоже крайне важная тема, и в ответ на последние изменения мы подняли тестовые стенды как на Oracle JDK, так и на OpenJDK — эта мера на данный момент ограждает наших пользователей от непредвиденных лицензионных трат.

Статья под катом подкупает тем, что она лаконично описывает проблематику и наиболее популярные JDK с их особенностями.

Это изменение также повлекло за собой перемены в плане поддержки версий, которая теперь будет осуществляться не для всех, а только для LTS версий. Недавно Oracle заявили, что эволюция Java координально изменится благодаря переходу на "Release Train" — новому подходу к выкатыванию версий. Сообщество Java чемпионов разъяснило вводимые новшества, детальный документ доступен в сети.

Будут ли они бесплатными или коммерческими? Даже с учетом этих новостей остаются вопросы: какие билды JDK сейчас доступны? Фактически, есть только один основной исходный код JDK. Прежде чем ответить на этот вопрос, важно понять, какие требования предъявляются к JDK как продукту. Кто угодно может использовать исходный код для построения собственной сборки и размещения ее где-то в сети. Он находится здесь. Сертификация осуществляется Java Community Process (JCP), который предоставляет Technology Compatibility Kit (TCK). Однако есть отдельная процедура сертификации, которая должна быть пройдена, чтобы сборка JDK считалась валидной. Если какая-либо организация создает новую сборку OpenJDK, которая отвечает TCK, она считается "совместимой с Java SE".

Например, сборки AdoptOpenJDK, которые проходят TCK, не являются "Java SE", но являются "Java SE compliant". Имейте в виду, что сборка не может называться "Java SE", если компания, осуществившая сборку, не приобрела коммерческую лицензию от Oracle. Короче говоря, каждый вендор, взявший исходники OpenJDK и собравший версию, порождает еще одну отдельную сборку JDK. Также нужно учитывать, что сертификация сейчас основывается “на честном слове” — результаты не отсылаются в JCP/Oracle для верификации и являются закрытой информацией.

OpenJDKbilds

Итак, без лишних слов, рекомендуем ознакомиться со следующими готовыми к использованию JDK:

Oracle JDK

Это коммерческая версия с платной поддержкой. Это главный поставщик Java 11 (релиз уже состоялся). Использовать ее в продакшене, не заплатив Oracle, нельзя (так что для многих не интересующихся вопросами лицензирования это ловушка). Ее можно бесплатно скачивать и использовать только непосредственно для разработки. В отличие от того, как было раньше, сборка Oracle JDK ничем не “лучше” OpenJDK (по стольку по скольку оба находятся на одном и том же уровне security patch level). Oracle планирует предоставлять платную поддержку до 2026 года и далее.

OpenJDK Build от Oracle

Эти версии сборки доступны только в течение 6 месяцев после релиза. Существует бесплатные не-брендовые версии OpenJDK, распространяемые по лицензии GPL с Classpath Extension (подходит для коммерческого применения). 0. Для Java 11 ожидается выход версии Java 11. 0. 0 и два security -патча, 11. 0. 1 и 11. Чтобы продолжать использование версии OpenJDK и его патчей от Oracle, необходимо перейти на Java 12 не позднее, чем через месяц после запуска. 2. Обратите внимание, что порядок обеспечения security-патчей отличается от порядка предоставления поддержки, которая включает в себя оплату обработки отчетов об ошибках.

AdoptOpenJDK

Версии Java 11 будут выпускаться в течение 4 лет через год после следующего основного релиза. Это тоже бесплатные и не-брендовые сборки OpenJDK, распространяемые по лицензии GPL с Classpath Extension, только в отличие от билдов OpenJDK от Oracle эти версии сборки будут действовать в течение более длительного времени для основных версий, таких как Java 11. Пока другие команды создают и публикуют исправления безопасности для исходного репозитория OpenJDK, они будут выпускать билды. AdoptOpenJDK ориентируется на сообщество. И IBM, и Red Hat обозначили, что намерены выпускать такие патчи.

AdoptOpenJDK OpenJ9

OpenJ9 изначально была JVM от IBM, но сейчас OpenJ9 имеет открытый исходный код. Вдобавок к стандартным сборкам OpenJDK AdoptOpenJDK будет также предоставлять версии с OpenJ9 вместо HotSpot. И, кстати говоря, эта опция наиболее достойная изучения.

Red Hat OpenJDK

Red Hat очень неплохо справляются с исправлениями безопасности в OpenJDK. Red Hat предоставляет версии сборки OpenJDK на Red Hat Enterprise Linux (RHEL), являющемся коммерческим продуктом с платной поддержкой. Сборка от Red Hat более интегрирована с операционной системой, так что ее нельзя назвать типичным билдом OpenJDK (отсутствует JDK конечного пользователя). В прошлом Red Hat отвечали за security-апдейты Java 6 и 7.

Azul Zulu

К тому же, хотя Azul предоставляет некоторые элементы Zulu бесплатно в рамках "Zulu Community", они не несут никаких особых обязательств по доступности этих сборок. Zulu — брендированная версия OpenJDK с платной коммерческой поддержкой. У Azul довольно масштабный план по поддержке Zulu, включающий поддержку Java 9, 13 и 15, в отличие от других поставщиков.

Amazon Corretto

Corretto — бесплатная версия сборки OpenJDK с долгосрочной поддержкой, проходящая TCK. Это новейшая из всех описанных опций. Amazon создаст собственные патчи и запустят Corretto на AWS, так что он будет использоваться довольно активно (и уже добавлен в некоторые продукты). Она распространяется по стандартным условиям лицензирования всех версий OpenJDK: GPL + CE. Поддержка Java 8 планируется по меньшей мере до июня 2023.

Например, нельзя добавить новый public-метод в API или новые языковые ресурсы. В процессе преобразования исходного OpenJDK в различные версии сборки производитель может добавлять различные утилиты или брендировать продукт, если это не препятствует сертификации (TCK).

Однако эти версии сборки не так часто используются, поэтому они не упомянуты в этой статье. Есть и другие реализации JDK, такие как IBM и SAPMachine. Более подробную информацию можно найти здесь и здесь.

Заключение

Чем действительно стоит обеспокоиться — это использование одной из проприетарных JDK и бесплатной версии сборки от Oracle, во избежание головной боли в будущем. Лично я особой проблемы в наличие нескольких версий JDK не вижу, так как всем им нужно проходить сертификацию (TCK). они постоянно обновляются (в течение 6 месяцев после релиза), и вы можете использовать JDK в продакшене без особых проблем. Если вы используете только базовые функции (например, ваш бизнес не особо зависит от секьюрити-апдейтов), вам больше подойдут сборки OpenJDK от Oracle (НЕ OracleJDK), т.к. Если в вашем бизнесе задействованы облачные сервисы (или с AWS), хорошим выбором будет AWS Corretto, который уже пригоден к использованию на Amazon Linux и Docker.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Ускоряем неускоряемое или знакомимся с SIMD

Есть класс задач, которые нельзя ускорить за счёт оптимизации алгоритмов, а ускорить надо. В этой практически тупиковой ситуации к нам на помощь приходят разработчики процессоров, которые сделали команды, позволяющие выполнять операции на большим количеством данных за одну операцию. В случае ...

Kонсенсус в Exonum: как он работает

ExonumTM — это наш открытый фреймворк для создания приватных блокчейнов. Сегодня мы расскажем, как работает его алгоритм консенсуса. Изображение: Bitfury Зачем нужны алгоритмы консенсуса Прежде чем перейти к рассказу о том, как устроен алгоритм консенсуса ExonumTM, поговорим о том, зачем ...