Анализируем Quarkus: построение современных Java-приложений для ИТ-сред будущего

Quarkus – это мост в будущее для приложений и сервисов, написанных на Java. Если быть чуть точнее, то фреймворк Quarkus предоставляет возможность использовать написанные проекты на Java в будущем, где царят serverless, облако и Kubernetes.

Если вам надо объяснить суть Quarkus за две секунды, то это Kubernetes-нативный Java-стек. Если времени чуть больше, скажите, что это Kubernetes-нативный Java-стек, заточенный под OpenJDK HotSpot и GraalVM, собранный из лучших библиотек и стандартов Java и предназначенный для создания современных Java-приложений для контейнерно-центричного облака.

Quarkus теперь входит в состав Red Hat Runtimes и с июля 2020 года предлагается в виде стабильных версий. Этот фреймворк представляет собой патентованный открытый код и чрезвычайно прост, как по своему устройству, так и в плане внедрения, в том смысле, что он сокращает расход памяти и время загрузки приложений.

Red Hat

Об авторе:

Марк Литтл (Mark Little), вице-президент Red Hat по разработке ПО

По данным Wikipedia:  американская компания, производитель программного обеспечения на основе операционной системы Linux: Red Hat Enterprise Linux (распространяется по годовой подписке) и Fedora.

В числе услуг, оказываемых компанией, техническая поддержка, обучение системных администраторов и разработчиков, приём практических лабораторных экзаменов (таких как RHCT и RHCE). К концу 2000-х годов в компании работало более 3500 сотрудников; 27 июля 2009 года компания была включена в список S&P500.

Будучи полностековой технологией, Quarkus работает как на серверной, так и на клиентской стороне (на уровне пользовательских приложений). Это Kubernetes-нативный Java-фреймворк, созданный для виртуальных Java-машин (JVM), поэтому он предоставляет средства разработки компонентов Java-приложений, реализующих преимущества Kubernetes, системы оркестрации контейнеров с открытым кодом.

Как уже говорилось, Quarkus входит в состав Red Hat Runtimes, набора продуктов, инструментов и компонентов для разработки и сопровождения облачных приложений. Такое позиционирование Quarkus вполне логично, ведь Red Hat Runtimes – это группа технологий, объединяющая легковесные runtime-компоненты и фреймворки для построения сильно распределенных облачных архитектур, таких как микросервисы.

Главная функциональность Quarkus – это нативная компиляция и оптимизация Java-кода для контейнеров. Как следствие, Quarkus предлагает эффективную платформу для мира абстрактных вычислений на основе serverless, облака и Kubernetes.

Кроме того, Quarkus оптимизирует и некомпилируемые в нативный код Java-компоненты , а значит, помогает повысить производительность приложений, использующих OpenJDK (то есть нескомпилированный код ), который уже много лет является основным способом программирования на Java.

Минимум настройки для удобства разработчика

Чуть-чуть не дотягивая до звания plug-and-play, Quarkus тем не менее сразу готов к использованию: он сконструирован так, чтобы работать с минимальной настройкой или вообще без конфигураций. Созданный для удобства разработчика, Quarkus также предлагает функционал live coding, позволяющий мгновенно посмотреть, как работают те или иные изменения в коде и быстро устранить неполадки.

Разработчики вольны выбрать для своих приложений различные Java-фреймворки, которые могут выполняться в режиме JVM либо компилироваться и запускаться в нативном режиме. Quarkus – это мост между 25-летней историей Java и облачными средами будущего, где оркестрация контейнеров очень часто будет выполняться средствами Kubernetes.

Также не стоит забывать, что Quarkus создан на основе хорошо известных библиотек и стандартов Java, а значит отлично подходит разработчикам самой разной квалификации. Для опытных Java-разработчиков, которые используют эти библиотеки, стандарты и соответствующие методологии программирования вот уже два десятка лет, Quarkus – это то, что привычно и знакомо, это технология, которая легко осваивается и из которой можно быстро извлечь максимум пользы.

Java популярна настолько давно и сильно, что за четверть века для нее был создано огромное множество широко распространенных фреймворков и утилит. И то, что их можно использовать вместе с Quarkus, очень важно, поскольку это не только избавляет от необходимости изобретать колесо, но и позволяет разработчику применять накопленные знания и навыки при построении приложений Quarkus.

Реактивная и императивная модели программирования

Один из отцов-основателей Quarkus Джейсон Грин (Jason Greene), выдающийся инженер, который теперь занимает руководящий пост в Red Hat, как-то сказал, что цель Quarkus – сделать Java ведущей платформой для сред Kubernetes и serverless, которая одновременно предлагает разработчикам и реактивную, и императивную модель программирования, позволяя выбирать оптимальные подходы при работе с широким спектром распределенных архитектур приложений.

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

Хорошим примером здесь может служить NodeJS и использование serverless-вычислений, которые стали популярными с запуском AWS Lambda. Это вопрос наличия бизнес-логики реактивной модели, готовой к промышленному использованию. Но эта бизнес-логика может даже не храниться в памяти; вместо этого экземпляр этой бизнес-логики можно при необходимости перенести в реальную промышленную среду в масштабе реального времени.

Поскольку распространение микросервисных приложений стимулирует переход на гораздо более реактивные подходы, создатели Quarkus хотели предоставить разработчикам возможность использовать обе модели. Но не в ущерб тем, кто работает в традиционной императивной парадигме, когда она лучше отвечает требованиям решаемой задачи.

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

Quarkus вошел в состав Red Hat OpenShift 4.6, контейнерной платформы приложений с открытым кодом, и доступен всем пользователям этой платформы с ноября 2020 года.

По нашим оценкам, 20% Java-разработчиков, работающих с облачными средами, заинтересованы в использовании Quarkus, и учитывая его Kubernetes-нативность, вполне понятно желание разработчиков использовать эту технологию с самого начала.

Поэтому после появления Quarkus, Red Hat обновила свой инструментарий Migration Toolkit for Applications, который доступен уже несколько лет и, как ясно из его названия, помогает переносить самые разные приложения с различных платформ на платформы Red Hat (например, с Oracle WebLogic на Red Hat EAP). Ведь даже если эти приложения построены на основе стандартов, их перенос всегда сопровождается необходимостью определенной доработки.

Обновленный Migration Toolkit с поддержкой Quarkus позволяет разработчику получить рекомендации о том, какие изменения надо внести в приложение и как свести их к минимуму без того, чтобы полностью перерабатывать код.

Таким образом, переход на Quarkus, как правило, проходит безболезненно, всё выглядит привычно и знакомо, и очень гибко и функционально в плане повседневного использования. Red Hat активно и плодотворно взаимодействует с разработчиками, использующими Quarkus в самых разных средах, включая дата-центры, системы edge-вычислений, интернет вещей и весь спектр публичных облачных платформ.

Марк Литтл (Red Hat)
12/03.2021


Похожие статьи:

Шесть обязательных условий для защиты от надвигающихся киберугроз

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

Что такое Edge Computing и почему периферийные вычисления - это побег из облака

Подумайте об устройствах, которые следят за производственным оборудованием на заводе, или видеокамере, которая отправляет запись в реальном времени из удаленного офиса. Пока устройство одно, передавать их по сети довольно лег...

Неочевидные проблемы нехватки специалистов по облачной безопасности

Согласно отчету ESG, 53% респондентов считают, что нехватка кадров в области кибербезопасности составляет проблему для их организации. И это касается только общих специалистов, которые занимаются поддержкой и защитой традиционны...