Как жить без IntelliJ IDEA? Часть №1. Собери сам

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

На российском рынке сложилась сложная ситуация с IDE для Java-разработчиков. Новости, связанные с ограничением скачивания IntelliJ IDEA Ultimate, недоступностью JetBrains маркетплейса и блокировкой лицензий, которые использовались на территории РФ порождают огромное количество вопросов, на которые не у всех есть ответы.

Команда Spring АйО подготовила цикл статей, в которых постарается ответить на все вопросы, связанные с уходом IntelliJ IDEA из России.


На российском рынке сложилась сложная ситуация с IDE для Java-разработчиков. Инструмент, которым программисты пользовались более 20 лет, теперь недоступен для скачивания. Речь, конечно же, об IntelliJ IDEA Ultimate. При попытке загрузить программу появляется ошибка 451 (недоступно по юридическим причинам).

Согласно опросу, у некоторых разработчиков IntelliJ IDEA Ultimate всё ещё установлена, но срок действия лицензии скоро истекает. У других есть версия с пожизненной лицензией, но без возможности обновления — обычно это версии 2022 и 2023 годов. Есть и те, кто находит способы приобрести IntelliJ IDEA Ultimate и сейчас, но мы не будем их упоминать, так как они чаще всего нарушают лицензию или противозаконны.

Несмотря на уход IntelliJ IDEA Ultimate из России, многие разработчики пока не испытывают проблем. Но как долго это продлится? Уже сейчас те, кто работает на версиях 2022 и 2023 годов, могут столкнуться с трудностями при работе с последними версиями Java и популярных фреймворков, таких как Spring Boot. В затруднительном положении и те, у кого скоро истечет лицензия. А также те, кто продлевает лицензию с использованием карт иностранных банков, при этом находясь на территории Российской Федерации или Республики Беларусь. Последним компания JetBrains начала блокировать оплаченные лицензии буквально вчера.

Возникают вопросы, на которые не у всех есть ответы.

  • Есть ли легальный способ использовать IntelliJ IDEA Ultimate в России?

  • Если нет, то какие есть альтернативы?

  • IntelliJ IDEA Community всё ещё доступна для скачивания — есть ли в ней всё, к чему мы привыкли в Ultimate?

  • Можно ли заменить отсутствующие в Community функции, и если да, то как?

  • А что, если и Community запретят скачивать?

  • Ещё мы слышали про Giga IDE — может, стоит её попробовать?

  • И, раз уж речь зашла о других IDE, есть VS Code, Eclipse, NetBeans и, возможно, другие. Может, перейти на них?

Команда Spring АйО подготовила цикл статей, в которых постарается ответить на все вопросы, связанные с уходом IntelliJ IDEA из России.

Community, Ultimate и их ключевые различия

Чтобы понять, как жить дальше, сначала нужно разобраться, что именно мы потеряли. Напомним, что недоступной стала только IntelliJ IDEA Ultimate. Однако у компании JetBrains есть ещё одна IDE — IntelliJ IDEA Community Edition. Это полностью бесплатная и с открытым исходным кодом IDE, которую можно даже собрать самостоятельно.

Важно отметить, что многие функции, доступные в IntelliJ IDEA Ultimate, также присутствуют и в Community. Обе версии можно рассматривать как наборы плагинов, объединённых в один bundle. В одном bundl'е плагинов больше, в другом — меньше. При этом некоторые из предустановленных в Ultimate плагинов мы без проблем можем установить в CE, но некоторые — нет. Получается, мы потеряли не все, а только часть возможностей. Полный список различий можно найти на сайте IntelliJ IDEA, а мы приведём его краткую версию, которая, на наш взгляд, будет наиболее интересна Java/Spring разработчикам.

Возможности

IntelliJ IDEA Ultimate

IntelliJ IDEA Community

Java/Kotlin

+

+

Рефакторинги

+

+

Инспекции

+

+

Git

+

+

Gradle/Maven

+

+

Debugger

+

+

Spring Framework

+

-

HTTP Client

+

-

Database Tools

+

-

Frontend Support

+

-

Теперь стало ясно, что имея под рукой IntelliJ IDEA Community, можно сохранить пусть не все, но значительную часть возможностей IDE, к которым мы привыкли. О том, как вернуть и то, что на первый взгляд было безвозвратно утеряно, мы расскажем в следующих статьях из цикла "Как жить без". А сегодня мы ответим на самый главный, на наш взгляд, вопрос: А что если и IntelliJ IDEA Community уйдет из России?

Альтернативы IntelliJ IDEA

Не одной же IntelliJ IDEA мы едины, правда? Есть ещё VS Code, Eclipse, NetBeans и GigaIDE. На самом деле, разбор того, насколько каждая из перечисленных IDE удобна для разработки на Java/Spring — это материал, достойный отдельных статей. Более того, такие статьи уже есть на Хабре. Постараемся резюмировать их содержание.

VS Code

Статья. Команда Spring АйО ознакомилась с материалом, и несмотря на положительные впечатления самого автора:

