Привет, Хабр!

Вышел наш летний релиз — IntelliJ IDEA 2021.2! Обновление можно скачать с нашего сайта или в Toolbox App. Кроме того, можно обновиться из самой IDE или с помощью snap-пакета, если вы являетесь пользователем Ubuntu.

В новой версии IDE появилось множество разнообразных новых функций, благодаря которым работать с IntelliJ IDEA станет проще и приятнее. В основном эти изменения разрабатывались с учетом информации в баг-трекере: полученная обратная связь — наш основной источник информации о ваших потребностях и возникающих сложностях. Мы будем очень благодарны за отзывы о новой версии и за помощь в устранении ошибок, с которыми вы можете столкнуться.

О самых важных изменениях рассказывается в видеообзоре:

Как всегда, подробную информацию обо всех новых возможностях вы найдете в серии статей в блоге и на странице «Что нового».

В этой статье дан краткий обзор важнейших новых функций и улучшений в версии 2021.2.

Главные изменения

  • Новая функция анализа кода в масштабе всего проекта позволяет найти ошибки в небольших и средних проектах перед их компиляцией. Эта функция доступна только в IntelliJ IDEA Ultimate.

  • Мы добавили в IDE несколько действий, которые могут выполняться при сохранении изменений в проекте, в том числе форматирование кода и оптимизацию импортов. Эти действия собраны в меню Preferences / Settings | Tools | Actions on Save.

  • Управлять зависимостями Maven и Gradle стало проще с помощью нового интерфейса Package Search. Кроме того, теперь можно посмотреть, есть ли новые версии зависимостей, и при необходимости обновить их прямо из редактора.

Редактор

  • Описания инспекций и быстрых исправлений стали полнее. В некоторых описаниях приведены примеры использования.

  • Диаграммы стали информативнее: их можно просматривать в режиме Structure, который представляет собой схему диаграммы с возможностью предпросмотра выбранного блока и его соседей.

  • Уведомление об авторских правах на проект по умолчанию включает в себя как год создания проекта, так и год текущей версии.

  • Улучшена поддержка Markdown: теперь можно конвертировать файлы .md в различные форматы, настраивать размер изображений и вставлять изображения путем перетаскивания. Кроме того, мы исправили ошибки форматирования списков и добавили новую плавающую панель инструментов, которая активируется, только когда она вам нужна.

Взаимодействие с IDE

  • Новая версия IntelliJ IDEA автоматически находит проекты Eclipse, хранящиеся на локальной машине, поэтому теперь их можно открыть прямо из папки на приветственном экране.

  • В новом узле Advanced Settings в меню Preferences/Settings доступны продвинутые настройки для IDE.

  • Упорядочить окна стало проще: просто нажмите на заголовок и перетащите в любую выделенную область внутри основного окна IDE или за его пределы в отдельное окно.

  • IntelliJ IDEA автоматически очищает директории кэша и журналов, обновлявшиеся более 180 дней назад.

  • Если в проекте отсутствует плагин для используемого фреймворка, IDE предупредит об этом и предложит включить его.

  • Мы упростили перемещение между разделами Preferences/Settings: в правом верхнем углу окна появились удобные стрелки.

  • IDE сообщит о появлении обновлений для любых продуктов, если вы используете Toolbox App 1.20.8804 или более поздней версии.

  • Мы добавили новые специальные возможности для пользователей macOS: озвучили варианты автодополнения кода, выбранного пункта в поле со списком и всего списка целиком, а также результаты поиска при использовании функции Search Everywhere.

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

Java

  • Можно различными способами разметить публичные, защищенные и частные методы, поля и классы Java. Чтобы настроить разметку, перейдите в Preferences/Settings | Editor | Color Scheme и разверните узел Visibility.

  • Мы добавили новый визард для создания JavaFX проектов.

  • Для отдельных сценариев использования при анализе потока данных мы добавили несколько новых инспекций, в том числе для отслеживания диапазона чисел с плавающей точкой или размера коллекции для методов обновления.

Kotlin

  • Начиная с этой версии, функция автодополнения кода Kotlin по умолчанию использует механизм машинного обучения.

  • Вам не нужно ждать завершения анализа кода, чтобы выполнить тесты: их можно запустить сразу после открытия файла, нажав на значок Run test в редакторе.

  • К агенту корутин можно перейти через вкладку Coroutines в окне Debug. Он работает для конфигураций запуска Java с зависимостью от kotlinx.coroutines, а также для конфигураций запуска Spring и Maven.

  • Теперь кнопки, связанные с Run/Debug Configurations, активны во время индексации, и вы можете запустить приложение и выполнять его отладку, пока IDE индексирует проект.

  • Мы обеспечили поддержку WSL 2 и реализовали функцию Run Targets для Kotlin.

  • Добавлена новая инспекция, позволяющая IntelliJ IDEA упростить синтаксис и объединить цепочку из нескольких вызовов методов внутри коллекции.

  • Мы добавили новое intention-действие для преобразования buildString.

