15 July 2024

Обзор GigaIDE от СБЕРа | Российская IntelliJ IDEA | Поддержка Spring вместе с Amplicode

Недавно СБЕР выпустил GigaIDE – новую IDE для Java, Kotlin и не только. Это событие вызвало бурные обсуждения среди разработчиков. Чаще всего звучали следующие вопросы:

  1. Это просто пересобранная версия IntelliJ IDEA CE?
  2. Если нет, что нового предлагает GigaIDE?
  3. Поддерживает ли она работу с базами данных и Spring?

Сегодня отвечу на эти и другие вопросы, которые могут возникнуть у тех, кто заинтересовался GigaIDE.

Обзор также доступен в формате видео на YouTube:

GigaIDE в двух словах

На сайте GitVerse можно увидеть, что IDE будет доступна в двух форматах: Desktop и Cloud.

Cloud-версию пока можно получить только по запросу на ранний доступ.

Но нас, как Java-разработчиков, больше интересует Desktop версия, и сейчас объясню почему.

Cloud версия основывается на VS Code, а Desktop версия — на IntelliJ IDEA и PyCharm.

Благодаря такой мощной базе в виде IntelliJ IDEA, разработчики на GigaIDE сразу получают поддержку Java и Kotlin. К тому же, в комплекте с GigaIDE идет еще 70 дополнительных инструментов, или простыми словами - предустановленных плагинов.

Однако, из описания на сайте сложно понять, что мы, как разработчики, привыкшие к IntelliJ IDEA, потеряем или приобретем, осуществив переход на GigaIDE. Давайте разбираться!

Установка и первый запуск GigaIDE

Для получения доступа к инструкции по установке, нужно пройти авторизацию на GitVerse через cloud.ru или Сбер ID.

На просторах интернета также можно найти ссылки для прямого скачивания установочных образов. Установка GigaIDE проста и поддерживается на основных операционных системах. Если вы сидите на MacOS, то не забудьте после установки запустить следующую команду:

xattr -c /Applications/GIGA\ IDE\ CE\ 2024.1.1.app

После запуска GigaIDE вы заметите, что она довольно сильно похожа на IntelliJ IDEA, что неудивительно, так как она базируется на open-source IDE от Jetbrains – IntelliJ IDEA Community Edition.

Следовательно, все возможности, которые у нас есть в IntelliJ IDEA Community Edition, также доступны и в GigaIDE! Но вот что это за возможности?

Ликбез: IntelliJ IDEA CE vs Ultimate

IntelliJ IDEA выпускается в двух версиях: платная Ultimate и бесплатная Community. Ultimate включает дополнительные плагины, недоступные в Community версии. Эти плагины делают Ultimate более функциональной, но основные возможности, такие как поддержка Java и Kotlin, рефакторинг и инспекции, и многое другое доступны и в той и в другой версиях.

  1. Поддержка Java и Kotlin в обеих версиях включает подсветку кода, выявление синтаксических ошибок и автодополнения.

  1. Обе IDE предлагают рефакторинг кода, позволяя переименовывать методы, классы и пакеты, а также выносить и инлайнить методы.

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

  1. Обе версии поддерживают Git.

  1. И наиболее популярные системы сборки Maven и Gradle.

  1. Также обе версии содержат дебаггер. Хотя в Ultimate он более продвинутый и включает поддержку реактивного стека.

  1. А вот работать с базами данных из коробки может только IntelliJ IDEA Ultimate.

В Community Edition такой возможности нет, но можно получить схожую функциональность, если установить плагин Database Navigator.

  1. Также, в состав Community Edition не входит HTTP клиент.

  1. Пожалуй самое важное, чего нет в Community Edition, и про что я уже отчасти упоминал – отсутствие поддержки Spring Framework. Опять же, сейчас поддержку Spring в Community Edition получить проще простого, достаточно установить Amplicode, но из коробки он не предустановлен.

Кажется, что это основные фичи, без которых современную IDE трудно представить и получается, что как минимум первые шесть фич точно есть в GigaIDE, а вот с наличием остальных нужно разбираться отдельно.

Возможности IntelliJ IDEA CE IntelliJ IDEA Ultimate
1. Java/Kotlin + +
2. Рефакторинги + +
3. Инспекции + (есть фреймворко-ориентированные) +
4. Git + +
5. Gradle/Maven + +
6. Debugger + (есть поддержка Reactive Streams) +
7. Database Tools + - (но можно установить аналог – плагин Database Navigator)
8. HTTP Client + -
9. Spring Framework + - (но можно установить аналог – плагин Amplicode)

