Что нового в IntelliJ IDEA 2021.1

В свежей версии IDE вас ждет поддержка Java 16 и WSL 2, интеграция со Space, встроенная поддержка Code With Me, возможность запускать код на серверах SSH и в Docker-контейнерах, превью HTML-файлов в IDE и много других улучшений. Чтобы узнать подробности, смотрите видеообзор или читайте далее.

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

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

Наша новая платформа для разработки и командной работы Space теперь интегрирована с IntelliJ IDEA. Чтобы подключиться к своей организации в JetBrains Space, нажмите кнопку Get from VCS на начальном экране. После входа в систему вы сможете просматривать и клонировать репозитории проекта, читать код своих коллег, а также писать скрипты автоматизации Space.

Поддержка WSL 2

Внешние зависимости

Поддержка WSL 2 для Java-проектов

Мы знаем, что вы ждали этого обновления. Теперь в IntelliJ IDEA можно работать с Java-проектами, размещенными в WSL 2. IDE может обнаруживать и устанавливать JDK, компилировать и запускать проекты Maven и Gradle, а также проекты, использующие систему сборки IntelliJ IDEA.

Совместная разработка

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

Сервис для коллективной разработки и парного программирования Code With Me теперь включен в IntelliJ IDEA. Свежая версия поддерживает аудио- и видео звонки: можно общаться с коллегами прямо в IDE. Code With Me отлично подходит для разговоров один на один и для групповых обсуждений, в которых могут участвовать десятки человек. Подробнее о возможностях Code With Me читайте в нашем блоге.

Run Targets

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

Функция Run Targets позволяет запускать, тестировать, профилировать и отлаживать приложения в Docker-контейнерах и удаленно. С помощью IntelliJ IDEA Ultimate можно запускать Java-приложения, тесты JUnit, а также проекты Maven, Gradle, Quarkus на основе Maven, Micronaut и Spring Boot в Docker-контейнерах, на SSH-серверах и в WSL. Подробнее — в блоге.

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

Превью HTML в редакторе

Предварительный просмотр HTML-файлов

В IntelliJ IDEA теперь есть встроенное превью для HTML-файлов. Чтобы его открыть, нажмите на логотип IntelliJ IDEA в виджете в правом верхнем углу редактора. Превью обновляется в реальном времени, когда вы редактируете HTML-код или изменяете связанные CSS и JavaScript-файлы.

Внешние зависимости

Включение внешних зависимостей в область поиска

Настройки области поиска стали более гибкими. Внешние зависимости можно включать в область поиска и исключать из нее. Это делается в разделе Preferences/Settings | Appearance & Behavior | Scopes.

Просмотр памяти с HPROF

Быстрый доступ к недавним проектам на Windows

Мы обновили поддержку списков переходов в Windows: теперь можно открывать недавние проекты, щелкнув правой кнопкой мыши по значку IntelliJ IDEA на панели задач или в меню Пуск.

Специальные возможности

Один из наших основных приоритетов — сделать среду разработки доступной для всех пользователей. В этом релизе мы добавили больше меток к элементам интерфейса начального экрана, панели Project Structure и VCS-лога. Теперь эти элементы, как и значки на полях редактора, корректно обрабатываются программами чтения с экрана. Мы также занимаемся расширением поддержки специальных возможностей для пользователей macOS.

Синхронизация с режимом высокой контрастности на Windows

IntelliJ IDEA автоматически включит высококонтрастную тему при первом запуске, если в операционной системе выбран режим высокой контрастности.

Интеграция с системами контроля версий

Поддержка пул-реквестов

Расширенная поддержка пул-реквестов

Создание пул-реквестов теперь занимает меньше времени: просто нажмите на значок плюса в окне Pull Requests и введите нужные данные. Новые вкладки в верхней части окна содержат всю информацию о пул-реквесте. Если дважды кликнуть по файлу на вкладке Files, IDE откроет diff в редакторе. IDE также поддерживает шаблоны пул-реквестов, в которых содержатся их описания.

Шаблон Git-коммита

Поддержка шаблонов Git-коммитов

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

Проверки перед коммитом

Настройка профиля инспекций перед коммитом

Теперь легко выбрать профиль инспекций перед отправкой изменений в VCS. Нажмите на значок шестеренки, отметьте галочкой Analyze code, кликните Choose profile и выберите нужный профиль. IDE будет использовать его для проверки кода перед коммитом.