JavaScript (только в IntelliJ IDEA Ultimate)

  • При предварительном просмотре HTML-файлов в браузере IDE автоматически отображает все сделанные и сохраненные изменения в HTML-файле или связанных с ним файлах CSS и JavaScript.

  • IntelliJ IDEA может одновременно переименовывать значения useState и соответствующие функции в React hooks.

  • Прежние версии IDE умели добавлять отсутствующие операторы импорта при вводе символов в модулях ES6. Теперь то же самое возможно для модулей CommonJS: при автодополнении кода будет вставлен оператор require.

Scala

  • Значительно улучшена поддержка Scala 3. Индексация выполняется быстрее и точнее, а также теперь можно создавать проекты Scala 3 на основе sbt и .idea. Помимо Scala 3 SDK, мы обеспечили поддержку конструкций Scala 3 в проектах Scala 2 (-Xsource:3) и сделали много других улучшений.

  • Чтобы избежать появления ложных ошибок, для подсветки ошибок можно использовать возможности компилятора. Однако нужно помнить, что этот вариант точнее, но медленнее, требует больше ресурсов и не поддерживает такие функции, как подсказки о несоответствии типов, быстрые исправления и инспекции.

Профилировщик (только в IntelliJ IDEA Ultimate)

  • В новой версии IntelliJ IDEA обеспечена полная поддержка профилировщика в Windows и Apple M1 в дополнение к Linux и macOS на других чипах. Таким образом, теперь профилировщик можно использовать в большинстве сред.

  • IDE поддерживает Async Profiler 2.0, объединяющий возможности профилировщиков ЦП и распределения ресурсов. Он работает с использованием новой конфигурации Async Profiler.

  • Теперь на вкладке Retained Objects данные выбранного объекта отображаются в виде диаграммы «солнечные лучи».

Инструменты сборки

  • При работе с пользовательской JDK можно добавлять новые артефакты JLink.

  • Теперь в WSL 2 можно выполнять задания Ant.

  • Конфигурации запуска и отладки Gradle были усовершенствованы. Мы собрали все основные настройки в одном окне, и при необходимости туда можно добавить и другие параметры.

  • Скорость индексации проектов в WSL 2 увеличена.

Система контроля версий

  • Теперь можно тестировать изменения, которые вы внесли, перед их коммитом.

  • Раньше ход и результаты всех проверок перед коммитом отображались в отдельных модальных окнах. В новой версии информация выводится в области Commit.

  • В IntelliJ IDEA 2021.2 можно защитить коммиты в Git с помощью цифровой подписи GPG.

  • Узел, где хранятся изменения до коммита, в новых проектах называется Changes, а не Default changelists. Кроме того, операции Git больше не будут автоматически создавать списки изменений.

  • При выполнении действия Show Diff окно с результатами будет по умолчанию открываться в редакторе.

  • Стало удобно искать текст в локальной истории изменений: просто введите запрос в поле поиске в диалоговом окне Local History.

Терминал

  • Во встроенном терминале появились две новые возможности: выбор формы курсора и использование клавиши Option (⌥) в качестве мета-модификатора других клавиш.

Отладчик

  • Вкладка Preview теперь доступна в отладчике. Если эта функция включена, IDE открывает файлы друг за другом в одной вкладке, когда вы останавливаете выполнение кода в точке останова, выполняете код пошагово, переключаетесь между фреймами или используете действия prev/next frame.

