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

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

Главное

Логическая структура кода в окне Structure
Ultimate

Теперь в окне Structure отображается логическая структура кода вместе с привычной физической. Это позволяет видеть не только классы, методы и поля, но и связи между компонентами проекта. Например, открыв контроллер в Spring Boot, вы увидите его конечные точки и подключенные компоненты приложения. Новое представление помогает лучше понимать структуру проекта и упрощает навигацию по коду, позволяя ориентироваться не только на использования, но и на логические связи.

Улучшенная отладка Kubernetes-приложений
Ultimate

Отладка приложений на Kubernetes стала еще удобнее. Нажмите три точки рядом с кнопкой Debug и выберите Add Tunnel for Remote Debug, чтобы активировать туннель для удаленной отладки. Это фактически сделает ваш компьютер частью кластера Kubernetes, позволяя локально заменить реальный под своим окружением и отлаживать микросервисы с помощью привычных инструментов. Остальные микросервисы будут взаимодействовать с вашим компьютером как с настоящим подом, с полным доступом ко всей сети кластера. Даже отладчики, не поддерживающие Kubernetes, работают без проблем. Кроме того, в окне Services добавлен раздел Forward Ports, который упрощает настройку перенаправления портов.

Логи кластера Kubernetes
Ultimate

Теперь в IntelliJ IDEA можно просматривать логи всего кластера Kubernetes с поддержкой потоковой передачи и поиска по шаблонам — это удобно для разработчиков, команд DevOps и SRE. IDE собирает события со всех подов, узлов и сервисов, позволяя быстро находить проблемы без ручного поиска по логам. Потоковая передача в реальном времени позволяет оперативно проводить диагностику, а сопоставление шаблонов автоматизирует обнаружение важных событий и ошибок, таких как нехватка памяти или необычная сетевая активность. Подробнее об этой функции читайте в нашем блоге.

Стабильный режим K2

В IntelliJ IDEA 2024.3 режим K2 официально вышел из бета-версии: он стабилен и полностью готов к использованию. K2 повышает надежность анализа кода, эффективность потребления памяти и общую производительность IDE. Теперь в нем лучше поддерживается Java и доступны все новые возможности Kotlin 2.1. Для включения режима перейдите в Settings/Preferences | Languages & Frameworks | Kotlin.

AI Assistant

Встроенные обращения к ИИ

В IntelliJ IDEA 2024.3 можно взаимодействовать с AI Assistant прямо в редакторе. Просто напишите запрос обычным языком, и AI Assistant сразу же сгенерирует нужный код, отметив изменения фиолетовым цветом. При этом AI Assistant учитывает контекст, автоматически добавляя связанные файлы и символы для более точной генерации кода. Эта функция поддерживается в файлах Java, Kotlin, Scala, Groovy, JavaScript, TypeScript, Python, JSON и YAML и доступна всем подписчикам AI Assistant.

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

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

Выбор модели для чата с ИИ

Теперь можно выбрать предпочтительную модель для чата с ИИ: Google Gemini, OpenAI или локальную модель на вашем устройстве. Это позволяет адаптировать чат под ваши потребности и сделать работу с ИИ более удобной.

Java и Kotlin

Улучшения в работе с постоянными условиями

В версии 2024.3 механизм анализа потоков данных лучше обрабатывает ситуации, когда ссылки могут указывать на один и тот же объект. Это уменьшает количество ложных срабатываний в инспекциях и повышает точность анализа кода. Улучшения касаются как Kotlin, так и Java.

Улучшение Java-форматера

Теперь форматер в IntelliJ IDEA оставляет пустые строки между аннотациями и полями, что помогает улучшить читаемость кода в JPA-сущностях. Раньше такие строки по умолчанию удалялись. Соответствующую настройку можно найти в разделе Settings | Editor | Code Style | Java | Blank Lines.

Поддержка экспериментальных возможностей Kotlin 2.1