Действия для URL

Загрузка файла из другой ветки

В версии 2021.1 можно получить файл из другой ветки в диалоге Compare with branch. Просто выберите файл, который нужно загрузить, и нажмите на новый значок со стрелкой вниз рядом с Show diff.

Улучшенные ветки

Действие Save to Shelf

Новое действие Save to Shelf копирует изменения на вкладку Shelf, сохраняя их в локальной истории изменений. Чтобы попробовать, нажмите ⇧⌘A на macOS (Ctrl+Shift+A на Windows или Linux) и введите «Save to Shelf».

Интеграция с Perforce

Perforce-плагин теперь полностью совместим с IntelliJ IDEA Community Edition и поставляется в комплекте с IDE. The source code for this plugin is available on GitHub.

Редактор

Настраиваемый шрифт

Настройки толщины шрифта

Когда программируешь много часов подряд, комфортный шрифт имеет большое значение. Мы добавили настройки типографики, чтобы вы могли подобрать идеальные размеры шрифта. В версии 2021.1 можно отрегулировать толщину обычных и жирных шрифтов в меню Preferences / Settings | Editor | Fonts.

Раскрытие вкладок в режиме разделенного редактора

Раскрытие вкладок в режиме Split

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

Поддержка JSONPath

IntelliJ IDEA теперь поддерживает выражения JSONPath с синтаксисом Goessner и Jayway. При работе с файлами JSON можно вызвать действие Evaluate JSONPath Expression через Edit | Find для написания JSONPath-запросов. Для файлов, содержащих выражения JSONPath, вы можете использовать эту же функциональность и добавить входные данные JSON для тестирования JSONPath-запроса.

Поддержка JSON Lines

Поддержка JSON Lines

IntelliJ IDEA has support for the newline-delimited JSON Lines format, which is used for working with structured data and logs. IDE распознает типы файлов .jsonl, .jslines, .ldjson и .ndjson.

Профилировщик Ultimate

Мы переработали интерфейс профилировщика. Окно Home стало более информативным, и теперь профилировщик быстрее подключается к процессу. Мы также добавили два новых действия, которые вызываются правым кликом по запущенному приложению. Capture Memory Snapshot делает HPROF-снэпшоты, а CPU and Memory Live Charts открывает вкладку с инструментами визуализации для отслеживания потребления ресурсов.

Java

Поддержка Java 16

В IntelliJ IDEA есть базовая поддержка Java 16, вышедшей в марте этого года. Обновления включают возможность объявлять члены внутреннего класса, которые являются явно или неявно статическими, и изменения в Stream.collect(toUnmodifiableList()), который теперь преобразован в stream.toList(). IDE показывает toList() первым в списке автодополнения для стрима.

Новые инспекции при анализе потока данных

IntelliJ IDEA предупредит вас в случае инициализации массива с отрицательным размером. Она также распознает методы Arrays.copyOf() и Collection.toArray(). Кроме того, IDE поддерживает методы распаковки и преобразования целых чисел, такие как Integer.longValue и Byte.intValue.

Другие инспекции

Теперь можно избежать ненужных приведений, сузив тип параметра для каждого цикла for-each. Еще одна инспекция позволяет упростить синтаксис, поменяв местами вызовы .filter() и .map(), если фильтр использует значение, сгенерированное маппером. Кроме того, инспекция, которая заменяет StringBuffer на StringBuilder, теперь охватывает больше случаев.

Форматирование цепочных методов Builder

Благодаря новым настройкам форматирования методы Builder, вызываемые по цепочке, стало проще читать. Форматирование настраивается в разделе Preferences/Settings | Editor | Code Style | Java | Wrapping and Braces в раскрывающемся списке Chained method calls. Рядом с Builder methods можно указать список методов, которые IDE следует воспринимать как методы Builder и размещать каждый из них на отдельной строке. Если выбрать опцию <0>Wrap first call, первый метод тоже будет расположен на отдельной строке. Вы также можете расставлять отступы вручную, и если выберите Keep builder methods indents, IDE не будет их менять.

Kotlin

Ускоренная подсветка Kotlin-кода

Ускоренная подсветка ошибок

Анализ кода «на лету» обнаруживает ошибки и показывает предупреждения намного быстрее. По сравнению с предыдущими версиями, IntelliJ IDEA 2021.1 подсвечивает проблемы в коде почти мгновенно. Автодополнение тоже ускорилось, и IDE быстрее реагирует на зависания.

