Конспекты
Смарт-конспекты YouTube-видео — ключевые идеи и инсайты без необходимости смотреть часовые ролики
Загрузка...
Смарт-конспекты YouTube-видео — ключевые идеи и инсайты без необходимости смотреть часовые ролики
Разбор архитектуры GigaIDE: как собрать свою IDE, настроить поддержку Spring и SQL через BNF-грамматики и внедрить AI-ассистента GigaCode.
🎯 О чём этот конспект: Подробный разбор архитектуры, процесса сборки и кастомизации GigaIDE — российской среды разработки от Сбера. В видео Владимир Ярославский (разработчик GigaIDE) объясняет, как на базе IntelliJ Community Edition создать полноценную Enterprise-платформу с поддержкой Spring, SQL и AI-ассистента.
👤 Кому будет полезно: Вайбкодерам, Java-разработчикам, системным инженерам и всем, кто ищет замену продуктам JetBrains в условиях ограничений.
✨ Что получите: Пошаговый алгоритм сборки собственной IDE из исходников, понимание структуры плагинов IntelliJ и методику реализации поддержки кастомных языков через BNF-грамматики.
Контекст: После ухода JetBrains с российского рынка возникла необходимость в суверенной IDE, поддерживающей актуальные версии JDK (21+) и фреймворков. Команда Сбера выбрала путь создания форка на базе IntelliJ IDEA Community Edition (лицензия Apache 2.0). Продукт разделен на два направления: Cloud-версия (на базе VS Code) и Desktop-версия (на базе IntelliJ). Десктопная GigaIDE — это ядро Community + 70 отобранных плагинов + собственные закрытые разработки для поддержки Spring и баз данных.
Выгода: Полная независимость от обновлений JetBrains, наличие встроенного AI-ассистента GigaCode и поддержка специфических Enterprise-инструментов «из коробки».
Как применить:
Результат: Масштабируемая платформа, которую можно развивать независимо от вендора.
Контекст: Чтобы кастомизировать IDE (менять Splash-screen, названия, предустановленные настройки), нельзя просто взять бинарник. Нужно собирать проект целиком. Процесс требует специфической настройки окружения и учета нюансов зависимостей Android-проекта, который вшит в исходники IntelliJ.
Выгода: Возможность создавать брендированные сборки IDE с предустановленным набором инструментов для всей команды.
Как применить:
IntelliJ IDEA Project Structure и Grammar-Kit.Service Messages в локальный репозиторий Maven. Скачайте специальную JetBrains Runtime (JBR) для сборки.# Пример команды для сборки плагина внутри проекта
./gradlew buildPluginРезультат: Готовый дистрибутив IDE в папке out, готовый к установке на ОС (Windows, Linux, macOS).
Контекст: Одной из самых сложных задач была замена Database Navigator из Ultimate-версии. Разработчики использовали BNF (Backus-Naur Form) для описания грамматики SQL. Основная проблема — BNF написан «для людей», а генератору кода (Grammar-Kit) нужны строгие правила без левой рекурсии и с оптимизированными предиктами.
Выгода: Возможность добавить в IDE поддержку любого проприетарного языка или специфического диалекта SQL с подсветкой, навигацией и рефакторингом.
Как применить:
.bnf с правилами языка. Для SQL это около 2500 правил.row_value_predicate), создайте общее стартовое правило, чтобы парсер не перебирал варианты по 10 раз.Grammar-Kit для генерации Java-кода парсера и лексера.ParserDefinition в plugin.xml.<extensions defaultExtensionNs="com.intellij">
<fileType name="MySQL" implementationClass="com.sber.ide.sql.MySqlFileType" fieldName="INSTANCE" extensions="mysql"/>
<lang.parserDefinition language="MySQL" implementationClass="com.sber.ide.sql.MySqlParserDefinition"/>
</extensions>Результат: Полноценная поддержка языка с PSI-деревом (Program Structure Interface), позволяющая делать глубокий анализ кода.
Контекст: При сборке GigaIDE команда столкнулась с тем, что многие Open Source плагины заброшены и несовместимы с новыми версиями API IntelliJ. Также возникали критические ошибки компилятора (StackOverflowError) при обработке гигантских сгенерированных классов парсера.
Выгода: Решение проблем совместимости и ускорение работы IDE за счет правильного управления плагинами.
Как применить:
private в BNF для промежуточных правил. Это уменьшит количество генерируемых PSI-классов и ускорит сборку в 2 раза.View PSI Structure в меню Tools (нужно включить внутренний режим IDE), чтобы видеть, как дерево разложило ваш код в реальном времени.Результат: Стабильная работа IDE даже с сотней установленных плагинов.
В: Чем GigaIDE отличается от обычной IntelliJ IDEA Community?
О: GigaIDE включает в себя предустановленный AI-ассистент GigaCode, поддержку Spring (которой нет в Community), расширенные инструменты для работы с SQL и базами данных, а также более 70 проверенных на уязвимости плагинов для DevOps и тестирования.
В: Можно ли использовать GigaIDE для фронтенд-разработки (JS/TS)?
О: На текущий момент (версия Community/Backend) фокус сделан на Java/Kotlin. Однако поддержка Fullstack (JS, TS, Python) активно разрабатывается и ожидается в версии Fullstack к концу 2024 года.
В: Безопасно ли использовать GigaIDE в закрытом контуре компании?
О: Да, GigaIDE включена в реестр российского ПО. Внутри банковского контура используются дополнительные плагины для мониторинга ошибок и управления доступом, но внешняя версия не собирает пользовательский код. Большая часть кода базируется на открытом Open Source.
В: Как бороться с тормозами, если в IDE установлено слишком много плагинов?
О: В GigaIDE реализована система профилей. Вы можете отключить ненужные группы плагинов (например, для автоматизации тестирования, если вы разработчик). Также физическое удаление папок плагинов из директории plugins полностью исключает их влияние на индексацию.
В: Сложно ли перенести свой плагин с IntelliJ на GigaIDE?
О: Практически нет. GigaIDE сохраняет совместимость с API IntelliJ Platform. Основная сложность может возникнуть только при миграции между мажорными версиями платформы (например, с 2023.x на 2024.x), где JetBrains часто меняет внутренние интерфейсы.
Конспект создан на основе видео «История GigaIDE глазами разработчика» канала JPoint. Все права на оригинальный материал принадлежат авторам. Источник: https://www.youtube.com/watch?v=GNvBtOWDrSs