В режиме K2 IntelliJ IDEA поддерживает две экспериментальные функции Kotlin 2.1. Теперь можно использовать выражения break и continue внутри лямбд, передаваемых в качестве аргументов в inline-функции. Интерполяция строк, которые начинаются со знака доллара, стала проще: больше не нужно применять обходные решения вроде ${'$'}. Это особенно удобно при работе с JSON-схемами.

Scala

Поддержка Scala 3

Теперь в IntelliJ IDEA можно использовать вывод типов на основе компилятора для вызовов inline-методов в Scala 3. Это делает поддержку библиотек, использующих макросы, еще лучше, открывая все функции, связанные с типами (например, автодополнение, навигацию, подсказки типов), для кода с макросами. Пока что это экспериментальная функция.

IntelliJ IDEA 2024.3 также полностью поддерживает именованные кортежи — новую экспериментальную функцию Scala 3.5, которая станет стандартной в Scala 3.6. Как следует из названия, именованные кортежи позволяют задавать имена компонентам кортежа, чтобы к ним можно было обращаться по понятным именам.

Кроме того, IntelliJ IDEA стала лучше распознавать непрозрачные типы. Раньше она понимала ключевое слово opaque, но обрабатывала такие типы как обычные (т. е. прозрачные) псевдонимы. Теперь же непрозрачные типы распознаются как абстрактные, и их внутренняя реализация не раскрывается.

Scala CLI

IntelliJ IDEA теперь автоматически распознает проекты Scala CLI, если в открываемой папке есть конфигурационный файл project.scala. Вы также можете создать новый проект Scala CLI на основе BSP в мастере New Project и добавлять в него новые Scala-файлы, как и в проекты на основе sbt.

Новая проектная модель проектов для sbt

Модель проекта в IntelliJ IDEA теперь точнее отображает sbt-проекты, разделяя исходный код для продакшн- и тестовых частей на отдельные модули. Это упрощает работу с зависимостями и позволяет задавать разные параметры компиляции для каждого типа ресурсов. Функция пока доступна в бета-версии.

Улучшенная подсветка с использованием компилятора

Мы сократили количество случаев, когда компиляция запускалась несколько раз подряд. Например, если рефакторинг затрагивает несколько файлов и вызывает много запросов на компиляцию, IntelliJ IDEA теперь анализирует их, объединяет и запускает один более крупный запрос, охватывающий больше файлов. Это снижает нагрузку на процессор и ускоряет подсветку.

Мы также исправили редкие случаи, когда IDE показывала дублирующиеся ошибки — одновременно от парсера Scala и от компилятора.

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

Проверка орфографии и грамматики во время индексации

Мы продолжаем работать над тем, чтобы еще больше функций были доступны во время сборки и индексации проекта. Так, в версии 2024.3 работает проверка орфографии и грамматики. Это позволяет находить, например, ошибки в Markdown-документах и тегах документации, не дожидаясь завершения индексации.

Виджет Run: одновременный запуск нескольких конфигураций

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

Больше открытых вкладок

Теперь в редакторе по умолчанию можно держать открытыми до 30 вкладок, прежде чем IDE начнет закрывать наименее используемые. Эту настройку можно изменить в разделе Settings | Editor | General | Editor Tabs.

Новое положение Rename в меню

Мы поменяли расположение действия Rename в контекстном меню при его вызове в редакторе и в окне Project. Теперь оно находится в самом верху, и тем, кто часто пользуется мышкой, будет удобнее переименовывать файлы, переменные и другие элементы.

Подсветка всех вхождений выделенного текста

Теперь IntelliJ IDEA по умолчанию подсвечивает все вхождения выделенного текста в файле. Так сразу хорошо видно, где в коде встречается выбранный текст. Изменить настройку можно в разделе Settings | Editor | General | Appearance.

Новые иконки для файлов сообщений и интернационализации

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

Обновленное окно New для корневых каталогов Java