Ускоренная подсветка Kotlin-кода

Улучшенное автодополнение кода

Механизм автодополнения Kotlin-кода предлагает подставить функции, которые требуют параметров типов. При выборе такой функции IDE добавляет параметр правильного типа в предшествующий код.

Улучшенный анализ покрытия кода

Инструмент анализа покрытия кода в IntelliJ IDEA теперь полностью поддерживает Kotlin во встроенных функциях и корутинах.

Обновленный рефакторинг

Мы переработали интерфейс рефакторинга Change Signature, там появился новый флажок — добавленный параметр можно сделать параметром по умолчанию.

Обновления отладчика

Отладчик IntelliJ IDEA теперь умеет вычислять get-выражения в Kotlin и показывает их на вкладке Variables. Оттуда можно сразу перейти к исходной строке.

UML для Kotlin

Диаграммы классов UML для Kotlin

Диаграммы классов UML теперь работают для Kotlin-кода, компилируемого под JVM, и могут отображать классы и Java, и Kotlin. В ближайшее время мы планируем поддержать UML-диаграммы для других Kotlin-бэкэндов.

Scala

Род в подсказке о несоответствии типа

Род в подсказке о несоответствии типа

Для Scala-разработчиков, использующих типы более высокого рода, подсказки о несоответствии типа теперь поддерживают род.

Автодополнение на основе машинного обучения

Автодополнение на основе машинного обучения

В новой версии для Scala доступно автодополнение на основе алгоритмов машинного обучения. Оно включается в меню Settings | Editor | Code Completion | ML | Scala.

Фазы и единицы на диаграммах компиляции

Чтобы вы могли получить более глубокое представление о компиляции, на диаграммах компиляции, помимо модулей, теперь отображаются фазы и единицы. Откройте окно Build и выберите нужную степень детализации в узле Chart.

Шаблон для создания IntelliJ-плагинов

Шаблон для создания IntelliJ-плагинов

The sbt-idea plugin makes it possible to develop IntelliJ Platform plugins using Scala and sbt. В мастере проектов есть новый шаблон, который делает этот процесс еще проще (функциональность зависит от Plugin DevKit).

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

Просмотр памяти с HPROF

Мы вернули возможность менять настройки при импорте Maven-проектов. Чтобы ее активировать, выберите опцию Show settings dialog for new Maven projects в меню File | New Projects Settings | Preferences for new Projects | Build, Execution, Deployment | Build Tools | Maven.

Фреймворки и технологии Ultimate

Поддержка пул-реквестов

Инспекция для замены http://

Теперь IntelliJ IDEA подсвечивает случаи использования протокола http:// и предлагает заменить их на https://. Эта инспекция включена по умолчанию. Вы всегда можете указать, какие URL-адреса следует игнорировать, или отключить инспекцию для всего проекта или его частей в меню Preferences/Settings | Editor | Inspections | SecurityLink with unencrypted protocol.

Поддержка пул-реквестов

Улучшенный HTTP-клиент

Мы значительно переработали окно Services, в котором появляется ответ при выполнении запроса из HTTP-клиента. Можно свернуть возвращенный HTML, JSON или XML, скопировать тело ответа, скрыть номера строк, выбрать формат отображения и быстро прокрутить ответ сверху вниз.

Поддержка SSL в HTTP-клиенте

Поддержка SSL в HTTP-клиенте

Если для протоколов https:// вы используете SSL-аутентификацию клиента, в HTTP-клиенте можно настроить SSL: нажмите Add environment file и выберите Private. IDE автоматически создаст файл, в который вы сможете добавить конфигурации SSL. Автодополнение поможет вам в этом.

Поддержка интерфейса Swagger

Обновленный мастер проектов для фреймворков JVM

Мы переработали мастер создания проектов Spring, Micronaut, Quarkus и MicroProfile. Теперь создать новый проект можно всего за два шага. На первом экране собрана вся важная информация, а на втором — настройки, зависящие от фреймворка. Создавать проекты стало проще, и интерфейс выглядит аккуратнее.

Поддержка пул-реквестов

Улучшенная поддержка JPA

Мы обновили значки в поле редактора для проектов, включающих сущности JPA. Если нажать на такой значок, откроется список самых полезных действий для сущностей JPA и их атрибутов. Мы также улучшили поддержку JPA для Kotlin и многомодульных проектов.