Фреймворки и технологии (только в IntelliJ IDEA Ultimate)

  • В окне Endpoints можно вывести схему связей микросервисов, где можно проследить, какой клиент вызывает тот или иной сервис, и перейти к соответствующему вызову в коде. Схема доступна для проектов Java и Kotlin, если вы используете фреймворки Spring, Micronaut, Quarkus или Helidon.

  • Новый рефакторинг Migrate позволяет легко перенести проект или модуль с Java EE на Jakarta EE.

  • Если вы создаете новый проект Spring Initializer, IDE автоматически скачает заранее построенные индексы. Это позволяет сократить время на индексацию и ускоряет запуск IDE.

  • Мы реализовали поддержку графа сущностей JPA, который можно определить с помощью аннотации @NamedEntityGraph. Для атрибутов аннотации работает автодополнение кода, обнаружение ошибок и навигация.

  • Мы добавили поддержку аннотаций кэширования в Micronaut и Quarkus. С помощью значков редактора можно перемещаться между использованиями имени кэша, использовать действие Find usages и рефакторинг Rename для идентификаторов кэша.

  • Навигация по URL-адресам в JavaScript и TypeScript значительно улучшена как для клиентского (Angular или Axios), так и для серверного (Express) кода.

  • Плагин Protocol Buffers интегрирован с IntelliJ IDEA Ultimate, и команда JetBrains теперь обеспечивает его полную поддержку.

  • IntelliJ IDEA Ultimate поддерживает фреймворк gRPC. Первая возможность, которую мы реализовали — просмотр определений сервисов gRPC в окне Endpoints.

  • В новой версии проекты Ktor можно создавать прямо на начальном экране: в IntelliJ IDEA Ultimate встроена поддержка этого фреймворка.

Интеграция со Space

  • Теперь на вкладке Log окна Git можно использовать значки для статусов заданий Space. При нажатии на значок откроется всплывающее окно с автоматической информацией о задании.

  • Во время ревью кода в Space можно упомянуть коллегу: для этого нужно ввести @, а затем имя нужного человека.

  • В новой версии IDE можно отобразить связанные ветки в выбранном ревью кода на вкладке Details .

Code With Me

  • Во время сеанса работы в Code With Me в режиме Following можно видеть предложения функции автодополнения кода, которые использует коллега, за чьей работой вы следите.

  • Переработанная логика Undo позволяет как ведущему разработчику, так и гостям отменять только собственные изменения в коде. Это особенно полезно при парном и групповом программировании.

  • В версии 2021.2 можно продемонстрировать коллегам окно любого приложения на экране компьютера, а не только окно IDE JetBrains.

  • Пользователи могут поделиться с другими участниками сеанса открытыми портами — для этого используется встроенный прокси. Если ведущий запускает приложения, используя определенный порт, остальные могут получить к нему доступ через локальный хост на своих машинах.

Инструменты работы с базами данных (только в IntelliJ IDEA Ultimate)

  • В новой версии можно создать источник данных DDL на основе обычного. Локально создаются файлы DDL, а на их основе — новый источник данных.

  • Теперь в меню Preferences/Settings | Tools | Database | General можно выбрать, после каких операций будет появляться окно Services.

  • Автодополнение кода теперь работает для различных типов полей и операторов в консоли MongoDB.

Инструменты QA

  • Новый плагин Test Data позволяет выполнять множество действий для генерации случайных данных для юнит-тестов.

Docker

  • К Docker можно подключиться через SSH.

  • В журналах контейнера можно настроить показ меток времени и предыдущих сеансов.

  • Новые кнопки действий для контейнеров позволяют быстро запускать и перезапускать их, а также приостанавливать и возобновлять их работу. Все эти действия можно выполнить сразу для нескольких контейнеров.

  • Мы реализовали новый способ удаления образов с существующими зависимостями. Теперь можно указать, какие зависимости следует удалить, а какие — сохранить.

  • В окне Services появились два новых узла: Networks и Volumes.

Добавлены новые возможности для Docker Compose:

  • Приложения Docker Compose можно отобразить в окне Services, даже если они не запущены. Для этого надо нажать на кольцевые стрелки в окне редактора.

  • Новые значки помогают понять, в каком состоянии находится сервис. Подсказки помогут понять значение каждого значка.

  • Теперь у каждого узла сервиса есть журнал.

  • В настройках Run/Debug Configurations появились новые параметры Docker Compose, в том числе Enable BuildKit, Enable compatibility mode и Specify project name.

  • Мы добавили поддержку формата файлов Docker Compose версии 3.

Kubernetes (только в IntelliJ IDEA Ultimate)

  • В IntelliJ IDEA 2021.2 реализована полная поддержка поля alias в разделе dependencies в Chart.yaml (api v2) или requirements.yaml (api v1).

  • Если у вас есть права доступа лишь к некоторым пространствам имен в кластере, вы можете определить собственные пространства имен.

  • Можно указать избранные пространства имен, которые будут отображаться в начале списка.

Другие возможности

  • Начиная с этой версии, пользовательский интерфейс IntelliJ IDEA полностью локализован на китайский, корейский и японский языки. Локализованный интерфейс можно скачать в виде плагинов с отдельными языковыми пакетами, которые легко установить в IDE.

  • Плагин Android обновлен до версии 4.2.0.

  • Мы убрали из комплекта поставки IntelliJ IDEA следующие плагины: Resource Bundle Editor, Drools, JSP Debugger Support, CoffeeScript, Spring Web Flow, Spring OSGI, Arquillian, AspectJ, Guice, Helidon, Emma и EJB.