После всех действий у вас под рукой настроенная для разработки Java‑приложений IDE с использованием Spring Boot. Инструкция проверена на нескольких Java‑разработчиках и помогла им полностью перейти на VSCode, не думая о рисках блокировки и ограничений урезанных версий.

Мы скорее придерживается мнения одного из разработчиков в комментариях:

Провернул все описанное и чувства смешанные. Вроде бы и работоспособно, но как-то космически далеко до идеи. Даже до комьюнити.

Действительно, многих возможностей, к которым мы привыкли как Java/Spring разработчики в VS Code со всем набором плагинов представленных в статьей мы не обнаружили. К ним можно отнести:

  • Продвинутые средства рефакторинга

  • Расширенные возможности отладки и профилирования

  • Мощные средства навигации по коду

  • Глубокую интеграцию с Spring Framework и его экосистемой

Eclipse и NetBeans

Статья и статья. Согласно авторам и некоторым разработчикам в комментариях, и Eclipse, и NetBeans — это отличные IDE. Однако, судя по упомянутому нами опросу, количество разработчиков, разделяющих эту позицию, на самом деле не так велико. По субъективному мнению команды Spring АйО, в 2024 году и Eclipse, и NetBeans выглядят немного устаревшими, а поддержка Spring после IntelliJ IDEA кажется недостаточной. Возможно, это связано с отсутствием достаточного погружения в эти IDE, а также очень небольшим количеством материалов о них на просторах интернета.

Giga IDE

По сути, Giga IDE — это IntelliJ IDEA Community Edition, но с большим количеством предустановленных бесплатных и свободно распространяемых плагинов. Полноценный обзор можно найти в этой статье. Резюмируя ее содержание: здорово, что есть сборка IntelliJ от российского вендора, но качество и количество включенных в нее плагинов остаётся под вопросом. Например, включенный в сборку плагин LSP4IJ при определённых обстоятельствах вызывал у команды Spring АйО полное зависание IDE.


Подводя итог, из альтернатив IntelliJ IDEA Community Edition, которые могут быть выбраны российскими разработчиками, кажется, что максимально близким вариантом может быть Giga IDE, но и она не лишена недостатков. 

С точки зрения команды Spring АйО, идеальным решением проблемы, не связанным с рисками качества включенных в сборку плагинов и юридическими вопросами, может стать самостоятельная сборка open-source IntelliJ IDEA и её настройка исключительно с нужными плагинами.

Давайте посмотрим, насколько это тяжело сделать и с какими сложностями можно столкнуться в процессе.

Инструкция по сборке IntelliJ IDEA Community Edition

Процесс сборки установочных образов для любой из наиболее распространённых операционных систем на самом деле довольно простой. Давайте подробно разберём каждый шаг, чтобы понять, зачем нужны те или иные файлы и что из себя представляют скрипты, которые будут задействованы в процессе.

1. Клонирование репозитория IntelliJ IDEA Community Edition

     - Переходим на GitHub-репозиторий IntelliJ IDEA Community Edition.

     - Копируем ссылку для клонирования репозитория.

     - Открываем в IntelliJ IDEA.

2. Определение версии для сборки

     - Переходим на сайт со списком всех доступных версий IntelliJ IDEA.

     - Находим номер билда, который хотим собрать самостоятельно. Например, 242.23339.11

Номер билда определяет конкретную версию IntelliJ IDEA. Используя его, мы можем переключиться на соответствующую ветку в репозитории, чтобы собрать именно ту версию, которая нам нужна. Номер сборки может быть важен для совместимости с определенными плагинами или функциями, которые могут быть доступны начиная с конкретной версии IntelliJ.В данном случае 242.2 означает 2024.2 версию IntelliJ IDEA, остальные цифры нам не так интересны.

3. Запуск скрипта getPlugins.sh

     - В корне проекта находим файл getPlugins.sh.

     - Запускаем скрипт, выполнив в терминале команду: ./getPlugins.sh.

Скрипт getPlugins.sh автоматически загружает необходимые плагины и дополнительные компоненты, которые не входят в состав основного репозитория. Более конкретно, после выполнения скрипта getPlugins.sh в проекте появится директория android.

4. Переключение на нужную ветку

     - Директория android связана с отдельным git-репозиторием.

     - Для него точно также как и для git-репозитория связанного непосредственно с IntelliJ IDEA, надо переключиться на ветку с номер сборки, который мы выбрали ранее. Например, idea/242.23339.

5. Подготовка к сборке

     - Убедитесь, что на вашем компьютере установлен Docker или его аналог (например, Rancher).

     - Если вы находитесь в регионе с ограниченным доступом к ресурсам JetBrains, нужно переключиться на не российский IP-адрес.

6. Запуск конфигурации сборки

     - В IntelliJ IDEA открываем список run/debug конфигураци.

     - Выбираем конфигурацию Build IDEA Community Installers (current OS).

     - Запускаем её.

IDE автоматически выполняет все необходимые шаги для сборки установочного файла:

       - Компиляция исходного кода.

       - Упаковка ресурсов.

       - Создание установочного файла для вашей операционной системы.

