Обзор возможностей IntelliJ IDEA 2023.2
November 16, 2023 . 7 минут на чтение статьиДолгожданный LSP, встроенный AI-чат, апгрейд до Windows 10 и -Xmx2G
Это ретроспективный пост фичей IntelliJ IDEA 2023.2, в преддверии 2023.3 (которая сейчас в состоянии Beta 2). Несмотря на то, что эта версия вышла еще в июле, не все в точности помнят, что же там произошло, и какую версию они вообще используют.
Идея раздулась до 2 гигабайт хипа, появилась поддержка LSP-серверов, и теперь вам нужно проапгрейдиться с Windows 7 минимум до Windows 10.
Из мелочей: появился чата с нейронкой "AI Assistant". Профилировщик научился отображать подсказки прямо в редакторе, а интеграция с GitLab позволяет меньше переключаться между браузером и IDE.
Хотите узнать подробней?
Ключевые изменения
- Появился AI Assistant, который добавляет чат с нейронкой под капотом, позволяя делать простые вещи вроде написания документации в комментариях, подсказывания хороших наименований, генерации названий коммитов, и так далее. Ничего супер интеллектуального он не делает. Доступ к возможностям AI пока что ограничен: он требует установки плагина и логина в сервис JetBrains AI. Дополнительная информация достуна по ссылке.
- Профилировщик отображает подсказки прямо в редакторе. Интерпретировать информацию можно по цветным аннотациям в гаттере.
- Интеграция с GitLab позволяет делать мердж-риквесты прямо из IDE. Подробности.
User experience
- Search Everywhere (Двойной ⇧ / Двойной Shift) теперь лучше ищет по тексту.
- Можно назначать заголовкам проектов уникальные цвета и загружать для них свои иконки. Если проектов в воркспейсе много, их куда легче находить. А еще, это красиво.
- Переработано гамбургерное меню в панели инструментов new UI на Windows и Linux. Когда нажимаешь на иконку, элементы отображаются горизонтально, перекрывая тулбар. Появилась опция превратить это меню в отдельный тулбар.
- Во вьюхе Project теперь можно сортировать файлы по времени изменения.
- Пользователи new UI получили альтернативную тему Light with Light Header. Это светлая тема, в которой синхронизированы цвета для загловков окнон, подсказок и всплывающих окон нотификаций.
- В полноэкранном режиме new UI на macOS, кнопки управления окном отображаются справа от главного меню, а не в перекрывающей панели, как раньше.
- В разделе настроек Settings / Preferences | Editor | Inspections реализована подсветка примеров кода.
- Для удобства пользователей Linux, нативный заголовок (который рисует операционная система) удален из new UI, это делает интерфейс более чистым и аккуратным.
- Во вьюхе Project, появилась новая опция Open Directories with Single Click, которая делает разворачивание и сворачивание директорий более быстрым и отзывчивым.
- Расширены возможности настройки главной панели new UI. Появилась выпадашка, в которой можно быстро выбрать элементы, которые появятся на тулбаре.
- В разделе настроек Settings/Preferences | Plugins появился набор рекомендуемых плагинов, который автоматически формируется на основе специфики открытого проекта.
- Переработан интерфейс запуска и отладки во вьюхе Services, теперь оно выглядит более похожим на виджет Run/Debug.
- В виджете Run теперь можно запинить ваши наиболее любимые конфигурации. Это полезно, когда у вас очень много конфигруаций и требуется функциональность "закладок".
Java
- Расширено количество инспекций для того, чтобы писать более высококачественный и правильный код. Подробнее об улучшения в коданализе есть отдельный пост.
- Появилась подсветка и навигация по форматирующим строкам.
- Улучшилась поддержка тэга
@snippet
в Javadoc-комментариях. - Обнаружились новые способы применять рефакторинги сразу к нескольким элементам.
- Улучшено распознавание позиции метода в отчете о стектрейсе, даже если номера строк недоступны или разошлись с оригиналом.
- Более лучшее распознавание конкатенаций и интерполяции SQL в Java и Kotlin, ловить SQL-инъекции стало проще.
Scala
- Улучшенная поддержка Scala 3: нормальная поддержка enum-ов, улучшенный декомпилятор TASTy, более приличная отладка. Из дополнительных плюшек: более информативное дополнение для Universal Apply Methods, поддержка IArray в редакторе и более корректная работа с синтаксисом "fewer braces".
- Проекты на sbt стали работать чуть лучше.
- Починили несколько проблем с выводом типов.
- Zinc стал компилятором по-умолчанию. Это позволило полноценно поддержать инкрементальную компиляцию свежих фичей Scala 3, включая инлайн-методы.
- Улучшен интерфейс управления директориями source и target.
- Улучшилось отображение быстрой документации ScalaDoc. Включая подсветку аннотаций, ключевых слов и литералов, с использованием текущей выбранной темы оформления. Реализовано разделение списка трейтов и классов на несколько строк. Заработала поддержка ключевых слов из Scala 3.
Производительность
- Появилась новая утилита командной строки для быстрой сборки и заливки shared indexes. Это делается всего за несколько кликов, вместо написания кучи скриптов и сервисов. Подробности.
Run/Debug
- При отладке реактивных приложений, теперь можно быстро вычислять значения вотчей и локальных переменных для типов
Mono
иFlux
. - Автотестинг стал менее сырым, и теперь можно использовать его вместе с Maven/Gradle/JPS.
Контроль версий
- Появилась возможность коммитить только нужные тебе строки. Можно не коммитить куски кода целиком.
Профилирование
- Attach IntelliJ Profiler и Capture Memory Snapshot теперь запускаются отдельными кнопками в окне Run.
- По-умолчанию, теперь используется Wall-clock profiling mode (учитывается полное время, проведенное внутри метода, включая время ожидания).
Фреймворки и технологии
- Можно запускать и отлаживать приложения в Tomcat, запущенном через Windows Subsystem for Linux (WSL).
- Можно посылать gRPC-запросы по TLS с помощью HTTP Client.
- В HTTP Client появилась возможность разобрать спецификации Swagger и OpenAPI и показать соответствующее дополнение для тела JSON-запроса.
- В диалоговое окно Edit Swagger Codegen Configuration добавили кастомизаций, а конфигурации запуска теперь доступны из гаттера без дополнительных настроек.
- Появился предпросмотр Redoc UI для спецификаций OpenAPI и Swagger, включая YAML и JSON. Можно переключаяться между Redoc и Swagger UI прямо внутри IDE.
- Появилось автодополнение ключей JSON-файлов для JavaScript.
- Теперь можно вынести часто используемый JavaScript-код для обработчиков HTTP Client в отдельные модули и импортировать их.
- Предпросмотр PDF и HTML отображается рядом с результатами запросов HTTP Client.
- HTTP Client CLI позволяет взаимодействовать с GraphQL API и подключаться к сервисам через WebSocket.
- При нстройке конфигурации Spring Boot, поле VM options начало отображать автодополнение по ключам, которые можно перечислить с помощью во флага
-D
. - Автодополнение и валидация свойств в YAML-конфигурациях Spring доступны сразу же, без настройки процессора аннотаций.
- Появилась поддежка Spring AOP для Kotlin.
- Работа с форматом спецификаций AsyncAPI стала проще: появилась валидация схемы и автодополнение по референсам. Появилась вьюха Endpoints и панель Editor Preview.
- Для борьбы с Норвежской проблемой появилась специальная инспекция, которая подсвечивает возможность неправильной интерпретации булевских значений в YAML.
Docker
- Можно смотреть файлы внутри слоев.
- Можно использовать одну Docker-конфигурацию перед другой, добавив ее в список Before Launch.
Kubernetes
- Несколько kubeconfig-файлов уживаются внутри одного проекта. Управлять несколькими кластерами или несколькими средами в разных кластерах стало куда проще.
- В окне Services теперь можно смотреть логи деплойментов.
Сборка
- Полная поддержка свежей версии Maven 4.0.0-alpha.
Веб-разработка
- Улучшенное форматирование ошибок в JS/TS.
- Поддержка CSS nesting.
- Vue Language Server (Volar) умеет в более лучшее определение ошибок и информацию по типам. Это используется для точных быстрых переходов и в окне быстрой документации.
- Появилось несколько новых live templates для React hooks.
Качество кода
- Статический анализ теперь можно делать через JetBrains Qodana – лубочно-самобытный статический анализатор, по легенде подходящий к любым популярным способам строить CI/CD. Подробности.
Базы данных
- При работе с кластером Redis стали доступны все те же настройки и фичи, что и при работе с одиночной нодой.
- Переделан интерфейс миграции схемы.
- В окне настроек Data Editor and Viewer появилось поле Time zone. Этот часовой пояс используется при отображении datetime.
- Добавлена поддержка внешних баз и шар в Redshift.
Разное
- Появилась поддержка LSP API, который нужен разработчикам плагинов, получающих информацию о языке из LSP-серверов. Подробности.
- Плагин Big Data Tools распилен на несколько микроплагинов, которые можно использовать по-отдельности. Так возникли новые сущности: Kafka, Spark, Flink, Remote File Systems, Big Data File Viewer и Zeppelin.
- Объявлены устаревшими и больше не будут обновляться плагины для Struts2, Resin, tc Server, Play и Cloud Foundry.
- Встроенный Android-плагин научился фичам Android Studio Giraffe Beta 2, включая поддержку Android Gradle Plugin (AGP) 8.0.0. Фичи, которые требуют логина в аккаунт Firebase, не поддерживаются.
- Максимальный размер хипа (
-Xmx
) увеличен до 2Gb. - Windows 7 объявлена устаревшей. Чтобы продолжать пользоваться Идеей, нужно обновлиться до Windows 10 и выше.
Это были все наиболее важные изменения. Полный список изменений есть в release notes (но вы практически точно не хотите на него смотреть).
Ваша обратная связь крайне важна для дайджестов Javawatch. Если вам есть чем поделиться — сразу пишите Олегу.
Не забывайте подписаться на наши ресурсы, там есть ништяки:
- CodCraft - Youtube-канал от автора этого гайда
- Оправдания от Олега - Telegram-чат автора (общий, про всё на свете)
- Javawatch - Telegram-канал про Java
- Telegram-канал Failover Bar - единственный в Санкт-Петербурге (а может, и в России вообще) бар для разработчиков. Мы здесь постоянно встречаемся и разговариваем про Java.