Теперь во всплывающем окне для добавления файлов в корневые каталоги исходного кода Java показываются только самые подходящие варианты. Если вам больше нравится прежний расширенный список, можете вернуть его в разделе Settings | Advanced Settings | Java.

Плавающая панель инструментов для файлов JSON, XML и YAML

Для файлов JSON, XML и YAML добавлена динамическая панель инструментов, которая упрощает доступ к контекстным действиям и функциям на основе ИИ. Выделите код, и панель с доступными действиями появится автоматически.

Терминал

Улучшения в новом терминале
Бета

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

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

Генерация заголовков и описаний для pull- и merge-реквестов

AI Assistant теперь помогает создавать понятные и лаконичные заголовки и описания для pull- и merge-реквестов прямо в IDE, делая этот процесс быстрее и удобнее.

Обновленный поиск по файлам

Теперь у функции Find in Files есть новый режим — Project Files Excluding Git-Ignored. Из поиска исключаются файлы, указанные в .gitignore, помогая вам сосредоточиться только на нужном коде.

Отключение фоновых проверок перед коммитом

Вы можете управлять фоновыми проверками в процессе коммита с помощью новой опции Run advanced checks after a commit is done в разделе Settings | Version Control | Commit. Она позволяет запускать тесты и инспекции после коммита. Если вы хотите, чтобы проверки завершались до коммита, просто отключите эту опцию.

Название ветки на начальном экране

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

Отладчик

Улучшенная функция HotSwap

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

Действие для создания точек останова по исключениям

Теперь можно ставить точки останова на исключения прямо в редакторе. Просто нажмите ⌥↩ на macOS или Alt+Enter на Windows/Linux в месте выброса или перехвата исключения и выберите Enable exception breakpoint. Больше не нужно открывать диалог Breakpoints или просматривать трассировку стека в консоли.

Информация о времени выполнения строк кода

В IntelliJ IDEA 2024.3 больше не нужно добавлять логи и таймеры в код, чтобы измерить время выполнения нескольких строк. Просто вызовите действие Run to Cursor, и вы увидите время выполнения каждой строки прямо в редакторе. Для более подробного анализа можно перейти к вызванным методам, где также будет отображаться информация о времени выполнения.

Объединенная трассировка стека для асинхронного кода

IntelliJ IDEA 2024.3 упрощает отладку асинхронного кода, когда задачи планируются в одном потоке, а выполняются в другом, и каждый поток имеет свой собственный стек вызовов. Теперь IDE выводит в консоль объединенный стек вызовов, а не только стек рабочего потока — так проще следить за потоком выполнения. Эта функция включена по умолчанию для тестов.

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

График использования памяти в куче
Ultimate

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

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

Ускоренная компиляция мультимодульных проектов

В IntelliJ IDEA 2024.3 компиляция модулей по умолчанию выполняется параллельно. Раньше модули компилировались по одному, и в больших проектах на это уходило много времени. Теперь компиляция Maven-проектов проходит быстрее благодаря оптимизации использования процессора и памяти.

Автоматическое управление недоверенными SSL-сертификатами

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

Поддержка разделенных локальных репозиториев Maven

IntelliJ IDEA теперь полностью поддерживает разделенные локальные репозитории Maven — функцию, представленную в Maven 3.9. Это позволяет организовать локальные репозитории по вашему усмотрению: например, группировать их по удаленным репозиториям, хранить артефакты в отдельных папках или сортировать их по веткам с помощью префиксов. Раньше использование раздельных репозиториев могло приводить к сбоям синхронизации в IntelliJ IDEA и проблемам с зависимостями и сборками. Теперь эта функция работает стабильно, обеспечивая правильную синхронизацию и эффективное управление репозиториями.

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

Автоматическая генерация методов для репозиториев Spring Data
Ultimate

IntelliJ IDEA 2024.3 может автоматически создавать производные методы запросов для репозиториев Spring Data. Вам больше не нужно вручную обновлять исходный код репозитория. Просто начните вводить имя метода, и IntelliJ IDEA предложит подходящие варианты, сгенерирует правильную сигнатуру и обновит репозиторий за вас.

