Кваркус
Эта статья содержит контент, написанный как реклама . ( сентябрь 2021 г. ) |
Разработчик(и) | Красная шляпа |
---|---|
Первоначальный выпуск | 20 марта 2019 г [1] |
Стабильная версия | 3.13.0 [2] / 31 июля 2024 г |
Репозиторий | Репозиторий Кваркуса |
Написано в | Ява |
Платформа | Ява |
Тип | Платформа приложения |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | кваркус |
Кваркус [3] [4] [5] — это Java- фреймворк, предназначенный для развертывания в Kubernetes . Ключевыми технологическими компонентами, окружающими его, являются OpenJDK HotSpot и GraalVM . Цель Quarkus — сделать Java ведущей платформой в Kubernetes и бессерверных средах, одновременно предлагая разработчикам единую модель реактивного и императивного программирования для оптимальной работы с более широким спектром архитектур распределенных приложений.
История версий [6]
[ редактировать ]Версия | Дата | Примечания |
---|---|---|
0.12 | 20 марта 2019 г. | Первоначальный выпуск |
1.0 | ноябрь 2019 г. | |
2.0 | июнь 2021 г. | |
3.0.1 | март 2023 г. | |
3.2.6 | октябрь 2023 г. | ЛТС (3.2) |
2.16.12.Final | 17 октября 2023 г. | |
3.2.7.Final | 19 октября 2023 г. | |
3.5.0 | 25 октября 2023 г. | |
3.2.9.Final | 17 ноября 2023 г. | |
3.6.0 | 29 ноября 2023 г. | |
3.2.10.Final | январь 2024 г. | |
3.7.1 | январь 2024 г. | |
3.8.1 | февраль 2024 г. | ЛТС (3,8) |
3.10.0 | апрель 2024 г. | |
3.13.0 | июль 2024 г. |
Quarkus предлагает быстрое масштабирование и высокую плотность использования на платформах оркестрации контейнеров, таких как Kubernetes. При тех же аппаратных ресурсах можно запустить гораздо больше экземпляров приложений. После своего первоначального дебюта в течение следующих нескольких месяцев Quarkus претерпел несколько усовершенствований, кульминацией которых стал выпуск версии 1.0.0 в сообществе открытого исходного кода в ноябре 2019 года. [7]
Распределения
[ редактировать ]GraalVM Community Edition (CE) и GraalVM Enterprise Edition (EE)
[ редактировать ]GraalVM — это виртуальная машина Java для компиляции и запуска приложений, написанных на разных языках, в двоичный файл собственной машины. GraalVM Community Edition имеет различные требования к поддержке и лицензированию.
Оправка
[ редактировать ]Mandrel — это последующий дистрибутив GraalVM CE, поддерживающий те же возможности для создания собственных исполняемых файлов, но на основе OpenJDK с открытым исходным кодом . Целью Mandrel является упрощение использования GraalVM приложениями Quarkus за счет включения только тех компонентов GraalVM CE, которые необходимы Quarkus. Red Hat начала коммерческую поддержку использования Mandrel для создания собственных приложений Quarkus с момента выпуска Quarkus 1.7 в октябре 2020 года. [8]
Столпы дизайна
[ редактировать ]Сначала контейнер
[ редактировать ]контейнеров и Kubernetes С самого начала Quarkus был разработан на основе философии , оптимизируя низкое использование памяти и быстрое время запуска.
Максимально возможный объем обработки выполняется во время сборки, включая использование подхода «закрытого мира» к созданию и запуску приложений. Эта оптимизация означает, что в большинстве случаев весь код, у которого нет пути выполнения во время выполнения, не загружается в JVM.
В Quarkus классы, используемые только при запуске приложения, вызываются во время сборки и не загружаются в JVM среды выполнения. Quarkus также избегает отражения максимально , вместо этого отдавая предпочтение статической привязке классов. Эти принципы проектирования уменьшают размер и, в конечном итоге, объем памяти приложения, работающего на JVM, а также позволяют Quarkus быть нативным .
Дизайн Quarkus с самого начала предусматривал нативную компиляцию. Он был оптимизирован для использования встроенных возможностей образа GraalVM для компиляции байт-кода JVM в машинный двоичный файл. GraalVM агрессивно удаляет любой недоступный код, обнаруженный в исходном коде приложения, а также любые его зависимости. В сочетании с контейнерами Linux и Kubernetes приложение Quarkus работает как собственный исполняемый файл Linux, исключая JVM. Собственный исполняемый файл Quarkus запускается намного быстрее и использует гораздо меньше памяти, чем традиционная JVM.
- Быстрый запуск (десятки миллисекунд) позволяет автоматически масштабировать микросервисы в контейнерах и Kubernetes, а также выполнять FaaS на месте.
- Низкое использование памяти помогает оптимизировать плотность контейнеров в развертываниях архитектуры микросервисов, требующих нескольких контейнеров.
- Меньший размер образа приложения и контейнера
Живое кодирование [9]
[ редактировать ]Одной из основных проблем производительности, с которой сталкивается большинство разработчиков Java, является традиционный рабочий процесс разработки Java. Для большинства веб-разработчиков это обычно будет:
Написать код → Компилировать → Развернуть → Обновить браузер → Повторить.
Это может серьезно снизить производительность, поскольку цикл компиляции + повторного развертывания часто может занимать минуту или больше. Quarkus стремится решить эту проблему с помощью функции Live Coding . При работе в режиме разработки рабочий процесс выглядит просто:
Написать код → Обновить браузер → Повторить
Это будет работать «из коробки», никакой специальной настройки не требуется. Это работает для исходных файлов приложения, конфигураций и статических ресурсов.
Примечание | Когда ты бежишь mvn compile quarkus:dev Quarkus запустится в режиме разработки. Когда он получает HTTP-запрос, он удерживает его и проверяет, не были ли изменены какие-либо исходные файлы приложения. Если они есть, он прозрачно скомпилирует измененные файлы, повторно развернет приложение с измененными файлами, а затем HTTP-запрос продолжится к повторно развернутому приложению. Повторное развертывание Quarkus происходит намного быстрее, чем традиционный сервер приложений, поэтому для всех приложений, кроме самых крупных, это должно занять меньше секунды. |
Интерактивный пользовательский интерфейс разработчика (DEV UI)
[ редактировать ]Quarkus предоставляет интерактивный пользовательский интерфейс разработчика для демонстрации всех добавленных зависимостей, когда разработчик обращается к http://localhost:8080/q/dev
конечная точка после запуска режима разработки Quarkus через mvn quarkus:dev
командная строка. Разработчики также могут обновлять конфигурации, после чего изменения автоматически синхронизируют файл application.properties .
Нулевая настройка с DevServices [10]
[ редактировать ]Установка базы данных в локальной среде разработчика — нетривиальная задача, если база данных должна быть такой же, как и производственная версия. Пользователи Linux (разработчики) могут легко запускать базу данных с помощью инструмента командной строки контейнера и механизма контейнера. Они по-прежнему склонны не запускать готовые к использованию базы данных (например, PostgreSQL и MariaDB ) из-за высокого потребления ресурсов компьютера. Вместо этого они предпочитают использовать хранилища данных в памяти, такие как база данных H2 .
Quarkus предоставляет DevServices, созданные на основе тестовых контейнеров, для решения этой проблемы. Например, разработчик может тестировать приложения, если они работают в рабочей базе данных PostgreSQL, а не в хранилище данных H2 в памяти в файле application.properties:
quarkus.datasource.devservices.image-name=postgres:latest
DevServices обычно включен по умолчанию, если не существует существующей конфигурации. Если DevServices включен, Quarkus попытается автоматически настроить и запустить базу данных при работе в режиме разработки или тестирования.
Непрерывное тестирование
[ редактировать ]Отсутствие тестирования — это не вариант разработки надежных приложений при разработке программного обеспечения, от монолитного приложения до микросервисов. Разработчики, вероятно, думают о внешних инструментах непрерывной интеграции (CI), за проверку тестовых примеров которых, скорее всего, отвечает команда контроля качества.
Что, если разработчикам не нужно интегрировать инструменты CI, а выполнять тестовые сценарии в среде выполнения, в которой разрабатываются и работают бизнес-приложения?
Quarkus предоставляет функцию непрерывного тестирования через интерфейс командной строки, а также пользовательский интерфейс DEV. Эта функция избавляет разработчика от необходимости интегрировать внешний инструмент CI и обеспечивает функциональность при постоянной разработке бизнес-логики. [11] [12]
Построено по стандартам
[ редактировать ]Quarkus опирается на обширную экосистему технологий, стандартов, библиотек и API. Разработчикам не нужно тратить много времени на изучение совершенно нового набора API и технологий, чтобы воспользоваться преимуществами, которые Quarkus дает JVM или собственным образам. Среди спецификаций и технологий, лежащих в основе Quarkus, — Contexts & Dependency Injection ( CDI ), JAX-RS , Java Persistence API (JPA), Java Transaction API (JTA), Apache Camel и Hibernate , и это лишь некоторые из них. [ нужна ссылка ]
Quarkus — это платформа предварительной компиляции (AOT), оптимизирующая код для JVM, а также компилирующая его в собственный код для повышения производительности. Все базовые технологии поддерживают AOT, и Quarkus постоянно внедряет новые технологии, стандарты и библиотеки с поддержкой AOT. [13]
Ссылки
[ редактировать ]- ^ «Репозиторий Quarkus Github, коммит первого выпуска» . github.com .
- ^ «Репозиторий Quarkus Github, коммит последнего выпуска» . github.com .
- ^ «LogicMonitor, Quarkus против Spring» . logicmonitor.com . 28 января 2023 г.
- ^ «Руководство по QuarkusIO» . Баелдунг.
- ^ «Начало работы с QuarkusIO» . mastertheboss.com .
- ^ «Кваркус» . конецжизни.дата . 2023-10-02 . Проверено 5 октября 2023 г.
- ^ «Репозиторий Quarkus Github, первый крупный выпуск» . github.com .
- ^ «Репозиторий Quarkus Github, выпуск 1.7.0.Final» . github.com .
- ^ «Режим разработки» . Quarkus.io .
- ^ «Обзор услуг для разработчиков» . Quarkus.io .
- ^ Дорога к Quarkus 2.0: непрерывное тестирование /
- ^ Разработка через тестирование с помощью Quarkus
- ^ «Что такое Кваркус?» . Цифровой гид IONOS . 13 января 2022 г. Проверено 22 августа 2022 г.
Библиография
[ редактировать ]- Марк Нури Сан Феликс (ноябрь 2022 г.). Полный стек Quarkus и React. Пакет . ISBN 9781800562738
- Эрик Деандреа, Дэниел О, Шарль Муллиард (август 2021 г.). Quarkus для разработчиков Spring, 1-е издание. Разработчик Red Hat
- Джон Клинган, Кен Финниган (декабрь 2021 г.). Собственные микросервисы Kubernetes с Quarkus и MicroProfile, 1-е издание. Мэннинг. ISBN 9781617298653.
- Тайо Колеосо (26 августа 2020 г.). Начало Quarkus Framework: создание облачных корпоративных Java-приложений и микросервисов, 1-е издание. ISBN Апресс 1484260317.
- Алекс Сото Буэно, Джейсон Портер (14 июля 2020 г.). Поваренная книга Quarkus: : Java-решения, оптимизированные для Kubernetes, 1-е издание. О'Рейли . ISBN 1492062650.
- Франческо Маркиони (13 декабря 2019 г.), Практические облачные приложения с использованием Java и Quarkus: создание высокопроизводительных бессерверных приложений Java, ориентированных на Kubernetes, 1-е издание. Пакет . ISBN 1838821473