В зависимости от мощности вашего компьютера и скорости интернет-соединения, процесс может занять от 30 минут до нескольких часов.

     - Например, на ноутбуке с процессором Apple M1 сборка занимает около 45 минут.

7. Поиск и установка собранной IntelliJ IDEA CE

     - После завершения сборки переходим в директорию out/idea-ce/artifacts.

     - Здесь находятся установочные файлы для вашей операционной системы:

       - .exe для Windows.

       - .dmg для macOS.

       - .tar.gz или .sh для Linux.

8. Запускаем установочный файл и следуем инструкциям установщика.

Отметим, что для MacOS перед установкой необходимо будет выполнить следующую команду:

xattr -cr /Applications/Intellij\ IDEA\ CE\.app

Теперь, когда мы научились собирать IntelliJ IDEA Community Edition из исходных кодов, давайте задумаемся: а что, если мы хотим создать кастомную версию для нашей компании?

Такая сборка может потребоваться не только для изменения внешних атрибутов вроде названия, иконки или приветственного экрана, но и для более серьёзных целей. Например, мы можем не желать, чтобы наша IDE отправляла данные на серверы JetBrains для сбора статистики. Важно также, чтобы наша версия корректно работала с ToolBox и не превращалась при обновлении обратно в стандартную IntelliJ IDEA Community Edition, как это происходит с Giga IDE. Кроме того, учитывая недавние ограничения и невозможность установки плагинов из официального маркетплейса JetBrains, нам хотелось бы иметь встроенный в нашу IDE альтернативный маркетплейс, доступный с российского IP-адреса.

Разумеется, реализация всех этих задач требует значительных усилий и времени. Команда Spring АйО продолжает изучать эти вопросы и искать оптимальные решения, но полная кастомизация IntelliJ IDEA выходит за рамки нашей текущей цели.

Поэтому в качестве первого шага рассмотрим, как изменить базовые элементы: название, картинки и иконки.

Инструкция по кастомизации IntelliJ IDEA CE

На самом деле, такая небольшая кастомизация, как изменение названия, welcome-картинки и иконок – дело несложное. Достаточно поменять пару строк кода в нескольких файлах: раз, два. А также заменить картинки на нужные нам. Итоговый список изменений будет довольно скромным:

И вот что мы получим в итоге:

При изменении исходников важно помнить, что это всего лишь изменение внешнего вида. Наша сборка всё равно будет считаться IntelliJ IDEA Community Edition. Это означает, что при выходе обновлений для IntelliJ IDEA CE, наша версия также будет пытаться обновиться, как это было с Giga IDE.

Чтобы избежать такой ситуации, необходимо создать отдельный модуль, который будет описывать особенности нашей сборки. Однако это уже отдельная тема, которая вряд ли будет интересна обычным разработчикам. Скорее, это будет полезно для организаций, планирующих выпуск своей IDE на базе IntelliJ IDEA Community Edition.

Но зачем это всё?

Внимательный читатель мог заметить, что в процессе сборки IntelliJ IDEA Community нам потребовалось переключиться на не российский IP-адрес. Но зачем тогда это всё нужно, если после переключения можно свободно скачать как Community, так и Ultimate версии?

Дело в том, что скачивая готовую сборку IntelliJ IDEA Community от JetBrains, мы получаем не только её open-source часть, распространяемую по лицензии Apache 2.0. Вместе с ней загружаются и плагины, лицензированные иначе — под проприетарные условия, например, плагин Code With Me. Такие плагины запрещено легально использовать в странах, на которые наложены экспортные ограничения, включая Россию.

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

To be continued...

В следующих статьях цикла «Как жить без» мы расскажем, как получить поддержку Spring, эффективно работать с базами данных и выполнять HTTP-запросы прямо из IDE. Сборка собственной IDE — лишь первый шаг на пути к полной независимости!

Присоединяйтесь к русскоязычному сообществу разработчиков на Spring Boot в телеграм — Spring АйО, чтобы быть в курсе последних новостей из мира разработки на Spring Boot и всего, что с ним связано.

Ждем всех, присоединяйтесь

Источник: https://habr.com/ru/companies/spring_aio/articles/852526/


Интересные статьи

Интересные статьи

Генеральный директор Google DeepMind Демис Хассабис сравнил уровень IQ современных моделей искусственного интеллекта с домашними кошками. Тем не менее, он также признал, что в некоторых областях, таки...
В данной статье мы рассмотрим правильный подход к Frontend разработки в Bitrix. А именно разделение на расширения которые сможем подключать в любой момент времени. + напишем SPA приложение на React.
Почему Apache Kafka стала стандартом и основой архитектуры микросервисов. Как Kafka не только заменяет другое промежуточное ПО, но и позволяет создавать сами микросервисы с помощью DDD и нативных API ...
Всем привет! Не так давно на работе в рамках тестирования нового бизнес-процесса мне понадобилась возможность авторизации под разными пользователями. Переход в соответствующий р...
Если в вашей компании хотя бы два сотрудника, отвечающих за работу со сделками в Битрикс24, рано или поздно возникает вопрос распределения лидов между ними.