Мы рассказали об основных изменениях, появившихся в IntelliJ IDEA 2021.2. Надеемся, что новые возможности помогут вам в работе. В комментариях к этой статье можно рассказать нам, что вы думаете о новой версии решения. Обо всех ошибках сообщайте через наш баг-трекер.

Программируйте с удовольствием!

Комментарии (34)


  1. PrinceKorwin
    30.07.2021 17:26
    +3

    Не стал ставить эту версию, т.к. установщик указал на несовместимость с плагином Rust (и парочкой других).

    Может кто знает какая у IntelliJ позиция по этому вопросу?

    Или может быть посоветует другую IDE для Rust? Т.к. IDEA всё таки не очень дружит с этим языком пока.


    1. ligor
      30.07.2021 18:17

      Visual Studio Code как по мне


      1. zim32
        31.07.2021 23:14

        Не пойму чего заминусовали. Нормальнач иде, по ощущениям раз в 10 быстрее джетбрейнс. С растом полет нормальный


    1. Akuma
      30.07.2021 18:53

      А я поставил. Слетело много чего, причём из ДжетБреинс плагинов, хотя это странно.


    1. wunderwaffel
      30.07.2021 23:31
      +2

      Обновил clion, плагин Rust остался жив.


    1. CAJAX
      31.07.2021 20:55
      +1

      У меня пару раз бывало так, что IDEA, предупреждала о несовместимости плагинов после апдейта. Но сразу же после этого апдейта появлялось уведомление о новых версиях этих плагинов, уже совместимых.

      В крайнем случае можно сделать бекапы папок профиля и самой IDEA


    1. bret99
      02.08.2021 09:19

      Vim с Youcompleteme и настройкой в wildmenu горячих клавиш для вызова дебаггера.


    1. CrazyCoder
      03.08.2021 19:56

      Была проблема с репозиторием плагинов, сейчас должно работать нормально и IDE поставит все нужные обновления.


  1. upagge
    30.07.2021 20:43
    +1

    Я теперь жду только нативный клиент под iPad для Projector. Понимаю что не по адресу, но мб есть какие-нибудь примерные сроки?) Год-два?))


  1. VasilGor
    30.07.2021 22:28
    +1

    Есть ли преимущества для React-разработчиков перед Visual Studio Code? Если есть, то какие самые сильные?


  1. shaman4d
    31.07.2021 00:25
    +1

    Предыдущая версия 2021-й имела баг - в окне Editor не печатался знак "<". В остальных окнах все было ОК. Вышла новая версия, тоже самое - баг остался, хотя я отправлял в ваш багтрекер тикет и ваш тестер как-то неохотно пытался в этом разобраться.


    1. CrazyCoder
      03.08.2021 20:06

      Укажите, пожалуйста, ID бага. Попробуем починить.


  1. Maccimo
    31.07.2021 05:51
    +4

    Недавно натолкнулся на чудо чудное в диалоге IDE Fatal Errors:




    Там, где на скриншоте располагается индикатор загрузки, должны быть кнопки перехода между разными exception reports. Кнопки появились через несколько секунд.


    Так как индикатор загрузки не мог самозародиться и его кто-то специально реализовывал, то возникает резонный вопрос: по каким причинам это потребовалось? Для элементов интерфейса desktop-приложения, да ещё таким примитивным как кнопки, это выглядит ненормальным.


    1. tagir_valeev
      02.08.2021 10:11
      +1

      Кажется, дело в том, что загрузка новой иконки (чтобы показать кнопку) - это I/O операция, которая может потенциально затянуться на неопределённое время (например, может потребоваться раскрутить жёсткий диск). Чтобы избежать возможных фризов пользовательского интерфейса, мы стараемся как можно больше I/O операций утаскивать в фоновые потоки. Лучше крутилка, чем всё окно подвиснет.


  1. TyVik
    31.07.2021 08:34
    +2

    Ужасный релиз получился. Смотрели почти все плагины, без которых очень сложно работать.


    1. CrazyCoder
      03.08.2021 19:58
      +1

      Действительно, в день релиза возникла проблема с репозиторием плагинов, из-за которой IDE их не могла обновить. Сейчас всё должно быть нормально.


  1. mrk-andreev
    31.07.2021 10:30
    +1

    В этом релизе очень интересно поменяли расположение системных packages, подробнее можно почитать в Issue EnvFile (https://github.com/ashald/EnvFile/issues/140).


  1. Max_JK
    31.07.2021 18:53
    +1

    Многие проблемы до сих пор не исправлены, например отображение эмодзи в консоли на linux или разделение окна на вкладке Run, это не критичные задачи, но многим из них уже больше 8 лет. Поддержка typescript тоже на низком уровне, особенно в связке с фреймворками вроде vue, если написать код хоть немного выходящий за рамки starter-шаблонов то подсветка просто перестает нормально работать. Есть ещё очень много мелочей с которыми приходится мирится при активной работе с программой, на пару страниц точно хватит.
    Подумываю перейти на vscode, но там тоже свои косяки.


  1. foatto
    01.08.2021 12:39

    При установке предлагает "сапгрейдить" котлиновский плагин с 1.5.21 до 1.4.32.
    Тоже не рискнул обновляться, подожду пожалуй 2021.2.1


  1. timmer
    02.08.2021 09:20

    У меня после обновления перестали создаваться новые проекты ) жмешь кнопку, а в ответ тишина. Кроме этого, оказался сломан даунгрейд - ругался на неправильный размер скачанного тулбоксом бинарника.


    1. tagir_valeev
      02.08.2021 10:12
      +1

      У меня после обновления перестали создаваться новые проекты ) жмешь кнопку, а в ответ тишина.

      Звучит не очень хорошо. Посмотрите, пожалуйста, в логах (Help|Open log in editor), может там какое-то исключение?


    1. CrazyCoder
      03.08.2021 19:54

      Должно чиниться включением Gradle плагина, известный баг в Kotlin плагине: https://youtrack.jetbrains.com/issue/KTIJ-19251.


      1. timmer
        04.08.2021 10:01

        Судя по логу действительно дело в плагине, но в плагине Kotlin:
        2021-08-04 09:57:14,221 [ 45636] ERROR - llij.ide.plugins.PluginManager - Plugin to blame: Kotlin version: 212-1.5.10-release-IJ4746.92 2021-08-04 09:57:14,221 [ 45636] ERROR - llij.ide.plugins.PluginManager - Last Action: WelcomeScreen.CreateNewProject


        1. CrazyCoder
          04.08.2021 10:10

          Да, я про это и написал со ссылкой на баг в Kotlin плагине. Чинится либо отключением Kotlin плагина, либо включением Gradle плагина. Зависимости неправильно указаны и Kotlin плагин пытается использовать код из отключенного Gradle плагина, отсюда и проблема.


          1. timmer
            04.08.2021 10:26

            Действительно, отключение Kotlin'а помогло. А при включенном плагине, надо включить не только Gradle, но и Maven... Спасибо!


  1. gigimon
    03.08.2021 13:05
    +1

    Было бы круто, чтобы можно было подключаться к node.js в контейнере, как это сделано для python.


    1. CrazyCoder
      03.08.2021 20:00

      1. gigimon
        03.08.2021 22:16

        о, незнаю когда добавили, но зимой еще не было, спасибо


  1. wellusion
    04.08.2021 12:17

    Когда-то в visual studio дико раздражало, что настроишь панели интерфейса под себя, потом случайно мышкой дёрнешь и панель отъезжает — нужно снова настраивать.
    Очень нравилось, что в idea нужно явно через меню правой кнопкой мыши на панели указать режим отображения (view mode = pinned|float|etc).
    И вот с нового релиза неосторожный клик мышкой — и нужно возвращать панель на место. Есть ли способ прибить гвоздями панель к своему месту (как было)?


    1. DeniSix
      04.08.2021 18:58
      +1

      Опция "Appearance" ???? "Drag-and-drop with Alt pressed only" работает и для панелей.


      1. wellusion
        06.08.2021 11:58

        Спасибо. Но это всё равно не то. Например, Drag-and-drop вкладок теперь тоже с alt'ом. Но к этому ещё можно привыкнуть. Хуже то, что перенос файлов в окне гита из одного списка изменений в другой теперь не работает даже с alt'ом.


        1. DeniSix
          06.08.2021 14:39

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


  1. ads83
    05.08.2021 09:40

    Давно не обновлял бесплатную версию Идеи. Увидел пост, полез обновляться из самой среды — IDE предлагает обновиться до 2021.1.3. Тыкание на Help|Check for Updates по-прежнему предлагало 2021.1.3. После того, как обновился, Идея предложила поставить 2021.2.
    Какая версия была раньше — не помню, но точно 2021 года.


    Даже не знаю, баг это или фича :-)


  1. orthanner
    24.08.2021 06:58

    Сломалась активаций через сервер лицензий. Вводишь адрес, а кнопки остаются неактивными.

    UPD: помогло стирание части (не всего!) адреса и ввод по новой. При этом при вводе с нуля кнопки оставались неактивными.