Только что вышла 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).
Автор: Олег Чирухин