Обзор GigaIDE от СБЕРа | Российская IntelliJ IDEA | Поддержка Spring вместе с Amplicode
Недавно СБЕР выпустил GigaIDE — новую IDE для Java, Kotlin и не только. Это событие вызвало бурные обсуждения среди разработчиков. Чаще всего звучали следующие вопросы:
Это просто пересобранная версия IntelliJ IDEA CE?
Если нет, что нового предлагает GigaIDE?
Поддерживает ли она работу с базами данных и 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, рефакторинг, инспекции и многое другое доступны и в той и в другой версиях.
Поддержка Java и Kotlin в обеих версиях включает подсветку кода, выявление синтаксических ошибок и автодополнения.
Обе IDE предлагают рефакторинг кода, позволяя переименовывать методы, классы и пакеты, а также выносить и инлайнить методы.
Инспекции и подсказки по улучшению кода также присутствуют и там и там, хотя в Ultimate их больше и есть специфичные именно для фреймворков, таких как Spring.
Обе версии поддерживают Git.
И наиболее популярные системы сборки Maven и Gradle.
Также обе версии содержат дебаггер. Хотя в Ultimate он более продвинутый и включает поддержку реактивного стека.
А вот работать с базами данных из коробки может только IntelliJ IDEA Ultimate.
В Community Edition такой возможности нет, но можно получить схожую функциональность, если установить плагин Database Navigator.
Также в состав Community Edition не входит HTTP клиент.
Пожалуй, самое важное, чего нет в Community Edition, и про что я уже отчасти упоминал — отсутствие поддержки Spring Framework. Опять же, сейчас поддержку Spring в Community Edition получить проще простого, достаточно установить Amplicode, но из коробки он не предустановлен.
Кажется, что это основные фичи, без которых современную IDE трудно представить, и получается, что как минимум первые шесть фич точно есть в GigaIDE, а вот с наличием остальных нужно разбираться отдельно.
Возможности | IntelliJ IDEA Ultimate | IntelliJ IDEA Community |
1. Java/Kotlin | + | + |
2. Рефакторинги | + | + |
3. Инспекции | + | + |
4. Git | + | + |
5. Gradle/Maven | + | + |
6. Debugger | + | + |
7. Database Tools | + | — |
8. HTTP Client | + | - |
9. Spring Framework | + | — |
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, которые мы ожидаем увидеть.
Возможности | Giga IDE |
1. Java/Kotlin | + |
2. Рефакторинги | + |
3. Инспекции | + |
4. Git | + |
5. Gradle/Maven | + |
6. Debugger | + |
7. Database Tools | + |
8. HTTP Client | - |
9. Spring Framework | + |
Давайте проверим на практике, насколько хорошо она это делает.
Работа с базами данных
Очевидно, что функции, которые есть в 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. Для этого откроем настройки, перейдём в секцию плагинов и:
Нажмём на шестерёнку
Выберем пункт «Manage Plugin Repositories»
Скопируем ссылку на репозиторий из документации Amplicode
Вставим её в 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.
Делитесь своим опытом использования GigaIDE в комментариях, возможно, я не уделил должного внимания тем возможностям, которыми вы пользуетесь чаще всего. Будет интересно почитать!