Всем привет! На связи команда Explyt Spring. На этот раз как следует из названия будем говорить о поддержке Quarkus. На первый взгляд может показаться странным, причем тут Spring плагин и Quarkus. Но если разобраться более детально, то Spring также имеет поддержку Java EE аннотаций и к тому же поддержка Dependency Injection является одной из сильной сторон нашего плагина. Да и логика DI в Quarkus сильно проще чем в Spring, можно убедиться в этом прочитав официальную документацию, поэтому можно легко переиспользовать все наши текущие наработки и добавить поддержку Quarkus DI в наш плагин. И это также позволило для него переиспользовать многие другие наши «фичи», о чем будет рассказано ниже.
Тем более, как показывает практика, спрос на его поддержку имеет место быть — нас про это спрашивали на последнем Joker, а бесплатных плагинов, которые ее предоставляют толком нет. Есть конечно плагин от команды Red Hat, но он добавляет весьма простую поддержку и в основном это проперти и инспекции, а полноценная поддержка Quarkus есть разве что в IDEA Ultimate.
Что получилось
Поддержка Quarkus DI работает на основе анализа кода проекта. Достаточно просто открыть любой Quarkus проект и вы сразу увидите подсветку DI - как в IDEA Ultimate. Да, такой вариант как мы рассказывали в одной из наших статей, не на 100% позволяет покрыть все случаи, чего также не делает и IDEA Ultimate, но он гораздо проще для пользователей, в отличии от варианта когда мы пытаемся переиспользовать логику Spring, о чем мы тоже рассказывали. Spring DI в нашем плагине может работать в обоих режимах, как на основе анализа кода, так и более точный вариант с «патчингом» его байткода.
Откроем для примера проект realworld‑api‑quarkus:

Как можем увидеть, сразу работает подсветка DI, где мы можем переходить к декларации конкретного типа, его использованию и обратно. Также работают и другие навигации, если «бин» объявлен через Produces аннотацию, через метод или поле класса.
Поддержка AOP
Также доступна поддержка Quarkus AOP: интерцепторов и декораторов.

Доступна навигация в обе стороны. Для декораторов аналогично:

В результате мы сразу видим какие методы или классы имеют «обертку» в виде декоратора или интерцептора.
Поддержка Web
Аналогично Spring'у доступна поддержка Web: мы можем попробовать вызвать метод REST контроллера через swagger или сгенерировать open-api документацию. О чем мы подробно рассказывали в одной из предыдущих статей. Мы адаптировали уже готовую логику под JAX‑RS аннотации — поэтому весь текущий веб функционал нашего плагина доступен также и для Quarkus, включая тул окно для поиска Endpoints:

Наш веб клиент, основанный на swagger также доступен — лайн маркер с иконкой «Run» напротив имени метода.
Еще можно попробовать вызвать какой нибудь сторонний сервис прямо из кода, прописав абсолютный URL в Path аннотации:


И в хорошо привычном интерфейсе Swagger UI мы видим результат выполнения запроса. В данном случае по URL https://habrastorage.org/files/df0/491/ba4/df0491ba483b4446bc9261be83f69ebd.png была получена картинка.
Напоминаем, что все это также доступно и для Spring. В случае обнаружения каких либо проблем вы всегда можете завести issue на GitHub.
Заключение
Скачать последнюю версию плагина с поддержкой Quarkus можно тут или напрямую с GitHub Releases.
Приглашаем вас попробовать наш плагин, а также делиться своими отзывами и предложениями. Ваша обратная связь поможет нам сделать инструмент более полезным и удобным. Также напоминаем, что плагин имеет открытый исходный код, который доступен на GitHub.
Будем благодарны за ваши вопросы и идеи: GitHub Issues, Telegram-чат, а также личные сообщения в нашем профиле на Habr.
dyadyaSerezha
В самом начале статьи: Explyt Spring без линка, а Quarkus с линком, хотя он, кажется, известен гораздо, гораздо больше, а статья про Explyt Spring. Почему?
grisha9 Автор
Спасибо за замечание - линк добавил.
Потомучто в настоящий момент поддержка Quarkus является частью Explyt Spring Plugin.
Почему так - мы постарались объяснить в самом первом абзаце.
И далее тоже - что это позволяет переиспользовать многие из наших "фич" также и для Quarkus
dyadyaSerezha
Посмотрел вашу страничку, хорошо бы добавить таблицу со сравнением возможностей вас и конкурентов, включая Идею.