Обновления HTTP-клиента
Ultimate

В IntelliJ IDEA 2024.3 появилась возможность доступа к переменным окружения прямо в HTTP-клиенте с использованием синтаксиса $env.ENV_VAR. Это позволяет более гибко управлять переменными и использовать их в запросах и скриптах. Кроме того, теперь можно импортировать запросы из одного .http-файла в другой и выполнять их — отдельно по имени или все сразу.

Выход Ktor 3.0
Ultimate

Ktor 3.0 — это обновленная версия фреймворка для создания серверных приложений на Kotlin. Эта версия использует Kotlin 2.0 и улучшает производительность операций ввода-вывода за счет перехода на библиотеку kotlinx-io. Подробнее

Упрощенная отладка нативных образов GraalVM
Ultimate

Мы значительно упростили отладку нативных образов GraalVM в Docker-контейнерах, и теперь можно собирать и отлаживать нативные Java-приложения на любой платформе. Просто укажите в конфигурации запуска один контейнер для сборки приложения, а другой — для его запуска. Когда приложение запущено, вы можете отлаживать его как на уровне Java-кода, так и на уровне ассемблера. Для вашего удобства мы предоставляем готовые Docker-образы со всем необходимым ПО и библиотеками.

Улучшения для OpenTofu и Terraform
Ultimate

В IntelliJ IDEA добавлена поддержка OpenTofu. В этом обновлении реализовано автодополнение для методов шифрования и поставщиков ключей, а также проверка неизвестных ссылок.

Действия для запуска Terraform теперь легко найти через Search Everywhere, и IDE автоматически отмечает неиспользуемые переменные и локальные значения, помогая поддерживать чистоту кода. Команды Init, Validate, Plan, Apply и Destroy были улучшены, а форма конфигурации запуска стала более удобной. Обновленные подсказки и предупреждения о неиспользуемых ресурсах упрощают навигацию и помогают быстро находить неактивный код.

Расширенная поддержка Dev Containers
Ultimate

Сборки в Dev Containers теперь работают более стабильно на удаленных Docker-движках, предотвращая ошибки, когда локальные директории недоступны удаленно. Корме того, сборка образов и соединения стали более надежными в WSL.

Файл devcontainer.json обрабатывает features более стабильно. Новая опция updateRemoteUID помогает избежать проблем с доступом, корректно устанавливая идентификатор пользователя. Кроме того, теперь можно настраивать параметры IDE в Dev Containers через файл devcontainer.json или с помощью кнопки Add currently modified settings from IDE (для всех доступных вариантов есть автодополнение).

Улучшения для Docker Compose
Ultimate

IntelliJ IDEA 2024.3 предоставляет расширенную поддержку Docker Compose. Теперь файлы .env имеют приоритет в автодополнении для env_file, что ускоряет настройку окружения. С новыми параметрами сборки — cache_to, no_cache, tags и platforms — удобнее контролировать кэширование и выбор платформ. Улучшенная обработка depends_on.required и depends_on.restart позволяет эффективнее управлять порядком запуска и остановки зависимых контейнеров.

С помощью новых ключей, таких как deploy.placement.preferences, deploy.resources.pids и deploy.resources.reservations.devices, можно гибко настраивать размещение сервисов и ограничения ресурсов. Поддерживаются многоконтекстные и привилегированные сборки через параметры build.additional_contexts и build.privileged.

Дополнительные опции включают конфигурации cgroup, пользовательские настройки extra_hosts и параметр healthcheck.start_interval. Улучшенные настройки портов и secrets.environment управляют управление секретами через переменные окружения.

Улучшенная поддержка проектов в WSL
Ultimate