70 плагинов в GigaIDE

Давайте посмотрим, какие 70 плагинов входят в состав GigaIDE и позволяют ли они нам закрыть в том числе потребность в тех фичах, которых не хватает в IntelliJ IDEA CE по сравнению с Ultimate. А может быть даже есть что-то такое крутое, чего нет в Ultimate?

Первое, что бросается в глаза, — это предустановленный плагин Database Navigator, который обеспечивает поддержку работы с базами данных. Отлично!

Присутствует также плагин JSONPath, что приятно, так как он облегчает работу с JSON-файлами.

Предустановлены плагины для Lombok, Quarkus и даже Spring. Позже мы запустим проект на Spring Boot и проверим их в действии.

Есть множество плагинов для поддержки различных языков и типов файлов, что тоже хорошо.

Особое внимание разработчики GigaIDE уделяют функциям, связанным с искусственным интеллектом. На лендинге упоминается GigaChat, он здесь также установлен, как и несколько, по всей видимости, вспомогательных плагинов связанных с машинным обучением. По сути своей, GigaChat является альтернативой плагину AI Assistant от JetBrains.

Некоторые плагины предназначенные для фронтенд-разработчиков.

MapStruct плагин и VCS-плагины, знакомые по IntelliJ IDEA CE.

Особо стоит отметить LSP плагин, разработанный командой RedHat, он позволяет IDE поддерживать любой язык программирования, для которого есть language server.

В целом, это основные плагины. Я, конечно, пропустил многие, но большинство из них также входят в состав IntelliJ IDEA CE или слишком узкоспециализированы и не так часто используются Java и Spring разработчиками.

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

Возвращаясь к сравнению, имеется Marketplace, такой же, как в IntelliJ IDEA, где можно установить любые привычные плагины. Будь то Docker, доступный в официальном маркетплейсе JetBrains, или Amplicode, для которого потребуется настроить кастомный маркетплейс.

Итак, GigaIDE от СБЕРа из коробки закрывает 8 из 9 необходимых возможностей IDE, которые мы ожидаем увидеть.

Возможности IntelliJ IDEA CE IntelliJ IDEA Ultimate
1. Java/Kotlin + +
2. Рефакторинги + +
3. Инспекции + (есть фреймворко-ориентированные) +
4. Git + +
5. Gradle/Maven + +
6. Debugger + (есть поддержка Reactive Streams) +
7. Database Tools + - (но можно установить аналог – плагин Database Navigator)
8. HTTP Client + -
9. Spring Framework + - (но можно установить аналог – плагин Amplicode)

Давайте проверим на практике, насколько хорошо она это делает.

Работа с базами данных

Очевидно, что функции, которые есть в IntelliJ IDEA CE, будут без проблем работать в GigaIDE. Поэтому, чтобы не растягивать эту статью, проверим только возможность работы с базами данных и поддержку Spring Framework.

Привычной панели с иконкой базы данных сходу обнаружить не получилось. Для того чтобы до неё добраться нужно найти пункт "Database Navigator" в верхней панели и выбрать "Database Browser".

По сравнению с IntelliJ IDEA Ultimate, выбор поддерживаемых СУБД здесь не такой обширный. Однако вкладка "Custom" даёт надежду на поддержку дополнительных баз данных, не упомянутых в списке.

Как и в IntelliJ IDEA Ultimate, панель с настройками в GigaIDE действительно впечатляет своим функциями. Кажется, что можно настроить практически всё что угодно.

Давайте настроим простое подключение к PostgreSQL, поднятому локально в Docker, и убедимся, что всё работает как ожидается.

Интерфейс немного отличается, но те функции, к которым я привык, такие как просмотр структуры базы данных и выполнение SQL-запросов прямо из IDE, здесь доступны.

В общем, поддержка работы с базами данных в некоторой степени имеется.

Ищем поддержку Spring в GigaIDE

Для проверки поддержки Spring откроем в GigaIDE популярное демо-приложение Spring Petclinic. В файле application.properties нет подсветки и автодополнений, в отличие от Ultimate.

Признаюсь, пока я тестировал GigaIDE, иногда подсветка свойств появлялась, но стабильной работы добиться не удалось, как и запечатлеть эту фичу на видео. Эта функция должна быть доступна благодаря плагину Spring Boot Assistant, но, видимо, он работает не очень стабильно.

В JPA-сущностях отсутствуют gutter-иконок, которые позволяют увидеть информацию о классе и его атрибутах в контексте фреймворка.