JPA-консоль для Jakarta EE 9

JPA-консоль для Jakarta EE 9

В проектах Jakarta EE 9 для написания и выполнения запросов JPQL теперь можно использовать JPA-консоль.

Новая цветовая схема для UML-диаграмм

Новая цветовая схема для UML-диаграмм

Хорошая новость для тех, кто использует светлую тему: в новых цветах UML-диаграммы выглядят четче и аккуратнее.

Улучшения Swagger

Swagger поддерживает спецификации со ссылками на внешние файлы ($ref). На панели Structure для файлов спецификаций предусмотрено больше узлов, включая Security, Callbacks и Examples.

Генератор объектов страницы Selenium

IntelliJ IDEA теперь поддерживает экспериментальный инструмент для обнаружения DOM-элементов в веб-приложениях. Перед его использованием установите плагин Selenium UI Testing.

Перейдите в меню Tools | Generate Selenium Page Object. В открывшемся диалоге введите адрес веб-страницы, выберите любой DOM-элемент и добавьте его в область ниже. Там можно изменить язык и фреймворк. Генератор объектов страницы поддерживает Java, Kotlin и Groovy, а также фреймворки Selenium, FluentLenium, Selenide, Geb, Atlas и JDI Light.

Для каждого фреймворка можно настроить шаблоны кода.

Kubernetes Ultimate

Быстрое удаление ресурсов

Быстрое удаление ресурсов

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

Поддержка компонентов Kustomize 3.7.0

В раскрывающемся списке Kustomize version в Settings/Preference | Languages & Frameworks | Kubernetes можно выбрать новые компоненты Kustomize 3.7.0.

Поддержка kind: List

Поддержка kind: List

Чтобы вы могли работать с выводом команды kubectl get <resource type> -o yaml и распределять ресурсы по спискам, IntelliJ IDEA теперь поддерживает kind: List. В каждом ресурсе из списка можно переименовывать метки, работает помощь в написании кода и навигация с помощью значков на полях. Вы также можете преобразовать список в многодокументный YAML-файл и наоборот.

Нестандартные файлы со значениями для проектов Helm

Теперь вы можете создавать свои файлы values.yaml. IDE распознает файлы со словом «values» в именах как файлы со значениями. Выберите опцию Configure Helm Parameters, Helm Lint или Helm Template в контекстном меню, чтобы открыть диалог, в котором можно указать, какие файлы должны использоваться в шаблоне схемы. Значения также можно добавить вручную, вставив их в поле Additional values.

Docker

Обновленные конфигурации запуска/отладки

Диалог Run/Debug Configuration стал более гибким и выглядит аккуратнее. Чтобы добавить все необходимые параметры сборки, нажмите Modify options. Для добавления параметров запуска нажмите Modify. Теперь IDE проверяет каждый параметр, чтобы убедиться в его совместимости. IntelliJ IDEA поддерживает все существующие параметры Docker Compose. Для Dockerfiles в полях Run options и Image ID or name работает автодополнение.

Поддержка BuildKit

Поддержка BuildKit

Мы добавили экспериментальную поддержку BuildKit для ускорения сборки проектов. Кроме того, стало проще собирать именованные ступени отдельно от всего многоступенчатого файла Dockerfile. Просто нажмите на значок молотка рядом с названием ступени, и IDE соберет образ с помощью BuildKit.

Обновленный UI для многоступенчатых Dockerfiles

Обновленный UI для многоступенчатых Dockerfiles

В многоступенчатых Dockerfiles ступени четко отделены друг от друга и их можно сворачивать.

Отмена запуска Docker

Отмена запуска Docker

Теперь можно быстро остановить запущенный Dockerfile: выберите запущенный файл в окне Services, откройте контекстное меню и нажмите Stop Deploy.

Переменные окружения и макросы при монтировании каталогов

Переменные окружения и макросы при монтировании каталогов

При монтировании каталога как файловой системы теперь можно быстро указать путь к каталогу на хосте. Механизм автодополнения позволяет выбирать макросы и переменные окружения в поле Bind mount в окне Run/Debug Configurations.

Автодополнение образов в Dockerfiles

Автодополнение образов в Dockerfiles

Теперь автодополнение работает для имен образов.

JavaScript Ultimate

Улучшенная поддержка Stylelint

