—— Quarkus & GraalVM представили, создали и запустили первый проект
Серия сообщений в блоге Quarkus
- Quarkus и GraalVM представляют, создают и запускают ваш первый проект
- Создавайте локальные образы Quarkus и развертывайте проекты Quarkus в контейнерах.
- ...
Введение в Кваркус
Quarkus — это полнофункциональная нативная платформа Java для Kubernetes, разработанная для виртуальной машины Java (JVM) и встроенной компиляции для оптимизации Java специально для контейнеров и превращения ее в эффективную платформу для бессерверных, облачных сред и сред Kubernetes.
Quarkus работает с популярными стандартами, платформами и библиотеками Java, такими как Eclipse MicroProfile, Apache Kafka, RESTEasy (JAX-RS), Hibernate ORM (JPA), Spring, Infinispan, Camel и другими.
Решение Quarkus для внедрения зависимостей основано на CDI (внедрение контекста и зависимостей) и включает в себя структуру расширения для расширения функциональности и настройки, начальной загрузки и интеграции в ваше приложение. Добавить красширятьЭто так же просто, как добавить зависимости; в качестве альтернативы вы можете использовать инструмент Quarkus.
Еще одна примечательная особенность заключается в том, что он предоставляет GraalVM, виртуальную машину общего назначения, используемую для запуска приложений, написанных на нескольких языках, включая Java и JavaScript, с правильной информацией для естественной компиляции приложений.
Рэд Хэт составил следующий список, чтобы проиллюстрировать преимущества использования Quarkus:Контрольный список
Quarkus против традиционных фреймворков Java
Официальное изображение, показывающее подробное сравнение некоторых данных времени выполнения, разработанных с использованием фреймворка Quarkus и с использованием традиционного фреймворка.Видно, что потребление памяти и скорость отклика интерфейса проекта Quarkus, работающего в JVM, значительно лучше, чем у традиционного фреймворка. , Стек технологий Java. После компиляции Quarkus в локальный исполняемый файл (локальное зеркало) его преимущества можно сказать очень очевидны.
Введение в GraalVM
GraalVM — это высокопроизводительная виртуальная машина, которая может значительно повысить производительность программ и эффективность работы, что делает ее идеальной для микросервисов. Он был разработан для поддержки приложений, написанных на разных языках (Java, JavaScript, языках на основе LLVM, таких как C и C++) и других динамических языках. Он устраняет барьеры между различными языками программирования и обеспечивает совместимость многоязычных общих сред выполнения. Он может работать автономно или в контексте OpenJDK, Node.js или базы данных Oracle.
Для Java-приложений GraalVM может дать много ценных преимуществ: быстрее запускать их, обеспечивать расширяемость с помощью языков сценариев (JavaScript, R, Python...) или создавать заблаговременно скомпилированные нативные образы (native-image).
Более подробную информацию о GraalVM можно найти здесь:эта статья.
Установка GraalVM
В этой статье мы используемSDKMANдля установки GraalVM. SDKMAN — это инструмент для управления параллельными версиями нескольких комплектов для разработки программного обеспечения в большинстве систем на базе Unix. Он предоставляет удобный интерфейс командной строки (CLI) и API для установки, переключения, удаления и перечисления кандидатов. Ранее известный как Groovy enVironment Manager (GVM), он был вдохновлен очень полезными инструментами RVM и rbenv, которые широко используются в сообществе Ruby.
Установить SDKMAN
Выполните следующую команду для установки:
$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
Убедитесь, что ADKMAN установлен, выполнив следующую команду:
$ sdk version
Установить GraalVM
Выполните следующую команду:
$ sdk list java
Вы можете видеть, что SDKMAN перечисляет все поддерживаемые дистрибутивы Java.
Находим дистрибутив GraalVM
На момент написания этой статьи последняя версия GraalVM — 20.1.0.r11-grl, поэтому мы установим эту версию. Выполните следующую команду, чтобы установить GraalVM:
$ sdk install java 20.1.0.r11-grl
На данный момент GraalVM установлен! Мы можем запустить следующую команду, чтобы определить, установлена ли GraalVM:
$ java -version
Создать проект
У нас есть несколько способов создания проектов Quarkus
Создайте проект Quarkus с помощью Intellij IDEA
Нажмите в строке меню File>New>Project..., чтобы создать новый проект.
Нажмите «Далее» и введите соответствующую информацию, «Далее»> «Далее...», создание завершено.
Создайте проект Quarkus с помощью командной строки Maven.
Выполните следующую команду, чтобы создать проект Quarkus:
mvn io.quarkus:quarkus-maven-plugin:1.6.0.Final:create \
-DprojectGroupId=org.acme \
-DprojectArtifactId=getting-started \
-DclassName="org.acme.getting.started.GreetingResource" \
-Dpath="/hello"
cd getting-started
На этом создание проекта завершено!
Стартовый проект
Используем IDEA для открытия проекта
В Quarkus нет класса запуска, как в Spring Boot, Helidon и других фреймворках, нам нужно запустить проект, выполнив команду Maven.
Выполните следующую команду в консоли IDEA, чтобы запустить проект:
./mvnw compile quarkus:dev
Успешно стартовал!
Конечно, каждый раз запускать командную строку будет неудобно, мы можем настроить проект на быстрый запуск через следующую конфигурацию:
Щелкните значок «+» в верхнем левом углу, чтобы добавить конфигурацию Maven, например, в левый столбец, введите «compile quarkus:dev» в командной строке в правом столбце и нажмите «ОК».
На этом этапе вы можете щелкнуть значок, показанный на рисунке ниже, чтобы легко запустить проект.
запустить тест
Откройте тестовый класс в проекте и увидите следующий код:
@QuarkusTest //1
public class ExampleResourceTest {
@Test
public void testHelloEndpoint() {
given()
.when().get("/hello")
.then()
.statusCode(200) //2
.body(is("hello"));
}
}
- Аннотируя бегун с помощью @QuarkusTest, вы можете указать JUnit запустить приложение перед тестированием.
- Проверьте код состояния и содержимое ответа HTTP.
По умолчанию тесты будут запускаться на порту 8081, чтобы избежать конфликтов с запущенными приложениями. Quarkus автоматически настраивает RestAssured для использования этого порта. Если вы хотите протестировать другие пути, вы можете использовать аннотацию @TestHTTPResource, чтобы внедрить тестируемый URL-адрес непосредственно в поле тестового класса. Тип этого поля может быть String, URL или URI. Нам нужно указать значение тестового пути для этой аннотации. Например, если бы я хотел протестировать сервлет, сопоставленный с /myservlet, я бы просто добавил в тест следующее:
@QuarkusTest
public class ExampleResourceTest {
@TestHTTPResource("/myservlet")
URL testUrl;
@Test
public void testHelloEndpoint() {
given()
.when().get(testUrl)
.then()
.statusCode(200)
.body(is("hello"));
}
}
Тестовым портом можно управлять, настроив свойство quarkus.http.test-port в файле конфигурации проекта. Quarkus также создал системное свойство с именем test.url, значение которого будет установлено на базовый URL-адрес теста (BasePath).
Суммировать
Мы вступили в эру облачных сервисов и микросервисов, распрощались с громадностью и сложностью крупномасштабных монолитных приложений и пожинаем огромные преимущества, которые приносят микросервисы. Но начали возникать некоторые проблемы. С увеличением количества микрослужб избыточные и бесполезные зависимости, которые когда-то возникали в одном приложении, изначально медленный процесс запуска проектов Java и проблемы оптимизации JIT распространяются на каждую микрослужбу. Более того, традиционная спецификация Java EE не имеет решения модели микросервиса, и проблему нужно решать срочно. К счастью, с появлением некоторых новых сред разработки Java, таких как Quarkus, Helidon и т. д., эта ситуация улучшилась (и экосистема Spring также начала поддерживать GraalVM), и они сделали Java более локализованным, независимо от проекта. Значительные улучшения были сделаны с точки зрения объема, потребления ресурсов и операционной эффективности.
🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
Добро пожаловать в блог автора:blog.dongxishaonian.tech