From 5cf4f7f621b083400e350d0fe0c8b8b2c2ae4a7f Mon Sep 17 00:00:00 2001 From: Sergey Akulov Date: Sun, 6 Aug 2023 12:53:34 +0300 Subject: [PATCH 1/7] quarkus basics --- docs/hello-new-world.md | 2 +- docs/quarkus.md | 32 ++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 docs/quarkus.md diff --git a/docs/hello-new-world.md b/docs/hello-new-world.md index 4192060..fec09d0 100644 --- a/docs/hello-new-world.md +++ b/docs/hello-new-world.md @@ -8,7 +8,7 @@ #### Системы сборки -Современные приложения редко состоят из парочки классов которые запускаются из среды разработки. Работа с зависимостями твоего проекта, его сборка/упаковка, всё это ответственность систем сборки. Они берут на себя нудную и иногда тяжелую работу, чтобы твой проект на развалился под грузом [JAR hell](https://dzone.com/articles/what-is-jar-hell). На 2022 год, в Java есть две наиболее популярных системы сборки: +Современные приложения редко состоят из парочки классов которые запускаются из среды разработки. Работа с зависимостями твоего проекта, его сборка/упаковка, всё это ответственность систем сборки. Они берут на себя нудную и иногда тяжелую работу, чтобы твой проект на развалился под грузом [JAR hell](https://dzone.com/articles/what-is-jar-hell). На данный момент, для Java есть две наиболее популярных системы сборки: 1. [Gradle](https://gradle.org/). Модно, молодежно, инкрементальная компиляция, описание билд-файла на Groovy или Kotlin DSL. Быстрый старт [здесь](https://docs.gradle.org/current/samples/sample_building_java_applications.html). 2. [Maven](https://maven.apache.org/). Почти нестареющая классика. Описание билда файла на XML, есть множество плагинов на любой вкус, расширяющих стандартную функциональность. Быстрый старт [здесь](https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html). diff --git a/docs/quarkus.md b/docs/quarkus.md new file mode 100644 index 0000000..16d6b0a --- /dev/null +++ b/docs/quarkus.md @@ -0,0 +1,32 @@ +### Quarkus + +[Quarkus](https://quarkus.io/) - наиболее популярный "FullStack Framework" после [Spring](https://spring.io/). Детище **RedHat**, вышедшее в Opensource. Проект насчитывает уже третий мажорный релиз и даже обзавелся LTS-версией. В отличии от того же Spring, Quarkus построен на реализации [JAX-RS](https://en.wikipedia.org/wiki/Jakarta_RESTful_Web_Services) от [Resteasy](https://resteasy.dev/), из которой позже, специально для Quarkus, выросла реализация [Resteasy reactive](https://quarkus.io/guides/resteasy-reactive), построенная на [Vert.x](https://vertx.io/). Тот факт, что Quarkus основан уже на давно существующей реализации JAX-RS, стал подспорьем для перехода множества компаний в миграции своих сервисов с [Wildfly](https://www.wildfly.org/) без каких-либо тяжелых усилий. +Как и Spring Framework, Quarkus из коробки поддерживает большинство технологий, в таком виде, чтобы с ними было комфортно работать в рамках экосистемы Quarkus. +Если вы вдруг испугались, что придется заново учить новые ORM, JDBC, Logging-Framework'и, то спещу огорчить тут вы увидите тот же [Hibernate](https://quarkus.io/guides/hibernate-orm-panache), [SLF4J](https://quarkus.io/guides/logging), [Datasource](https://quarkus.io/guides/datasource) и многое другое. Причем, работать с ними, возможно, будет даже [удобнее](https://quarkus.io/guides/logging#simplified-logging) чем в Spring. + +#### Документация + +При изучении таких Framework'ов как Spring, Quarkus, Helidon, Micronaut...и тд. В первую очередь встает вопрос о документации. +Документация Quarkus не должна оставить равнодушным. Стоит просто зайти на [страницу](https://quarkus.io/guides/) и наслаждаться. Там вы найдете как короткие вводные статьи для новичков о том, как использовать тот или иной Framework в рамках Quarkus, так и концепты внутреннего устройства проекта, и, наконец Reference'ые подробнейшие статьи для продолжающих разработчиков. + +#### Утилиты + +Spring имеет такую замечательную утилиту [Spring Initializr](https://start.spring.io/) для генерации и первичной настройки проекта. +В Свою очередь, Quarkus предоставляет Web-интерфейс со схожим функционалом [code.quarkus.io](https://code.quarkus.io/). +Также, Quarkus тесно интегрируется с самыми популярными [IDE](https://quarkus.io/guides/ide-tooling), системами сборки [Gradle](https://quarkus.io/guides/gradle-tooling)/[Maven](https://quarkus.io/guides/maven-tooling). Наконец, стоит отметить наличие прекрасного и самодостаточного [CLI](https://quarkus.io/guides/cli-tooling). + +#### Сообщество + +Стоит отметить, что у сообщества [Quarkus](https://quarkus.io/) есть такой феномен как [Quarkiverse](https://quarkiverse.io/), куда множество компаний по всему миру выкладывают собственные расширения над [Quarkus](https://quarkus.io/). +Уже сейчас, при желании, там можно обнаружить поддержку большинства актуальных технологий "из коробки". +Например, если вам необходимо настроить в проекте взаимодействие по протоколу [SOAP](https://ru.wikipedia.org/wiki/SOAP), то достаточно обратиться сюда [quarkus-cxf extension](https://docs.quarkiverse.io/quarkus-cxf/dev/index.html). Там вы найдете все необходимое. +Также, по собственному опыту, могу сказать что сообщество глубоко заинтересовано и открыто к решению проблем. При желании можно задать любой вопрос в [чате](https://quarkusio.zulipchat.com/), в котором сидят разработчики [Quarkus](https://quarkus.io/) и с охотой отвечают на любой вопрос. + +#### Блоги, Книги, Подкасты + +Сообщество Quarkus старается так или иначе популяризировать свой продукт. На главной странице [сайта](https://quarkus.io/) можно найти все необходимые ресурсы для слежения за развитием проекта. [Блог](https://quarkus.io/blog/), [Подкасты](https://quarkus.io/insights/), [Книги](https://quarkus.io/books/) и многое другое. + +#### How-to + +Выше были описаны ключевые моменты, которые необходимо знать при вступлении в экосистему Quarkus. От себя могу сказать, что писать на данном Framework'е одно удовольствие. +Конечно же, чтобы написать типичный CRUD, достаточно зайти в раздел [get started](https://quarkus.io/get-started/) и следовать шагам, который данный раздел предлагает. От себя, советую прочитать концептуальные статьи об устройстве Quarkus, в особенности [Quarkus Reactive Architecture](https://quarkus.io/guides/quarkus-reactive-architecture), [Vert.x Reference](https://quarkus.io/guides/vertx-reference), [CDI Reference](https://quarkus.io/guides/cdi-reference). \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index d10c600..0d666b6 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -89,6 +89,7 @@ nav: - Вступаем во взрослый мир: - Вступаем во взрослый мир: hello-new-world.md - Spring Framework: spring-framework.md + - Quarkus: quarkus.md - CI/CD: cicd.md - Контейнеризация: containers.md - Что дальше ?: eventually.md \ No newline at end of file From 4c8083a6a8d8857e290b8827b89832eb8c793981 Mon Sep 17 00:00:00 2001 From: Sergey Akulov Date: Tue, 8 Aug 2023 12:42:18 +0300 Subject: [PATCH 2/7] quarkus pr review --- docs/images/icon-developerjoy.svg | 20 +++++ docs/quarkus.md | 117 ++++++++++++++++++++++++++---- mkdocs.yml | 10 ++- 3 files changed, 130 insertions(+), 17 deletions(-) create mode 100644 docs/images/icon-developerjoy.svg diff --git a/docs/images/icon-developerjoy.svg b/docs/images/icon-developerjoy.svg new file mode 100644 index 0000000..daddf50 --- /dev/null +++ b/docs/images/icon-developerjoy.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + diff --git a/docs/quarkus.md b/docs/quarkus.md index 16d6b0a..f12d0a4 100644 --- a/docs/quarkus.md +++ b/docs/quarkus.md @@ -1,32 +1,117 @@ -### Quarkus +### Почему Quarkus ? -[Quarkus](https://quarkus.io/) - наиболее популярный "FullStack Framework" после [Spring](https://spring.io/). Детище **RedHat**, вышедшее в Opensource. Проект насчитывает уже третий мажорный релиз и даже обзавелся LTS-версией. В отличии от того же Spring, Quarkus построен на реализации [JAX-RS](https://en.wikipedia.org/wiki/Jakarta_RESTful_Web_Services) от [Resteasy](https://resteasy.dev/), из которой позже, специально для Quarkus, выросла реализация [Resteasy reactive](https://quarkus.io/guides/resteasy-reactive), построенная на [Vert.x](https://vertx.io/). Тот факт, что Quarkus основан уже на давно существующей реализации JAX-RS, стал подспорьем для перехода множества компаний в миграции своих сервисов с [Wildfly](https://www.wildfly.org/) без каких-либо тяжелых усилий. -Как и Spring Framework, Quarkus из коробки поддерживает большинство технологий, в таком виде, чтобы с ними было комфортно работать в рамках экосистемы Quarkus. -Если вы вдруг испугались, что придется заново учить новые ORM, JDBC, Logging-Framework'и, то спещу огорчить тут вы увидите тот же [Hibernate](https://quarkus.io/guides/hibernate-orm-panache), [SLF4J](https://quarkus.io/guides/logging), [Datasource](https://quarkus.io/guides/datasource) и многое другое. Причем, работать с ними, возможно, будет даже [удобнее](https://quarkus.io/guides/logging#simplified-logging) чем в Spring. +[Quarkus](https://quarkus.io/) - Framework от [RedHat](https://ru.wikipedia.org/wiki/Red_Hat), взгляд на экосистему которого заставляет рассмотреть его в качестве альтернативы таким Framework'ам как Helidon (Oracle), Spring Boot (VMware), Micronaut. +В отличии от остальных Framework'ов, перечисленных выше, Quarkus не пошел по пути создания чего-то абсолютно уникального. +Вместо этого, он предлагает использовать уже давно существующую в рамках мира backend web-разработки реализацию спецификации [Jakarta REST (ранее известный как JAX-RS](https://jakarta.ee/specifications/restful-ws/3.1/jakarta-restful-ws-spec-3.1.html), известной как [Resteasy](https://resteasy.dev/). + В сущности, это означает, что разработчикам не пришлось особенно много усилий прилагать, чтобы уйти от устаревшего формата разработки. +Конечно же, это можно было сделать и с помощью Spring Boot, но количество усилий несоизмеримо. +По опыту могу сказать, что типовой микросервис можно перенести c сервлетного JAX-RS на Quarkus даже за 5 минут (конечно же, это средняя температура по больнице). -#### Документация +#### Quarkus реактивный, даже не сомневайся -При изучении таких Framework'ов как Spring, Quarkus, Helidon, Micronaut...и тд. В первую очередь встает вопрос о документации. -Документация Quarkus не должна оставить равнодушным. Стоит просто зайти на [страницу](https://quarkus.io/guides/) и наслаждаться. Там вы найдете как короткие вводные статьи для новичков о том, как использовать тот или иной Framework в рамках Quarkus, так и концепты внутреннего устройства проекта, и, наконец Reference'ые подробнейшие статьи для продолжающих разработчиков. +Изначально, как было выше сказано, Quarkus использовал популярную реализацию Jakarta REST. Однако команда разработчиков пошла дальше. Вместе с разработчиками Resteasy был разработан [Resteasy Reactive](https://quarkus.io/guides/resteasy-reactive). +В нем Quarkus использует [Vert.x](https://vertx.io/) - набор библиотек для реализации [реактивных](https://www.reactivemanifesto.org/) приложений. При этом, поддержка всех механизмов и аннотаций спецификации Jakarta REST сохранилась. +Думаю, лучше всего реактивность Quarkus описывают слова из статьи [Quarkus Reactive Architecture](https://quarkus.io/guides/quarkus-reactive-architecture): + +!!! note "Quarkus is reactive" + + Quarkus is reactive. It’s even more than this: Quarkus unifies reactive and imperative programming. You don’t even have to choose: you can implement reactive components and imperative components then combine them inside the very same application. No need to use different stacks, tooling or APIs; Quarkus bridges both worlds. + +Для более четкого представления о том, что я написал, предлагаю к прочтению [Quarkus Reactive Architecture](https://quarkus.io/guides/quarkus-reactive-architecture), [Using Eclipse Vert.x API from a Quarkus Application](https://quarkus.io/guides/vertx#executing-asynchronous-code-from-a-blocking-thread), и, для более глубокого погружения [Vert.x Reference Guide](https://quarkus.io/guides/vertx-reference). + + +#### Экосистема +##### Документация + +При изучении таких Framework'ов как Spring и Quarkus в первую очередь встает вопрос о документации и ее качестве. +В случае Quarkus она не должна оставить изучающего равнодушным. Стоит просто зайти на [страницу](https://quarkus.io/guides/) и наслаждаться. +Там ты найдешь как короткие вводные статьи для новичков о том, как использовать тот или иной Framework в рамках Quarkus, так и концепты внутреннего устройства проекта. +Наконец, там присутствуют Referenc'ные статьи для продолжающих разработчиков. #### Утилиты Spring имеет такую замечательную утилиту [Spring Initializr](https://start.spring.io/) для генерации и первичной настройки проекта. -В Свою очередь, Quarkus предоставляет Web-интерфейс со схожим функционалом [code.quarkus.io](https://code.quarkus.io/). +В свою очередь, Quarkus предоставляет Web-страницу со схожим функционалом [code.quarkus.io](https://code.quarkus.io/). +Там ты сможешь выбрать: Язык разработки, систему сборки, и, также все необходимые для разработки зависимости. + В итоге ты получаешь готовый проект, осталось лишь внедрить свою бизнес-логику. Также, Quarkus тесно интегрируется с самыми популярными [IDE](https://quarkus.io/guides/ide-tooling), системами сборки [Gradle](https://quarkus.io/guides/gradle-tooling)/[Maven](https://quarkus.io/guides/maven-tooling). Наконец, стоит отметить наличие прекрасного и самодостаточного [CLI](https://quarkus.io/guides/cli-tooling). -#### Сообщество -Стоит отметить, что у сообщества [Quarkus](https://quarkus.io/) есть такой феномен как [Quarkiverse](https://quarkiverse.io/), куда множество компаний по всему миру выкладывают собственные расширения над [Quarkus](https://quarkus.io/). -Уже сейчас, при желании, там можно обнаружить поддержку большинства актуальных технологий "из коробки". -Например, если вам необходимо настроить в проекте взаимодействие по протоколу [SOAP](https://ru.wikipedia.org/wiki/SOAP), то достаточно обратиться сюда [quarkus-cxf extension](https://docs.quarkiverse.io/quarkus-cxf/dev/index.html). Там вы найдете все необходимое. -Также, по собственному опыту, могу сказать что сообщество глубоко заинтересовано и открыто к решению проблем. При желании можно задать любой вопрос в [чате](https://quarkusio.zulipchat.com/), в котором сидят разработчики [Quarkus](https://quarkus.io/) и с охотой отвечают на любой вопрос. +##### Поддержка технологий +Quarkus старается поддерживать множество популярных технологий. +Для сериализации [используется](https://quarkus.io/guides/rest-json) [Jackson](https://github.com/FasterXML/jackson). +Для логгирования поддерживаются следующие API: + + * [JBoss Logging](https://github.com/jboss-logging/jboss-logging) + * JDK java.util.logging (JUL) + * [SLF4J](https://www.slf4j.org/) + * [Apache Commons Logging](https://commons.apache.org/proper/commons-logging/) + * [Apache Log4j 2](https://logging.apache.org/log4j/2.x/) + * [Apache Log4j 1](https://logging.apache.org/log4j/1.2/) + +Не могу не упомянуть про способ логгирования, которого мне не достает в любом другом Framework'e: + +```java title="Упрощенное логгирование" +package com.example; + +import io.quarkus.logging.Log; + +class MyService { + public void doSomething() { + Log.info("Simple!"); + } +} +``` + +Подробнее о том, как работает такой способ читай [тут](https://quarkus.io/guides/logging). + +Для подключения к БД адаптированы привычные JDBC драйверы к множеству СУБД, но также предлагается и вариант подключения с помощью [реактивных клиентов](https://quarkus.io/guides/reactive-sql-clients). +Подробнее можно почитать [здесь](https://quarkus.io/guides/datasource). +Если, вдруг, вы соскучились по Hibernate, то [вот](https://quarkus.io/guides/hibernate-orm) и [вот](https://quarkus.io/guides/hibernate-orm-panache). ПоДучите и распишитесь. + +Выше я осветил наиболее важные технологии, которые вы так или иначе встретите. Но, конечно же Quarkus поддерживает множество других, я бы даже усомнился, что вы сможете не найти поддержку чего-либо. +Достигается это не только за счет поддержки Core-команды от RedHat, но и существования Quarkiverse. + + +##### Quarkiverse + +[Quarkiverse Github](http://github.com/quarkiverse) - это место в Github, куда любой разработчик/группа разработчиков может выложить расширение для Quarkus. +Расширения Quarkus, размещенные в организации Quarkiverse, могут быть легко включены в каталог расширений Quarkus, доступный на code.quarkus.io, и в инструменты командной строки Quarkus (такие как mvn quarkus:list-extensions, gradle listExtensions). Но это не только лишь набор репозиториев. Множество расширений пишется по определенному [набору правил](https://hub.quarkiverse.io/) и имеют собственную [документацию](https://docs.quarkiverse.io/index/explore/index.html). Актуальный список расширений ты найдешь [тут](https://quarkus.io/extensions/). Перед использованием расширений можно прочитать [краткое руководство](https://quarkus.io/faq). + + +##### Сообщество +Также, по собственному опыту, могу сказать что сообщество глубоко заинтересовано и открыто к решению проблем. При желании можно задать любой вопрос в [чате](https://quarkusio.zulipchat.com/), в котором сидят разработчики Quarkus и с охотой отвечают на любые вопросы, в том числе вопросы совсем новичков. + + +##### Developer Joy +Отдельно хотелось бы отметить тот факт, что команда разработчиков Quarkus делает акцент на комфорте разработки, используя Quarkus: + +!!! note "Beyond simply working, we’re aiming for Joy." + + Quarkus is not just about being great for writing Web Applications or Micro-Services. + We’re focusing on more than the feature set: we make sure that every feature works well, simply, with little to no configuration, in the most intuitive way possible. + It should be trivial to develop simple things, and easy to develop the more complex ones. + +Прочитай [это](https://quarkus.io/developer-joy/), надеюсь тебе понравится. #### Блоги, Книги, Подкасты Сообщество Quarkus старается так или иначе популяризировать свой продукт. На главной странице [сайта](https://quarkus.io/) можно найти все необходимые ресурсы для слежения за развитием проекта. [Блог](https://quarkus.io/blog/), [Подкасты](https://quarkus.io/insights/), [Книги](https://quarkus.io/books/) и многое другое. -#### How-to +#### Личный опыт +В блоге Quarkus можно найти [истории миграции на Quarkus](https://quarkus.io/blog/tag/user-story/). Почитай как-нибудь на досуге. +Хотел бы рассказать о своем опыте немного. В нашей компании разработка велась на сервлетах, сервисы собирались в WAR-архивы и запускались с помощью Wildfly. +В какой-то момент мы начали испытывать проблемы разного рода, связанные с разделением ресурсов, логгированием, метриками, и даже OOM - где из-за одного сервиса умирали все сразу. Экспертизы Spring с его Spring Boot почти ни у кого в команде не было. Появление Quarkus в нашем случае стал спасительным кругом. +Quarkus, и тесно интегрированные с ним Vert.x, [Smallrye](https://smallrye.io/), спустя нескольких лет использования вызывают у меня лишь приятные воспоминания. + +#### How-to старт +Для того, чтобы начать писать код, достаточно зайти на страницу [Get Started](https://quarkus.io/get-started/) и следовать инструкциям. +Здесь тебя научат как написать и запустить простейший микросервис, используя Quarkus. Обязательно обрати внимание на раздел `Next Steps`, там будут ссылки на статьи, +которые подробнее расскажут как писать [REST сервисы](https://quarkus.io/guides/rest-json), в том числе [реактивно](https://quarkus.io/guides/getting-started-reactive). +Также, покажут как упростить разработку в твоей любимой [IDE](https://quarkus.io/guides/ide-tooling) и многое другое. + -Выше были описаны ключевые моменты, которые необходимо знать при вступлении в экосистему Quarkus. От себя могу сказать, что писать на данном Framework'е одно удовольствие. -Конечно же, чтобы написать типичный CRUD, достаточно зайти в раздел [get started](https://quarkus.io/get-started/) и следовать шагам, который данный раздел предлагает. От себя, советую прочитать концептуальные статьи об устройстве Quarkus, в особенности [Quarkus Reactive Architecture](https://quarkus.io/guides/quarkus-reactive-architecture), [Vert.x Reference](https://quarkus.io/guides/vertx-reference), [CDI Reference](https://quarkus.io/guides/cdi-reference). \ No newline at end of file +
+ ![developerjoy](images/icon-developerjoy.svg){ width="300" } +
Приятного путешествия :)
+
\ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 0d666b6..8e804d4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -42,14 +42,22 @@ theme: - toc.follow markdown_extensions: + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.snippets + - pymdownx.superfences - admonition - pymdownx.details - - pymdownx.superfences - attr_list - pymdownx.emoji: emoji_index: !!python/name:materialx.emoji.twemoji emoji_generator: !!python/name:materialx.emoji.to_svg - def_list + - pymdownx.tasklist: + custom_checkbox: true - footnotes - md_in_html - toc: From 2412cf0a6dbd46af2908b942f61714dbe45e8e4f Mon Sep 17 00:00:00 2001 From: Lasteris Date: Tue, 8 Aug 2023 13:50:46 +0300 Subject: [PATCH 3/7] Update quarkus.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit заменил обращения к читателю с вы на ты --- docs/quarkus.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/quarkus.md b/docs/quarkus.md index f12d0a4..b328028 100644 --- a/docs/quarkus.md +++ b/docs/quarkus.md @@ -32,7 +32,7 @@ Spring имеет такую замечательную утилиту [Spring Initializr](https://start.spring.io/) для генерации и первичной настройки проекта. В свою очередь, Quarkus предоставляет Web-страницу со схожим функционалом [code.quarkus.io](https://code.quarkus.io/). -Там ты сможешь выбрать: Язык разработки, систему сборки, и, также все необходимые для разработки зависимости. +Там ты сможешь выбрать: язык разработки, систему сборки, и, также все необходимые для разработки зависимости. В итоге ты получаешь готовый проект, осталось лишь внедрить свою бизнес-логику. Также, Quarkus тесно интегрируется с самыми популярными [IDE](https://quarkus.io/guides/ide-tooling), системами сборки [Gradle](https://quarkus.io/guides/gradle-tooling)/[Maven](https://quarkus.io/guides/maven-tooling). Наконец, стоит отметить наличие прекрасного и самодостаточного [CLI](https://quarkus.io/guides/cli-tooling). @@ -67,9 +67,9 @@ class MyService { Для подключения к БД адаптированы привычные JDBC драйверы к множеству СУБД, но также предлагается и вариант подключения с помощью [реактивных клиентов](https://quarkus.io/guides/reactive-sql-clients). Подробнее можно почитать [здесь](https://quarkus.io/guides/datasource). -Если, вдруг, вы соскучились по Hibernate, то [вот](https://quarkus.io/guides/hibernate-orm) и [вот](https://quarkus.io/guides/hibernate-orm-panache). ПоДучите и распишитесь. +Если, вдруг, ты соскучился по Hibernate, то [вот](https://quarkus.io/guides/hibernate-orm) и [вот](https://quarkus.io/guides/hibernate-orm-panache). ПоДучи и распишись. -Выше я осветил наиболее важные технологии, которые вы так или иначе встретите. Но, конечно же Quarkus поддерживает множество других, я бы даже усомнился, что вы сможете не найти поддержку чего-либо. +Выше я осветил наиболее важные технологии, которые ты так или иначе встретишь на месте работы. Но, конечно же Quarkus поддерживает множество других, я бы даже усомнился, что ты сможешь не найти поддержку чего-либо. Достигается это не только за счет поддержки Core-команды от RedHat, но и существования Quarkiverse. From 45aac7c7a5d15acf60e52dcb548b840621d12128 Mon Sep 17 00:00:00 2001 From: Lasteris Date: Tue, 8 Aug 2023 15:33:51 +0300 Subject: [PATCH 4/7] Update quarkus.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit опечатки, обезличенность (кроме личного опыта) --- docs/quarkus.md | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/docs/quarkus.md b/docs/quarkus.md index b328028..3525091 100644 --- a/docs/quarkus.md +++ b/docs/quarkus.md @@ -1,8 +1,8 @@ ### Почему Quarkus ? [Quarkus](https://quarkus.io/) - Framework от [RedHat](https://ru.wikipedia.org/wiki/Red_Hat), взгляд на экосистему которого заставляет рассмотреть его в качестве альтернативы таким Framework'ам как Helidon (Oracle), Spring Boot (VMware), Micronaut. -В отличии от остальных Framework'ов, перечисленных выше, Quarkus не пошел по пути создания чего-то абсолютно уникального. -Вместо этого, он предлагает использовать уже давно существующую в рамках мира backend web-разработки реализацию спецификации [Jakarta REST (ранее известный как JAX-RS](https://jakarta.ee/specifications/restful-ws/3.1/jakarta-restful-ws-spec-3.1.html), известной как [Resteasy](https://resteasy.dev/). +В отличии от остальных фреймворков, перечисленных выше, Quarkus не пошел по пути создания чего-то абсолютно уникального. +Вместо этого, он предлагает использовать уже давно существующую в рамках мира backend web-разработки реализацию спецификации [Jakarta REST (ранее известная как JAX-RS](https://jakarta.ee/specifications/restful-ws/3.1/jakarta-restful-ws-spec-3.1.html), известной как [Resteasy](https://resteasy.dev/). В сущности, это означает, что разработчикам не пришлось особенно много усилий прилагать, чтобы уйти от устаревшего формата разработки. Конечно же, это можно было сделать и с помощью Spring Boot, но количество усилий несоизмеримо. По опыту могу сказать, что типовой микросервис можно перенести c сервлетного JAX-RS на Quarkus даже за 5 минут (конечно же, это средняя температура по больнице). @@ -17,16 +17,16 @@ Quarkus is reactive. It’s even more than this: Quarkus unifies reactive and imperative programming. You don’t even have to choose: you can implement reactive components and imperative components then combine them inside the very same application. No need to use different stacks, tooling or APIs; Quarkus bridges both worlds. -Для более четкого представления о том, что я написал, предлагаю к прочтению [Quarkus Reactive Architecture](https://quarkus.io/guides/quarkus-reactive-architecture), [Using Eclipse Vert.x API from a Quarkus Application](https://quarkus.io/guides/vertx#executing-asynchronous-code-from-a-blocking-thread), и, для более глубокого погружения [Vert.x Reference Guide](https://quarkus.io/guides/vertx-reference). +Для более четкого представления о том, что здесь написано, было бы здорово прочитать [Quarkus Reactive Architecture](https://quarkus.io/guides/quarkus-reactive-architecture), затем [Using Eclipse Vert.x API from a Quarkus Application](https://quarkus.io/guides/vertx#executing-asynchronous-code-from-a-blocking-thread), и, для более глубокого погружения [Vert.x Reference Guide](https://quarkus.io/guides/vertx-reference). #### Экосистема ##### Документация -При изучении таких Framework'ов как Spring и Quarkus в первую очередь встает вопрос о документации и ее качестве. +При изучении таких фоеймворков как Spring и Quarkus в первую очередь встает вопрос о документации и ее качестве. В случае Quarkus она не должна оставить изучающего равнодушным. Стоит просто зайти на [страницу](https://quarkus.io/guides/) и наслаждаться. -Там ты найдешь как короткие вводные статьи для новичков о том, как использовать тот или иной Framework в рамках Quarkus, так и концепты внутреннего устройства проекта. -Наконец, там присутствуют Referenc'ные статьи для продолжающих разработчиков. +Там ты найдешь как короткие вводные статьи для новичков о том, как использовать тот или иной фреймворк в рамках Quarkus, так и концепты внутреннего устройства проекта. +Наконец, там присутствуют справочные(Reference Guide) статьи для продолжающих разработчиков. #### Утилиты @@ -40,7 +40,7 @@ Spring имеет такую замечательную утилиту [Spring I ##### Поддержка технологий Quarkus старается поддерживать множество популярных технологий. Для сериализации [используется](https://quarkus.io/guides/rest-json) [Jackson](https://github.com/FasterXML/jackson). -Для логгирования поддерживаются следующие API: +Для логирования поддерживаются следующие API: * [JBoss Logging](https://github.com/jboss-logging/jboss-logging) * JDK java.util.logging (JUL) @@ -49,7 +49,7 @@ Quarkus старается поддерживать множество попу * [Apache Log4j 2](https://logging.apache.org/log4j/2.x/) * [Apache Log4j 1](https://logging.apache.org/log4j/1.2/) -Не могу не упомянуть про способ логгирования, которого мне не достает в любом другом Framework'e: +Не могу не упомянуть про способ логирования, которого мне не достает в любом другом фреймворке: ```java title="Упрощенное логгирование" package com.example; @@ -69,7 +69,7 @@ class MyService { Подробнее можно почитать [здесь](https://quarkus.io/guides/datasource). Если, вдруг, ты соскучился по Hibernate, то [вот](https://quarkus.io/guides/hibernate-orm) и [вот](https://quarkus.io/guides/hibernate-orm-panache). ПоДучи и распишись. -Выше я осветил наиболее важные технологии, которые ты так или иначе встретишь на месте работы. Но, конечно же Quarkus поддерживает множество других, я бы даже усомнился, что ты сможешь не найти поддержку чего-либо. +Выше освещены наиболее важные технологии, которые ты так или иначе встретишь на месте работы. Но, конечно же Quarkus поддерживает множество других. Вряд ли ты обнаружишь, что не хватает чего-то важного (или не очень). Достигается это не только за счет поддержки Core-команды от RedHat, но и существования Quarkiverse. @@ -80,7 +80,8 @@ class MyService { ##### Сообщество -Также, по собственному опыту, могу сказать что сообщество глубоко заинтересовано и открыто к решению проблем. При желании можно задать любой вопрос в [чате](https://quarkusio.zulipchat.com/), в котором сидят разработчики Quarkus и с охотой отвечают на любые вопросы, в том числе вопросы совсем новичков. +Команда разработчиков Quarkus глубоко заинтересована и открыта к решению проблем. При желании можно задать любой вопрос в [чате](https://quarkusio.zulipchat.com/), в котором сидят разработчики Quarkus и с охотой отвечают на любые вопросы, в том числе вопросы совсем новичков. +Также, ты там встретишь множество реальных пользователей Quarkus, в том числе таких же новичков как ты, некоторые из которых также смогут помочь в решении той или иной проблемы. ##### Developer Joy @@ -98,11 +99,6 @@ class MyService { Сообщество Quarkus старается так или иначе популяризировать свой продукт. На главной странице [сайта](https://quarkus.io/) можно найти все необходимые ресурсы для слежения за развитием проекта. [Блог](https://quarkus.io/blog/), [Подкасты](https://quarkus.io/insights/), [Книги](https://quarkus.io/books/) и многое другое. -#### Личный опыт -В блоге Quarkus можно найти [истории миграции на Quarkus](https://quarkus.io/blog/tag/user-story/). Почитай как-нибудь на досуге. -Хотел бы рассказать о своем опыте немного. В нашей компании разработка велась на сервлетах, сервисы собирались в WAR-архивы и запускались с помощью Wildfly. -В какой-то момент мы начали испытывать проблемы разного рода, связанные с разделением ресурсов, логгированием, метриками, и даже OOM - где из-за одного сервиса умирали все сразу. Экспертизы Spring с его Spring Boot почти ни у кого в команде не было. Появление Quarkus в нашем случае стал спасительным кругом. -Quarkus, и тесно интегрированные с ним Vert.x, [Smallrye](https://smallrye.io/), спустя нескольких лет использования вызывают у меня лишь приятные воспоминания. #### How-to старт Для того, чтобы начать писать код, достаточно зайти на страницу [Get Started](https://quarkus.io/get-started/) и следовать инструкциям. @@ -110,6 +106,12 @@ Quarkus, и тесно интегрированные с ним Vert.x, [Smallry которые подробнее расскажут как писать [REST сервисы](https://quarkus.io/guides/rest-json), в том числе [реактивно](https://quarkus.io/guides/getting-started-reactive). Также, покажут как упростить разработку в твоей любимой [IDE](https://quarkus.io/guides/ide-tooling) и многое другое. +#### Личный опыт +В блоге Quarkus можно найти [истории миграции на Quarkus](https://quarkus.io/blog/tag/user-story/). Почитай как-нибудь на досуге. +Хотел бы рассказать о своем опыте немного. В нашей компании разработка велась на сервлетах, сервисы собирались в WAR-архивы и запускались с помощью Wildfly. +В какой-то момент мы начали испытывать проблемы разного рода, связанные с разделением ресурсов, логгированием, метриками, и даже OOM - где из-за одного сервиса умирали все сразу. Экспертизы Spring с его Spring Boot почти ни у кого в команде не было. Появление Quarkus в нашем случае стал спасительным кругом. +Quarkus, и тесно интегрированные с ним Vert.x, [Smallrye](https://smallrye.io/), спустя нескольких лет использования вызывают у меня лишь приятные воспоминания. +
![developerjoy](images/icon-developerjoy.svg){ width="300" } From a4148131cecaa612692193f701fca0b331f549c7 Mon Sep 17 00:00:00 2001 From: Lasteris Date: Tue, 8 Aug 2023 15:40:18 +0300 Subject: [PATCH 5/7] Update quarkus.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit закрыл скобку --- docs/quarkus.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quarkus.md b/docs/quarkus.md index 3525091..495467e 100644 --- a/docs/quarkus.md +++ b/docs/quarkus.md @@ -2,7 +2,7 @@ [Quarkus](https://quarkus.io/) - Framework от [RedHat](https://ru.wikipedia.org/wiki/Red_Hat), взгляд на экосистему которого заставляет рассмотреть его в качестве альтернативы таким Framework'ам как Helidon (Oracle), Spring Boot (VMware), Micronaut. В отличии от остальных фреймворков, перечисленных выше, Quarkus не пошел по пути создания чего-то абсолютно уникального. -Вместо этого, он предлагает использовать уже давно существующую в рамках мира backend web-разработки реализацию спецификации [Jakarta REST (ранее известная как JAX-RS](https://jakarta.ee/specifications/restful-ws/3.1/jakarta-restful-ws-spec-3.1.html), известной как [Resteasy](https://resteasy.dev/). +Вместо этого, он предлагает использовать уже давно существующую в рамках мира backend web-разработки реализацию спецификации [Jakarta REST (ранее известная как JAX-RS)](https://jakarta.ee/specifications/restful-ws/3.1/jakarta-restful-ws-spec-3.1.html), известной как [Resteasy](https://resteasy.dev/). В сущности, это означает, что разработчикам не пришлось особенно много усилий прилагать, чтобы уйти от устаревшего формата разработки. Конечно же, это можно было сделать и с помощью Spring Boot, но количество усилий несоизмеримо. По опыту могу сказать, что типовой микросервис можно перенести c сервлетного JAX-RS на Quarkus даже за 5 минут (конечно же, это средняя температура по больнице). From 5dc4b80780f9b7d15906f600ffefcbb90e317654 Mon Sep 17 00:00:00 2001 From: Lasteris Date: Tue, 8 Aug 2023 15:46:16 +0300 Subject: [PATCH 6/7] Update quarkus.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit framework - заменено, так как в русском языке присутствует обрусевший аналог. исправлены опечатки --- docs/quarkus.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/quarkus.md b/docs/quarkus.md index 495467e..ba24e0b 100644 --- a/docs/quarkus.md +++ b/docs/quarkus.md @@ -1,6 +1,6 @@ ### Почему Quarkus ? -[Quarkus](https://quarkus.io/) - Framework от [RedHat](https://ru.wikipedia.org/wiki/Red_Hat), взгляд на экосистему которого заставляет рассмотреть его в качестве альтернативы таким Framework'ам как Helidon (Oracle), Spring Boot (VMware), Micronaut. +[Quarkus](https://quarkus.io/) - фреймворк от [RedHat](https://ru.wikipedia.org/wiki/Red_Hat), взгляд на экосистему которого заставляет рассмотреть его в качестве альтернативы таким фреймворкам как Helidon (Oracle), Spring Boot (VMware), Micronaut. В отличии от остальных фреймворков, перечисленных выше, Quarkus не пошел по пути создания чего-то абсолютно уникального. Вместо этого, он предлагает использовать уже давно существующую в рамках мира backend web-разработки реализацию спецификации [Jakarta REST (ранее известная как JAX-RS)](https://jakarta.ee/specifications/restful-ws/3.1/jakarta-restful-ws-spec-3.1.html), известной как [Resteasy](https://resteasy.dev/). В сущности, это означает, что разработчикам не пришлось особенно много усилий прилагать, чтобы уйти от устаревшего формата разработки. @@ -23,7 +23,7 @@ #### Экосистема ##### Документация -При изучении таких фоеймворков как Spring и Quarkus в первую очередь встает вопрос о документации и ее качестве. +При изучении таких фреймворков как Spring и Quarkus в первую очередь встает вопрос о документации и ее качестве. В случае Quarkus она не должна оставить изучающего равнодушным. Стоит просто зайти на [страницу](https://quarkus.io/guides/) и наслаждаться. Там ты найдешь как короткие вводные статьи для новичков о том, как использовать тот или иной фреймворк в рамках Quarkus, так и концепты внутреннего устройства проекта. Наконец, там присутствуют справочные(Reference Guide) статьи для продолжающих разработчиков. From 0bdef27b22b691e1cddace6afb564892e66ef643 Mon Sep 17 00:00:00 2001 From: Sergey Akulov Date: Wed, 9 Aug 2023 17:58:41 +0300 Subject: [PATCH 7/7] =?UTF-8?q?=D0=BF=D0=BE=D1=87=D0=B8=D1=81=D1=82=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=20=D1=81=20=D0=BE?= =?UTF-8?q?=D0=BF=D1=8B=D1=82=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit еще немного придал тексту обезличенности --- docs/quarkus.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/docs/quarkus.md b/docs/quarkus.md index ba24e0b..ac4660e 100644 --- a/docs/quarkus.md +++ b/docs/quarkus.md @@ -5,7 +5,7 @@ Вместо этого, он предлагает использовать уже давно существующую в рамках мира backend web-разработки реализацию спецификации [Jakarta REST (ранее известная как JAX-RS)](https://jakarta.ee/specifications/restful-ws/3.1/jakarta-restful-ws-spec-3.1.html), известной как [Resteasy](https://resteasy.dev/). В сущности, это означает, что разработчикам не пришлось особенно много усилий прилагать, чтобы уйти от устаревшего формата разработки. Конечно же, это можно было сделать и с помощью Spring Boot, но количество усилий несоизмеримо. -По опыту могу сказать, что типовой микросервис можно перенести c сервлетного JAX-RS на Quarkus даже за 5 минут (конечно же, это средняя температура по больнице). +Типовой микросервис можно перенести c сервлетного JAX-RS на Quarkus даже за 5 минут (конечно же, это средняя температура по больнице). #### Quarkus реактивный, даже не сомневайся @@ -106,11 +106,8 @@ class MyService { которые подробнее расскажут как писать [REST сервисы](https://quarkus.io/guides/rest-json), в том числе [реактивно](https://quarkus.io/guides/getting-started-reactive). Также, покажут как упростить разработку в твоей любимой [IDE](https://quarkus.io/guides/ide-tooling) и многое другое. -#### Личный опыт +#### Истории миграций В блоге Quarkus можно найти [истории миграции на Quarkus](https://quarkus.io/blog/tag/user-story/). Почитай как-нибудь на досуге. -Хотел бы рассказать о своем опыте немного. В нашей компании разработка велась на сервлетах, сервисы собирались в WAR-архивы и запускались с помощью Wildfly. -В какой-то момент мы начали испытывать проблемы разного рода, связанные с разделением ресурсов, логгированием, метриками, и даже OOM - где из-за одного сервиса умирали все сразу. Экспертизы Spring с его Spring Boot почти ни у кого в команде не было. Появление Quarkus в нашем случае стал спасительным кругом. -Quarkus, и тесно интегрированные с ним Vert.x, [Smallrye](https://smallrye.io/), спустя нескольких лет использования вызывают у меня лишь приятные воспоминания.