Inspecting your CSS code with Stylelint is now easier. исправить ошибки в CSS-коде можно всего за пару кликов. Наведите указатель мыши на проблемное место в файле или поместите туда курсор и нажмите Alt+Enter, а затем выберите Stylelint: Fix current file. Кроме того, теперь можно указать путь к файлу конфигурации в соответствующем поле в разделе Preferences / Settings | Languages & Frameworks | Style Sheets | Stylelint.

Встроенная документация MDN

MDN documentation is now bundled with IntelliJ IDEA. Это помогает избежать проблем с подключением к сайту MDN, и документация в HTML, CSS и JavaScript-файлах отображается быстрее. Кроме того, она стала более информативной: например, можно посмотреть подробную информацию о поддерживаемых версиях браузеров для API JavaScript.

Специфичность селекторов в файлах стилей

When working with style sheets, you can now check the specificity of your selectors – just hover over a selector that you want to check. Или переместите на него фокус и нажмите F1/Ctrl+Q, чтобы просмотреть эту информацию во всплывающем окне документации.

Инструменты для работы с базами данных Ultimate

Полную информацию об обновлениях инструментов для работы с базами данных вы найдете на этой странице.

Интерфейс для работы с правами доступа

Интерфейс для работы с правами доступа

Мы добавили интерфейс для изменения прав доступа при редактировании объектов. В окне Modify user (вы можете открыть его из проводника баз данных для любого пользователя при помощи команды Cmd/Ctrl+F6) появился интерфейс для назначения объектам прав доступа. Функциональность доступна для PostgreSQL, Redshift, Greenplum, MySQL, MariaDB, DB2, SQL Server и Sybase.

Контекстные шаблоны Live Templates

Контекстные шаблоны Live Templates

Теперь можно генерировать простые операторы прямо из проводника баз данных с помощью шаблонов Live Templates. Можете добавлять свои шаблоны или выбирать из имеющихся: загляните в узел SQL в Preferences/Settings | Editor | Live Templates.

Базы данных: копирование

Упрощение действий

Мы упростили навигацию: действие Go to declaration (Ctrl/Cmd+B), вызванное для объекта в SQL, теперь открывает DDL, а не проводник базы данных. Также мы ввели сочетание клавиш для действия Select in database tree: Alt+Shift+B для Windows/Linux и Opt+Shift+B для macOS.

Базы данных: улучшенная сортировка

Улучшенная сортировка

Мы улучшили сортировку данных. Новое поле ORDER BY работает аналогично полю WHERE (которое раньше называлось Filter): укажите грамматически верное предложение, и оно применится к запросу таблицы. Если вы хотите использовать сортировку на стороне клиента (когда IntelliJ IDEA не выполняет запросы заново, а вместо этого сортирует данные на текущей странице), уберите галочку для опции Sort via ORDER BY. По умолчанию сортировки друг на друга не «накладываются»‎. При нажатии на название столбца, по которому вы хотите отсортировать данные, сортировка на основе других столбцов будет очищена.

Базы данных: копирование

Простое копирование источников данных

Теперь вы можете копировать, вырезать и вставлять источники данных при помощи всем известных сочетаний клавиш Ctrl/Cmd+C/V/X. При копировании источника данных XML сохраняется в буфер обмена, и вы можете поделиться им в мессенджерах. Также вы можете использовать вставку, чтобы вставить фрагмент XML куда-либо еще. Если вы вырежете и вставите источник данных в рамках одного и того же проекта, фрагмент будет попросту перемещен, и вам не понадобится вводить пароль. В других случаях введение пароля обязательно.

Редактирование данных в MongoDB

Редактирование данных в MongoDB

Теперь вы можете редактировать данные в коллекциях MongoDB. Также доступен предпросмотр операторов. Чтобы сделать редактирование более гибким, мы добавили возможность изменения типа поля прямо из интерфейса. Это можно сделать через контекстное меню поля либо в редакторе значений.

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

Встроенная поддержка общих индексов

В IntelliJ IDEA Community Edition встроена поддержка общих индексов. Больше не нужно устанавливать плагин — эта функциональность есть в самой IDE.

Android

IntelliJ IDEA поддерживает все нововведения Android Studio 4.1.1.

Поддержка bnd-maven-plugin

IntelliJ IDEA теперь позволяет импортировать настройки фасетов OSGI из bnd-maven-plugin.