Привет, Хабр!
Вышел наш летний релиз — 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)
upagge
30.07.2021 20:43+1Я теперь жду только нативный клиент под iPad для Projector. Понимаю что не по адресу, но мб есть какие-нибудь примерные сроки?) Год-два?))
VasilGor
30.07.2021 22:28+1Есть ли преимущества для React-разработчиков перед Visual Studio Code? Если есть, то какие самые сильные?
shaman4d
31.07.2021 00:25+1Предыдущая версия 2021-й имела баг - в окне Editor не печатался знак "<". В остальных окнах все было ОК. Вышла новая версия, тоже самое - баг остался, хотя я отправлял в ваш багтрекер тикет и ваш тестер как-то неохотно пытался в этом разобраться.
Maccimo
31.07.2021 05:51+4Недавно натолкнулся на чудо чудное в диалоге IDE Fatal Errors:
Там, где на скриншоте располагается индикатор загрузки, должны быть кнопки перехода между разными exception reports. Кнопки появились через несколько секунд.Так как индикатор загрузки не мог самозародиться и его кто-то специально реализовывал, то возникает резонный вопрос: по каким причинам это потребовалось? Для элементов интерфейса desktop-приложения, да ещё таким примитивным как кнопки, это выглядит ненормальным.
tagir_valeev
02.08.2021 10:11+1Кажется, дело в том, что загрузка новой иконки (чтобы показать кнопку) - это I/O операция, которая может потенциально затянуться на неопределённое время (например, может потребоваться раскрутить жёсткий диск). Чтобы избежать возможных фризов пользовательского интерфейса, мы стараемся как можно больше I/O операций утаскивать в фоновые потоки. Лучше крутилка, чем всё окно подвиснет.
TyVik
31.07.2021 08:34+2Ужасный релиз получился. Смотрели почти все плагины, без которых очень сложно работать.
CrazyCoder
03.08.2021 19:58+1Действительно, в день релиза возникла проблема с репозиторием плагинов, из-за которой IDE их не могла обновить. Сейчас всё должно быть нормально.
mrk-andreev
31.07.2021 10:30+1В этом релизе очень интересно поменяли расположение системных packages, подробнее можно почитать в Issue EnvFile (https://github.com/ashald/EnvFile/issues/140).
Max_JK
31.07.2021 18:53+1Многие проблемы до сих пор не исправлены, например отображение эмодзи в консоли на linux или разделение окна на вкладке Run, это не критичные задачи, но многим из них уже больше 8 лет. Поддержка typescript тоже на низком уровне, особенно в связке с фреймворками вроде vue, если написать код хоть немного выходящий за рамки starter-шаблонов то подсветка просто перестает нормально работать. Есть ещё очень много мелочей с которыми приходится мирится при активной работе с программой, на пару страниц точно хватит.
Подумываю перейти на vscode, но там тоже свои косяки.
foatto
01.08.2021 12:39При установке предлагает "сапгрейдить" котлиновский плагин с 1.5.21 до 1.4.32.
Тоже не рискнул обновляться, подожду пожалуй 2021.2.1
timmer
02.08.2021 09:20У меня после обновления перестали создаваться новые проекты ) жмешь кнопку, а в ответ тишина. Кроме этого, оказался сломан даунгрейд - ругался на неправильный размер скачанного тулбоксом бинарника.
tagir_valeev
02.08.2021 10:12+1У меня после обновления перестали создаваться новые проекты ) жмешь кнопку, а в ответ тишина.
Звучит не очень хорошо. Посмотрите, пожалуйста, в логах (Help|Open log in editor), может там какое-то исключение?
CrazyCoder
03.08.2021 19:54Должно чиниться включением Gradle плагина, известный баг в Kotlin плагине: https://youtrack.jetbrains.com/issue/KTIJ-19251.
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
CrazyCoder
04.08.2021 10:10Да, я про это и написал со ссылкой на баг в Kotlin плагине. Чинится либо отключением Kotlin плагина, либо включением Gradle плагина. Зависимости неправильно указаны и Kotlin плагин пытается использовать код из отключенного Gradle плагина, отсюда и проблема.
timmer
04.08.2021 10:26Действительно, отключение Kotlin'а помогло. А при включенном плагине, надо включить не только Gradle, но и Maven... Спасибо!
gigimon
03.08.2021 13:05+1Было бы круто, чтобы можно было подключаться к node.js в контейнере, как это сделано для python.
wellusion
04.08.2021 12:17Когда-то в visual studio дико раздражало, что настроишь панели интерфейса под себя, потом случайно мышкой дёрнешь и панель отъезжает — нужно снова настраивать.
Очень нравилось, что в idea нужно явно через меню правой кнопкой мыши на панели указать режим отображения (view mode = pinned|float|etc).
И вот с нового релиза неосторожный клик мышкой — и нужно возвращать панель на место. Есть ли способ прибить гвоздями панель к своему месту (как было)?DeniSix
04.08.2021 18:58+1Опция "Appearance" ???? "Drag-and-drop with Alt pressed only" работает и для панелей.
wellusion
06.08.2021 11:58Спасибо. Но это всё равно не то. Например, Drag-and-drop вкладок теперь тоже с alt'ом. Но к этому ещё можно привыкнуть. Хуже то, что перенос файлов в окне гита из одного списка изменений в другой теперь не работает даже с alt'ом.
DeniSix
06.08.2021 14:39Тогда стоит проголосовать за этот ишью. В целом, даже в компании кто-кто страдает, судя по комменту к оригинальной задаче
ads83
05.08.2021 09:40Давно не обновлял бесплатную версию Идеи. Увидел пост, полез обновляться из самой среды — IDE предлагает обновиться до 2021.1.3. Тыкание на Help|Check for Updates по-прежнему предлагало 2021.1.3. После того, как обновился, Идея предложила поставить 2021.2.
Какая версия была раньше — не помню, но точно 2021 года.Даже не знаю, баг это или фича :-)
orthanner
24.08.2021 06:58Сломалась активаций через сервер лицензий. Вводишь адрес, а кнопки остаются неактивными.
UPD: помогло стирание части (не всего!) адреса и ввод по новой. При этом при вводе с нуля кнопки оставались неактивными.
PrinceKorwin
Не стал ставить эту версию, т.к. установщик указал на несовместимость с плагином Rust (и парочкой других).
Может кто знает какая у IntelliJ позиция по этому вопросу?
Или может быть посоветует другую IDE для Rust? Т.к. IDEA всё таки не очень дружит с этим языком пока.
ligor
Visual Studio Code как по мне
zim32
Не пойму чего заминусовали. Нормальнач иде, по ощущениям раз в 10 быстрее джетбрейнс. С растом полет нормальный
Akuma
А я поставил. Слетело много чего, причём из ДжетБреинс плагинов, хотя это странно.
wunderwaffel
Обновил clion, плагин Rust остался жив.
CAJAX
У меня пару раз бывало так, что IDEA, предупреждала о несовместимости плагинов после апдейта. Но сразу же после этого апдейта появлялось уведомление о новых версиях этих плагинов, уже совместимых.
В крайнем случае можно сделать бекапы папок профиля и самой IDEA
bret99
Vim с Youcompleteme и настройкой в wildmenu горячих клавиш для вызова дебаггера.
CrazyCoder
Была проблема с репозиторием плагинов, сейчас должно работать нормально и IDE поставит все нужные обновления.