Только что вышла IntelliJ IDEA 2023.2. В этом релизе в IDE появилась куча интересных фичей и важных улучшений.
Вы можете скачать последнюю сборку с официального сайта, или из бесплатного приложения Toolbox, или из snap-пакетов для Ubuntu.
Этот релиз IntelliJ IDEA 2023.2 представляет вам AI-ассистента, вооруженного набором инструментов машинного обучения. IntelliJ Profiler показывает подсказки в редакторе, делая профилирование более интуитивным и иформативным. Еще, в этом релизе появилась интеграция с GitLab.
В том посте мы пробежимся по всем основным фичам IntelliJ IDEA 2023.2. В отличие от официального анонса, вся европейская политкорректность выкинута на свалку, автор перевода не видит никакой ценности в соблюдении повесточки.
Кроме того, в этот четверг в Питере будет встреча Javawatch, посвященная Java 21. Я прочитаю мини-доклад минут на 30 о новых фичах, и потом мы сможем все вместе собраться и за кружкой пива это обсудить. Анонс события в телеге, обсуждение в чате. Я бывший PMM в JetBrains Big Data и тимлид в Remote Development/Projector, а сейчас работаю над российским дистрибутивом Java - Axiom JDK.
Ключевые изменения
В IntelliJ IDEA 2023.2 появился AI Assistant, который делает на основе машинного обучения штуки вроде автоматического написания комментариев, подсказки имен, генерации текста коммитов в гит, и тому подобное. Количество полезных фичей пока довольно ограниченное. Для начала работы, нужно установить плагин под названием AI Assistant и залогиниться в сервис JetBrains AI. Подробнее написано вот в этом посте.
IntelliJ Profiler научился показывать подсказки о перформансе прямо в редакторе, и это упрощает профилировку, резульаты проще интерпретировать, они подсвечены цветом в гаттере. Это достаточно очевидное изменение, и нет никаких разумных объяснений, почему этого не было сделано раньше.
Появилась интеграция с GitLab, как-никак это одна из самых популярных систем. Конкретно, теперь можно делать мердж-риквесты прямо из IDE. Подробности.
User Experience
Search Everywhere (вызывается через быстрое нажатие шифт-шифт или шифт-шифт-шифт, вы ведь в курсе об этой штуке?), теперь умеет искать текст.
Проектам можно назначать уникальные цвета и иконки, чтобы различать их внутри воркспейса. Ждём анимированные эмодзи :)
Меню "гамбургера" на основной панели инструментов пернеработали для Windows и Linux. Его элементы теперь отображаются горизонтально поверх панели, когда вы нажимаете кнопку гамбургера. Появилась опция автоматически превращать это меню в отдельный тулбар.
В панели Project теперь можно сортировать файлы по дате изменения.
Для пользователей нового интерфейса (так называемого New UI), теперь можно переключиться в тему Light with Light Header. В ней наконец-то цвета рамочек и всплывающих окон соответствуют цвету темы, и черный цвет не выжигает глаза. Пользователи New UI всё ещё должны страдать, но теперь меньше.
Используя полноэкранный режим New UI на mac OS, элементы управления окном отображаются как часть основной панели инструментов, а раньше это была плавающая панель.
В диалоге инспеций (Settings / Preferences | Editor | Inspections), реализована подсветка синтаксиса для шаблонов кода.
Для удобства пользователей Linux на десктопе (кто все эти люди?), нативная рамочка, отрисовываемая операционной системой, удалена из New UI, от этого интерфейс стал чище.
В панели Project, появилась опция Open Directories with Single Click, благодаря которой навигация по проекту ощущается более быстрой и отзывчивой.
Расширены возможности настройки главной панели New UI. Выпадающее меню позволяет быстро выбирать действия, которые хочется добавить на панель.
Обновленная секция Settings/Preferences | Plugins включает набор стандартных плагинов, список которых автоматически определяется в зависимости от специфики вашего проекта.
Переделан интерфейс для запуска и отладки в планели Services, чтобы ее внешний вид совпадал с виджетом Run/Debug.
Чтобы лучше управляться с несколькими конфигурациями запуска, реализована опциями запинить часто используемые конфигурации наверх виджета Run.
Java
Улучшены инспеции и их количество увеличилось, это позволяет поддерживать высокое качество кода и лучше находить возможные ошибки. Больше об улучшениях в анализаторе кода можно почитить вот в этом посте в блоге.
IntelliJ IDEA 2023.2 научилась лучше подсвечивать и перемещаться по форматирующим строкам.
Улучшена поддержка тэга
@snippet
для комменатриев в Javadoc.IntelliJ IDEA 2023.2 может точно определить расположение метода в стектрейсе (текстовом отчете о нем), даже если номера строк недоступны или неправильно отображаются.
IntelliJ IDEA Ultimate лучше анализирует конкатенацию и интерполяцию SQL в Java и Kotlin, определяет потенциально опасные запросы, и тем самым защищает код от SQL-инъекций.
Scala
IntelliJ IDEA 2023.2 научилась лучше работать со Scala 3, включая поддержку enum-ов, улучшенный декомпилятор TASTy, и улучшенную отладку. В дополнение к этому, Universal Apply Methods из Scala 3 теперь нормально автодополняются, в редакторе появилась поддержка IArray и синтаксиса "fewer braces". Поддержка Scala 3 всё ещё крайне всратая и неюзабельная, но другой поддержки всё равно нигде нет, включая другие IDE.
Улучшилась поддержка Scala Build Tool (sbt).
Исправлено несколько багов в выводе типов.
Компилятором по-умолчанию выбран Zinc, поэтому заработала инкрементальная компиляция фичей из Scala 3, включая inline methods.
Улучшилось управление source и target директориями.
Улучшилось отображение ScalaDoc Quick Documentation. Подсвечиваются аннотации, кейворды и литералы. Для подсветки используется текущая цветовая тема, списки расширенных трейтов и классов выделяются на отдельные строки, подсвечиваются ключевые слова из Scala 3.
Производительность
Новая утилита командной строки позволяет быстро собирать и загружать shared indexes, вместо того, чтобы по-старинке использовать кучу скриптов и сервисов. Прочитать об этом можно здесь.
Run/Debug
При отладке реактивных приложений, можно вычилслять значения watch-ей и локальных переменных для типов
Mono
иFlux
. Забавно, что в оригинальном чендлоге от JetBrains забыли написать, к какому языку это улучшение относится. Оставим это в качестве упражнения для внимательного читателя.Автотестирование теперь совместимо с системами сборки Maven, Gradle и JPS.
Контроль версий
Можно коммитить отдельные строки кода. Гениально.
Профилировщик
Attach IntelliJ Profiler и Capture Memory Snapshot теперь доступны в виде кнопок на панели Run.
По-умолчанию включен режим Wall-clock profiling mode, который ориентируется на суммарное время, проведенное внутри метода, включая время ожидания.
Фреймворки и технологии
Весь список изменений ниже относится только к платной версии - IntelliJ IDEA Ultimate 2023.2.
(Как в популярном анкедоте Нет ножек - нет мультиков. Простите, вырвалось. 29 баксов или почти 3 тысячи рублей в месяц, между прочим).
Приложения для Tomcat можно запускать и отлаживать на Windows Subsystem for Linux (WSL).
gRPC запросы через Transport Layer Security (TLS) можно посылать через HTTP Client.
HTTP Client понимает спецификации Swagger и OpenAPI, и делает автодополнение внутри текста JSON-запросов.
Улучшена поддержка конфигураций Swagger Codegen. Диалог Edit Swagger Codegen Configuration проще настраивается, а конфигурации запуска доступны прямо из гаттера, без необходимости в проведеии дополнительных настроек.
Добавлен предпросмотр Redoc UI для файлов спецификаций OpenAPI и Swagger, включая YAML и JSON. Можно переключаться между интерфейсами Redoc и Swagger внутри IDE.
Добавлено автодополение ключей в JSON для JavaScript-кода.
Можно переиспользовать общий JS-код для разных обработчиков запросов HTTP Client, достигается использованием импорта модулей.
Прямо в IDE можно посмотреть предпросмотр файлов PDF и HTML, которые получаются в результате отработки запросов HTTP Client.
HTTP Client CLI научилось работать с GraphQL API и поддерживаеть соединения с сервисами поверх WebSocket.
При создании конфигурации Spring Boot, полу VM options предоставляет автодополнение для ключей, используемых вместе с флагом
-D
.Бины Spring Configuration не требуют отдельного процессора аннотаций, поэтому автодополнение и валидация свойств и YAML-коинфрураций работает сразу и из коробки.
Поддержка Spring AOP заработала вместе с Kotlin.
Упростилась работа со спецификацией AsyncAPI, потому что IDE научилось в валидацию схемы и автодополнение ссылок, в панелях Endpoints и Editor Preview.
Добавлено несколько инспеций для борьбы с "Norway problem", т.е неправильной интерпретации ключей в YAML-файлах, которые похожи на булевские переменные.
Docker
Появился предспросмотр файлов внутри image layers.
Теперь можно запускать Docker-конфигурацию до любой другой Run/Debug конфигурации, добавив её в блок Before Launch.
Kubernetes
В одном и том же проекте теперь можно иметь несколько kubeconfig файлов, что позволяет проще управлять несколькими кластерами или средами разработки.
Внутри панели Services появилась возможность смотреть логи деплойментов Kubernetes.
Инструменты сборки
Поддержка наисвежайшего Maven 4.0.0-alpha. Непонятно, кому это ужно, но ни в чем себе не отказывайте.
Веб-разработка
IntelliJ IDEA Ultimate 2023.2 умеет лучше автоматически форматировать код на JavaScript и TypeScript.
Заработала поддержка CSS nesting.
Vue Language Server (Volar) делает более точно подсказывает ошибки и информацию о типах, они доступны в быстрой навигации и документации.
Для React Hooks добавлено несколько Live Templates.
Качество кода
Упрощена настройка статического анализа, благодаря интеграции с JetBrains Qodana - умным движком статического анализа, созданного для работы со множеством пайплайнов CI/CD. Благодаря этому повяляется два преимущества. Во-первых, анализ настраивается в два клика, можно будет смотреть ошибки по всему проекту, ставить quality gates для своей любой системы CI/CD. Во-вторых, можно смотреть результаты анализа, запущенного на сервере, прямо внутри IDE. Подробней всё описано здесь.
Базы данных
Можно подключать Redis Cluster, и набор фичей внутри IDE будет такой же, как если бы вы работали с отдельным сервером.
Переделан визуальный интерфейс диалога миграции схемы.
На страничке Data Editor and Viewer появилось поле Time zone, чтобы настраивать тот часовой пояс, в котором будет отображаться результат работы
datetime
.Реализована поддержка внешних баз данных и datashares в Redshift.
Полезные мелочи
LSP API позволяет работать со внешними серверами Language Server Protocol. Подробнее.
Плагин 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. Типичная IntelliJ IDEA. Кстати, вы уже купили новый макбук?
Windows 7 больше не поддеерживается. Обновляйтесь до Windows 10 или страдайте.
Это был весь список полезных улучшений в IntelliJ IDEA 2023.2. Есть еще полный список, он есть в Release Notes, но зачем его читать обычному человеку (не разработчику IDE) - не ясно.
Ваш фидбек крайне нужен и полезен сообществу. Автор этого поста на Хабре всячески советует пройти в наш чат в Телеграме (tg:javawatch_chat) и поделиться возникшими идеями и болями. Также, можно подписаться на наш новостной канал (tg:javawatch) и Twitter (twi:javawatchru). И не забывайте зайти на митап по Java 21 в Failover Bar в Санкт-Петербурге (все анонсы Failover Meetup Space можно посмотреть в телеге tg:failoverbar).