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

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

  1. Это просто пересобранная версия IntelliJ IDEA CE?

  2. Если нет, что нового предлагает GigaIDE?

  3. Поддерживает ли она работу с базами данных и Spring?

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

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

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

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

cc04e0f5b13e3274b2d57643ecadf406.png

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

05d7d7ceb3ddb8dd857b97f433e72d4f.png

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

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

03e1e89e2f7bd5b27e62320d111a8825.png

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

c55c5a05d711f93c2a437d49385331de.png

Однако из описания на сайте сложно понять, что мы, как разработчики, привыкшие к 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.

5b32c726841887c233bcea67a9192d57.png

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

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

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

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

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

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

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

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

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

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

    fa727369078032be7b1041fb2e952607.png

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

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

    4aafdc7386e92bb6b7aa68a8262c813d.png
  9. Пожалуй, самое важное, чего нет в 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

+
(есть поддержка 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, который обеспечивает поддержку работы с базами данных. Отлично!

1bcbe1f6cfaca7201cc6a6591aa30de1.png

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

909a3d8167708a66b83c7b4050a905b7.png

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

01047b0c5815dd9c3940c976d304d2a5.png

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

aa45f6258ad4fe43387fdb500c0eb586.png

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

d1cda0a6d8ac814627b104d4865c179d.png

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

a5a6186ecf9e0474e9e4dcf021216369.png

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

3934407158101899da9d240ca754308c.png

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

c28b600709251263db0222063fb67e7f.png

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

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

dc9ee3bbd11e7a47bc728a3a03db7523.png

Возвращаясь к сравнению, имеется 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

+
(предустановлен Database Navigator)

8. HTTP Client

-

9. Spring Framework

+
(предустановлены Spring и Spring Assistant)

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

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

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

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

99234d9c89437dc2161101133a8f1e51.png

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

604054677efe08c002f66dca1044a57f.png

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

44183623626c81809f8a48a5087f47fe.png

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

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

9099de0c4bfbc92236f07e9258818a15.png

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

Проверка поддержки Spring в GigaIDE

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

a0bb4df1177093558a1b8f375573b1a4.png

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

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

b16666be4a5b6ff916e293ac99e3b53b.png

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

fe655a70044dd0cbda90f208fcc3f4e1.png

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

256444fbd04365f384b38cc0456f62e5.png

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

2e9e3441a3c5e5c3ecce025a470deca1.png

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

8050fcff2a9595460a37f475c516a6ae.png

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

83739f98031c4785383ef397b884cc8d.png

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

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

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

  1. Нажмём на шестерёнку

  2. Выберем пункт «Manage Plugin Repositories»

  3. Скопируем ссылку на репозиторий из документации Amplicode

  4. Вставим её в GigaIDE

979112019b59a372e0af0b75121c9485.png

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

775923bf96203401d89d062e7db64aeb.png

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

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

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

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

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

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

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

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

    fa22a7a36d5866664f47918fb4f9dcd9.png

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

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

    a7183d6a1d36fe5315dfc222d51d9cda.png

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

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

Заключение

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

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

Делитесь своим опытом использования GigaIDE в комментариях, возможно, я не уделил должного внимания тем возможностям, которыми вы пользуетесь чаще всего. Будет интересно почитать!

© Habrahabr.ru