В контроллере GigaIDE показывает, что все эндпоинты не используются, что неверно, так как они используются, но не нами напрямую, а фреймворком. Это поведение схоже с IntelliJ IDEA CE.

В Spring Data репозиториях нет подсветки JPQL, gutter-иконок и автодополнений для методов на основе модели данных. Подсказки от ИИ присутствуют, но работают не всегда корректно.

Поля аннотированные @Autowired, в классах с тестами отмечены как неиспользуемые, что также неверно.

Наконец, зайдём в docker-compose.yaml файл. Нет gutter-иконок, но есть предложение установить Docker плагин. Почему-то он сразу не предустановлен, что немного странно.

Однако, установив плагин, мы получаем то же самое, что и в Ultimate IDE.

Одним словом, поддержки Spring на данный момент в GigaIDE практически нет. Забегая вперёд, можно сказать, что это не такая уж и большая проблема, так как есть Amplicode, и про него я расскажу в следующей главе. К тому же, по заверениям разработчиков GigaIDE, поддержка Spring должна появиться к концу 2024 года. Что ж, будем ждать!

GigaIDE + Amplicode: Включаем поддержку Spring и не только

Поскольку GigaIDE основана на IntelliJ, мы можем без проблем установить в неё Amplicode. Для этого откроем настройки, перейдём в секцию плагинов и:

  1. Нажмём на шестерёнку
  2. Выберем пункт "Manage Plugin Repositories"
  3. Скопируем ссылку на репозиторий из документации Amplicode
  4. Вставим её в GigaIDE.

Остается только найти Amplicode в маркетплейсе, нажать кнопку "Install" и перезапустить GigaIDE.

Всё, теперь все возможности Amplicode доступны и в GigaIDE. Я не буду подробно останавливаться на них, вы можете посмотреть любое видео на нашем YouTube-канале, и все показанные в нём фичи будут доступны точно так же и в GigaIDE.

Лишь в кратце перечислю то, чего раньше не было:

  • Свойства теперь подсвечиваются, а начав писать название нужного свойства, появляется автокомплишн.

  • Теперь напротив названия класса JPA сущности есть две gutter-иконки от Amplicode. Одна анализирует связи текущего объекта с другими сущностями, репозиториями и DTO (1), а вторая позволяет обращаться к наиболее популярным действиям над сущностями (2).

  • Все эндпоинты контроллера корректно подсвечиваются как используемые. Доступны две gutter-иконки от Amplicode с необходимыми действиями для контроллера (1), а также бин-навигацией с предпросмотром кода (2), которая, на мой взгляд, даже круче, чем в Ultimate!

  • В Spring Data репозиториях теперь есть подсветка JPQL, два геттера и подсказки при написании методов репозитория на основе информации о модели данных.

  • Autowired бины в тестах теперь не подсвечиваются как неиспользуемые.

  • В Docker Compose файле появилась возможность сгенерировать различные сервисы, используя панель Amplicode Designer.

Кстати, эта же панель доступна во всех файлах, которые мы смотрели ранее. С её помощью можно сгенерировать новые элементы для текущего файла или отредактировать существующие.

  • Наконец, вы также можете найти панель Amplicode Explorer, которая позволяет проанализировать приложение в контексте используемых технологий.

Подводя итог, выбирайте сами, где вам использовать Amplicode — в IntelliJ IDEA Community, которая всё ещё доступна для скачивания из РФ, в GigaIDE от СБЕРа или в IntelliJ IDEA Ultimate. Amplicode работает на всех IDEA-совместимых средах разработки. А если вы заметите, что какая-то из фич работает некорректно, пожалуйста, напишите нам в телеграм-чат, и мы постараемся исправить проблему как можно быстрее.

Более подробно про основные возможности Amplicode я рассказывал в отдельном видео:

Заключение

Подводя итог, можно отметить следующие положительные аспекты GigaIDE. Российский вендор собрал open-source версию IntelliJ IDEA, интегрировал в неё десятки плагинов, в том числе "воскресив" некоторые из них из пепла, что было бы невозможно сделать самостоятельно без серьёзных трудозатрат и экспертизы.

К минусам можно отнести не совсем полную свободу скачивания, всё-таки нужен Сбер или Cloud ID, а также пока что полное отсутствие поддержки Spring. Но, как я уже упоминал, и первый, и второй минусы можно нивелировать, воспользовавшись прямыми ссылками для скачивания GigaIDE и установив Amplicode в качестве главного инструмента для поддержки Spring.