Только что вышла 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).
Комментарии (32)
olegchir Автор
29.07.2023 15:18+18Ребят, а что случилось с Хабром? Если IntelliJ IDEA теперь не соответствует тематике, то что же тогда вообще соответствует?
Dancho67
29.07.2023 15:18-2Хабр перестал быть, чем был до начала волны вкатунов. Давно пора смириться с тем, что Хабр щас это платформа для одвода пара у тех, кто ниасил, с редкими исключениями в виде технических статей для интересующихся.
olegchir Автор
29.07.2023 15:18+5Нууу... давай постараемся, чтобы в блогах Java/JS/Devops была годнота, которая интересна не только вкатунам :) Для этого ее надо писать!
apro
29.07.2023 15:18+1Возможно это отголоски той истории, когда JetBrains перестала продавать свои IDE в РФ,
а потом опубликовала статью на хабре с описанием новой версии одной из платных IDE и эту статью заминусовали.olegchir Автор
29.07.2023 15:18+1Всячески не одобряю этот поступок JB, в смысле, их уход из России. Неудивительно, что заминусовали. Но я остался здесь и кажется, имею право постить, что захочу про их продукты :)
Akuma
29.07.2023 15:18Спасибо за статью. Пользуясь случаем, а не в курсе, если оплатить сейчас лицензию на месяц, обновиться и потом не платить, оно будет работать на новой версии или придется откатываться до СВО-версии?
olegchir Автор
29.07.2023 15:18-2Есть куча сервисов для оплаты зарубежных услуг. К сожалению, блог Программирование - это не то место, где их стоит обсуждать и делать им рекламу. В Гугле много есть про это, просто напиши запрос "как оплатить зарубежные сервисы" или типа того
jreznot
29.07.2023 15:18+4Забавно, что в оригинальном чендлоге от JetBrains забыли написать, к какому языку это улучшение относится.
К любому JVM, визуализатор отладки один и тот же для всех результатов выражений полученных jdwp. Точно работает Java и Kotlin, 99% работает и Groovy
olegchir Автор
29.07.2023 15:18Пошел смотреть, кому высылать подарочный лайк, а это Юрий Артамонов. Это читерство :3
quaer
29.07.2023 15:18+1Можно запустить на компе пару виртуалок и Eclipse и спокойно писать код. Но вот стоит запустить IntelliJ и все ресурсы компа сожраны. Правда, последний Eclipse тоже поломали немного: теперь рандомно вдруг перестаёт видеть импорты классов из пакетов jdk. Как кстати дела с NetBeans?
13werwolf13
для удобства сделали хуже.. афигенно.
olegchir Автор
Строго говоря, в рамках текущей парадигмы оно имеет какой-то смысл. Похоже, они хотят сделать пародию на VSCode. Из предположения, что именно чистый легкий интерфейс VSCode является причиной его успеха.
У меня есть другое предположение. Убогий интерфейс VSCode - это скорее минус, чем плюс. Он стал популярным не благодаря нему, а вопреки. Просто это первый бесплатный редактор с кучей плагинов, вменяемым уровнем поддержки забесплатно и опенсорсно, и скопированной из Идеи функцией Search Everywhere которая ушла в массы. Который не садит батарейку ноута, что немаловажно.
markmariner
Ну для меня как раз простота интерфейса и была плюсом. А ещё было плюсом то, что VS Code не ест всю оперативку, сколько бы её не было, а потом вылетает, как продукты JetBrains. А, ещё и курсор передвигается сразу, а не как в IntelliJ IDEA через 50мс после того, как нажмёшь на кнопку.
По крайней мере, именно так IntelliJ IDEA работала на моём рабочем компьютере в 2019 году с топовым i7 и 32 гигабайтами оперативной памяти.
shmutz
>ест всю оперативку
>32 гигабайтами оперативной памяти
Какие-то прохладные истории. Ну или из разряда - я открыла 10 проектов одновременно, а оно тормозит.
markmariner
Сколько оперативки использует IDEA прямо сейчас на вашем компьютере в вашем проекте?
Enverest
Открыл 2 проекта в IDEA - вот процессы в диспетчере задач:
1) 4.2 GB
2) 2.1 GB
3) 323.6 MB
4) 234.7 MB
5) 121.7 MB
6) 114.7 MB
Когда запускаю тест - запускается ещё один процесс на 2.2 GB.
Работаю со Спарком, на Убунту. На старом ноутбуке 16 ГБ не хватало для комфортной работы, приходилось время от времени закрывать браузер :)
С компом на 32 ГБ памятью - никогда в память пока не упирался.
shmutz
склонировал apache-james, оно намного жирнее моих микросервисов - идея ест 1.8-2ГБ
попробуй в консоли mvn clean package. я лично только всё так собираю. Ну и мавен и тем более какашный грэдл уже мало связаны с "ой, идея жрёт 100500 мегабайтов111"
у меня на ноуте 8ГБ, 2ГБ браузер ест, 3-4 free.
>Работаю со Спарком
ну так про работу IDE речь или про что? Я писал прожки, которым и 256ГБ не хватало, как это к теме относится?
То что у тебя 6 процессов java уже пруфает, что ты некомпетентен. И какашный грэдл любишь )
>на Убунту
жизненное наблюдение - все линуксострадальцы сидят в убунте.
13werwolf13
весь софт на моём ПК имеет одинаковое приятное глазу оформление, весь софт берёт qt/gtk тему и просто использует её. но тут появляется гадкий утёнок разработчикам которого не хватило ума даже на системный декоратор, при том что им даже делать ничего не надо было чтобы он работал, но его всё равно сломали..
olegchir Автор
Баг (или фича?) в том, что Идея не использует не использует те же самые парадигмы построения интерфейса, что есть у Gtk или Qt. Ни старый UI, ни тем более - новый. Visual Studio Code, в общем, тоже не использует. Можно украсть что-то очень минорное, типа базового фона окна, и всё. Заматчить нечто, что написано в стиле JS-фронтенда на Gtk окружение - это заявка на нобелевку :-) Если ты сам сможешь придумать такой коммит, который бы впилил Gtk тему в безумную мешанину интерфейсов внутри IDEA, наверняка все бы только порадовались, попробуй. А без этого все эти попытки сделать "как в Gtk" одинаково убогие, типа что-то есть, что-то нет, в целом выглядит как говно.
13werwolf13
не баг и не фича, банальная лень.
его даже не будут рассматривать, они и на многие багрепорты и фичреквесты то не смотрят, и мержей с исправлениями оставшихся незамеченными там хватает. но в общем-то если бы я был разработчиком я бы обязательно попытался.
потому что надо не "как в" а "на" и не GTK а Qt.
потому что сейчас, какой бы не был новый интерфейс прекрасный и удобный в отрыве от системы, находясь на одном экране с другими приложениями имеющими единый стиль он выглядит чужеродно и противно.
isden
Чистая вкусовщина. Лично мне нравится. Темную тему вообще очень круто сделали (я сейчас про подбор гаммы цветов - темную тему очень легко испоганить).
ritorichesky_echpochmak
Хочется компромисса между Zen Mode и полноценной IDE, а отвлекаться на рюшечки которые 90% времени не используются не хочется, как и на мышь. Ctrl+Shift+A и вообще клавиатурные биндинги - наше всё и, кажется, JB регулярно об этом намекает. Ещё бы шрифты и темы немножко подтянуть, а то как-то глаза к концу дня на дефолтах устают - цены бы им не было
olegchir Автор
Разные люди, разные интересы. Например, я вообще никакими клавиатурными сочетаниями не пользуюсь, и совершенно всё нажимаю мышкой. Поэтому редакторами без интерфейса (типа vi или emacs) пользоваться не могу вообще. Старый UI Идеи был достаточно хорошим компромиссом для меня. VSCode с необходимостью всё нажимать на клавиатуре раздражает неимоверно.
apro
У emacs есть интерфейс (на основе gtk) из коробки:
https://i.ytimg.com/vi/XvVqtUfJoTI/maxresdefault.jpg
ris58h
Для этого есть Fleet.
olegchir Автор
Есть. А зачем он есть? Чтобы что?
ris58h
Чтобы "сделать пародию на VSCode".
qirsam
Ну кстати не соглашусь. Я на кедах вечно нативную рамку убирал. Т.к. меню приложений вынесено в верхнюю панель кед. И нативная рамка для меня была излишней. И если на пк это мне не нравилось только визуально. То на ноуте она занимала пространство, которого и так на небольшом экране не хватает.