Мы продолжаем улучшать стабильность проектов, размещенных в WSL и открываемых из Windows. В частности, мы добавили поддержку символических ссылок и повысили производительность за счет перехода на сокеты Hyper-V для взаимодействия с WSL. Мы продолжаем совершенствовать платформу, чтобы повысить производительность при работе с удаленными окружениями, включая WSL.

Kubernetes

Поддержка сетевых политик
Ultimate

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

Веб-разработка

Поиск по проекту без лишних файлов
Ultimate

Теперь IntelliJ IDEA по умолчанию исключает папку node_modulesиз поиска по файлам в директориях проекта, убирая лишние файлы из выдачи. Если вы хотите вернуть прежнее поведение, включите опцию Search in library files when “Directory” is selected in Find in Files в разделе Settings | Advanced Settings.

Переименование компонентов фреймворков и навигация по ним
Ultimate

Мы улучшили подсказки для компонентов Vue, Svelte и Astro в редакторе. Действие Show component usages теперь находит использования как в импортированных файлах, так и в шаблонах разметки. Мы также добавили фильтр Show Component Usages, который позволяет исключать упоминания компонента при поиске обычных ссылок на файлы. Кроме того, в рефакторинг Rename добавлена опция, которая позволяет автоматически обновлять все упоминания компонента при переименовании его файла.

Улучшения для Angular
Ultimate

В проектах на Angular 19 теперь по умолчанию используется автономный режим для компонентов, директив и пайпов. Добавлены быстрые действия для преобразования автономных компонентов в обычные и наоборот. Неиспользуемые автономные импорты можно автоматически удалять при форматировании кода или с помощью новой инспекции. Кроме того, улучшена поддержка синтаксиса @let.

Работа с базами данных

Генерация SQL-кода по текстовому запросу: подсветка сгенерированных изменений в редакторе
Ultimate

Мы упростили работу с AI Assistant в редакторе. Теперь, когда вы просите AI Assistant отредактировать фрагмент кода, в редакторе отображается diff, где виден исходный и сгенерированный код. Предложения AI Assistant выделены другим цветом, а на полях рядом с ними есть кнопка отмены. Кроме того, вы можете самостоятельно отредактировать сгенерированный код. Ваши изменения будут выделены точно так же. Например, можно попросить AI Assistant получить больше данных с помощью запроса, а затем добавить к полученному результату условие ORDER BY.

Обработка ошибок SQL с помощью AI Assistant
Ultimate

В области сообщения об ошибке появилась пара новых действий для обработки ошибок, возникших при выполнении SQL-запросов, с помощью AI Assistant. Explain with AI открывает чат с ИИ, автоматически отправляет запрос и показывает объяснение ошибки, а Fix with AI генерирует исправление в редакторе.

Проверка на излишнее количество операторов JOIN
Ultimate

В некоторых случаях выполнение запроса с чрезмерным количеством операторов JOIN снижает производительность. Редактор теперь может находить и выделять такие запросы. Чтобы включить эту инспекцию, перейдите в настройки IDE: откройте Editor | Inspections, разверните раздел SQL и выберите Excessive JOIN count.

Плавающая панель для разделения на страницы
Ultimate

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

Частичная интроспекция и умное обновление для MySQL и MariaDB
Ultimate

Новая версия IntelliJ IDEA поддерживает частичную интроспекцию. Раньше всегда выполнялась полная интроспекция схем в MySQL или MariaDB, а обновить метаданные отдельного объекта было нельзя. Каждый раз при выполнении DDL-запроса в консоли, при котором мог измениться объект в схеме базы данных, IDE начинала полную интроспекцию всей схемы. Это требовало много времени и часто мешало нормальной работе.

Теперь IntelliJ IDEA анализирует DDL-запрос, определяет, какие объекты могли быть затронуты, и обновляет только их. Если в проводнике баз данных выбрать один объект и вызвать действие Refresh, будет обновлен только этот объект, а не вся схема, как раньше.

Другое

Прекращение поддержки глобального меню на Linux

В версии 2024.3 IntelliJ IDEA больше не поддерживает глобальное меню на Linux.