🎯 О чём этот конспект: В конспекте разбирается история создания, архитектура и практические аспекты использования GigaIDE — российской среды разработки от Сбера. Рассматриваются различия между Community и Ultimate версиями, процесс сборки IDE из исходников, создание собственных плагинов и реализация поддержки языков (SQL, Spring) с помощью BNF-грамматик.
👤 Кому будет полезно: Вайбкодерам, Java-разработчикам, системным архитекторам и всем, кто ищет альтернативу продуктам JetBrains в условиях ограничений, а также разработчикам плагинов для IntelliJ Platform.
✨ Что получите: Пошаговый алгоритм сборки собственной IDE, понимание работы парсеров языков через Grammar-Kit и готовые лайфхаки по оптимизации производительности сложных грамматик.
1. Архитектура и выбор платформы GigaIDE
Контекст: После ухода JetBrains с российского рынка возникла необходимость в суверенном инструменте, поддерживающем актуальные версии JDK (21+) и фреймворков. Команда Сбера выбрала путь создания форка на базе IntelliJ IDEA Community Edition (лицензия Apache 2.0). Это позволило сохранить мощный редактор и поддержку систем контроля версий, добавив специфические плагины для Enterprise-разработки. Важно различать: существует десктопная версия (от Сбера) и облачная (от СберТеха на базе VS Code).
Выгода: Возможность легально использовать привычный инструмент с обновлениями, поддержкой новых фич Java и встроенным AI-ассистентом без необходимости покупки лицензий JetBrains.
Как применить:
Шаг 1: Выбор базы — Используйте IntelliJ Community как ядро. Она позволяет модифицировать Splash-screen, названия и состав плагинов.
Шаг 2: Кастомизация состава — В GigaIDE включено более 70 отобранных плагинов (DevOps, тестирование, работа с БД). Вы можете собрать свой дистрибутив, удалив ненужные папки из директории plugins/ для ускорения запуска.
Шаг 3: Использование AI — В дистрибутив встроен GigaCode, который работает «из коробки» (генерация тестов, документации, исправление ошибок).
2. Пошаговая сборка IDE из исходников
Контекст: Чтобы создать брендированную версию IDE (изменить логотипы, вшить плагины), недостаточно просто скачать бинарник. Нужно собрать проект целиком. Процесс требует специфической настройки окружения и учета зависимостей, которые не всегда очевидны из стандартной документации.
Выгода: Полный контроль над безопасностью и функционалом среды разработки внутри корпоративного контура.
Как применить:
Шаг 1: Подготовка окружения — Скачайте исходники IntelliJ Community с GitHub. Дополнительно потребуется скачать около 640 МБ зависимостей проекта Android.
Шаг 2: Установка плагинов и либ — Установите в базовую IDE два необходимых плагина для разработки (обычно предлагаются при открытии проекта). Добавьте библиотеку Service Messages в локальный Maven-репозиторий.
Шаг 3: Конфигурация JDK — Используйте специальную версию JDK, указанную в инструкции к исходникам (JBR — JetBrains Runtime).
Шаг 4: Запуск сборки — Запустите конфигурацию сборки через Gradle. Процесс занимает от 30 минут до 1 часа в зависимости от мощности CPU. Результат будет в папке out/artifacts.
3. Разработка поддержки языков через BNF и Grammar-Kit
Контекст: Для реализации поддержки SQL, Spring или GPQL в GigaIDE используется механизм парсинга текста в PSI-дерево (Program Structure Interface). Основная сложность — перенос человекочитаемых спецификаций BNF (Backus-Naur Form) в программный код. Например, грамматика SQL содержит более 2500 правил, что в 4 раза больше, чем у Java.
Выгода: Возможность реализовать автодополнение, подсветку синтаксиса и рефакторинг для любого проприетарного или редкого языка.
Как применить:
Шаг 1: Описание грамматики — Создайте .bnf файл с правилами языка.
Шаг 2: Генерация парсера — Используйте плагин Grammar-Kit. Он сгенерирует Java-классы парсера и лексера на основе вашего BNF.
Шаг 3: Регистрация языка — В plugin.xml укажите новый язык и привяжите его к ParserDefinition.
4. Оптимизация производительности сложных грамматик
Контекст: При работе с огромными грамматиками (как SQL) стандартная генерация может приводить к тормозам или ошибкам компиляции (StackOverflowError). Это происходит из-за глубокой вложенности правил и повторных вызовов одних и тех же парсеров.
Выгода: Ускорение сборки плагина в 2 раза и плавный UI при редактировании больших файлов.
Как применить:
Шаг 1: Вынос общего множителя — Если несколько правил начинаются с одной и той же сущности, вынесите её «за скобки» в BNF, чтобы парсер не переразбирал её многократно.
Шаг 2: Использование Private-правил — В Grammar-Kit пометьте вспомогательные правила ключевым словом private. Для них не будут создаваться отдельные PSI-классы, что уменьшит количество файлов и нагрузку на компилятор.
Шаг 3: Отладка через Live Preview — Используйте встроенный в Grammar-Kit инструмент Live Preview для проверки разбора текста без перезапуска всей IDE.
5. Управление плагинами в Enterprise-среде
Контекст: В GigaIDE реализована система профилей плагинов. Это позволяет отключать пачки инструментов (например, для тестировщиков или DevOps), чтобы не перегружать память разработчика. Также решена проблема конфликтов ID при обновлении Open Source плагинов.
Выгода: Быстрый запуск IDE и отсутствие конфликтов версий при использовании кастомных сборок.
Как применить:
Шаг 1: Уникальные ID — При форке Open Source плагина всегда меняйте его plugin id в plugin.xml. Это предотвратит попытки IDE обновиться из официального маркетплейса на несовместимую версию.
Шаг 2: Профилирование — Используйте механизм Toggles (или аналоги), чтобы массово включать/выключать функционал в зависимости от роли пользователя.
Шаг 3: Мониторинг — Реализуйте технический плагин для сбора StackTrace ошибок внутри IDE, чтобы оперативно фиксить баги в кастомных плагинах.
FAQ
В: Можно ли в GigaIDE вернуть старый интерфейс (Classic UI)? О: На данный момент это затруднительно. Платформа следует за развитием IntelliJ, где новый UI стал стандартом. Плагины для возврата к старому интерфейсу постепенно перестают поддерживаться самой JetBrains.
В: Поддерживает ли GigaIDE разработку под мобильные устройства (Android)? О: Базовая версия ориентирована на Backend (Java/Kotlin). Для Android лучше использовать Android Studio, хотя теоретически в GigaIDE можно подключить соответствующие Open Source плагины.
В: Как бороться с ошибкой StackOverflowError при компиляции плагина с огромной грамматикой? О: Автор рекомендует два пути: либо переключиться на более современную JDK (например, JDK 21), либо оптимизировать BNF, пометив часть правил как private, чтобы сократить количество генерируемых классов.
В: Безопасно ли использовать GigaIDE в закрытом контуре компании? О: Да, GigaIDE включена в реестр российского ПО. 80% кода — это открытый исходный код IntelliJ Community, который можно проаудировать. Сберовские плагины (Spring, SQL) закрыты, но проходят внутренние проверки безопасности.
В: Планируется ли поддержка Python и Frontend-стека? О: Да, в версии GigaIDE Fullstack (ожидается к концу года) будет добавлена поддержка JavaScript, TypeScript и Python на уровне, близком к платным версиям зарубежных IDE.
Конспект создан на основе видео «GigaIDE: история глазами разработчика» канала JPoint. Все права на оригинальный материал принадлежат авторам.Источник: https://www.youtube.com/watch?v=GNvBtOWDrSs