- PVSM.RU - https://www.pvsm.ru -

IntelliJ IDEA 2023.2. Language Server Protocol, AI Assistant, IntelliJ Profiler в редакторе, GitLab merge requests, ftw

IntelliJ IDEA 2023.2. Language Server Protocol, AI Assistant, IntelliJ Profiler в редакторе, GitLab merge requests, ftw - 1

Только что вышла IntelliJ IDEA 2023.2. В этом релизе в IDE появилась куча интересных фичей и важных улучшений.

Вы можете скачать последнюю сборку с официального сайта [1], или из бесплатного приложения Toolbox [2], или из snap-пакетов для Ubuntu.

Этот релиз IntelliJ IDEA 2023.2 представляет вам AI-ассистента, вооруженного набором инструментов машинного обучения. IntelliJ Profiler показывает подсказки в редакторе, делая профилирование более интуитивным и иформативным. Еще, в этом релизе появилась интеграция с GitLab.

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

Кроме того, в этот четверг в Питере будет встреча Javawatch, посвященная Java 21. Я прочитаю мини-доклад минут на 30 о новых фичах, и потом мы сможем все вместе собраться и за кружкой пива это обсудить. Анонс события в телеге [3], обсуждение в чате [4]. Я бывший PMM в JetBrains Big Data и тимлид в Remote Development/Projector [5], а сейчас работаю над российским дистрибутивом Java - Axiom JDK.

Ключевые изменения

  • В IntelliJ IDEA 2023.2 появился AI Assistant, который делает на основе машинного обучения штуки вроде автоматического написания комментариев, подсказки имен, генерации текста коммитов в гит, и тому подобное. Количество полезных фичей пока довольно ограниченное. Для начала работы, нужно установить плагин под названием AI Assistant и залогиниться в сервис JetBrains AI. Подробнее написано вот в этом посте [6].

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

  • Появилась интеграция с GitLab, как-никак это одна из самых популярных систем. Конкретно, теперь можно делать мердж-риквесты прямо из IDE. Подробности [7].

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

  • Улучшены инспеции и их количество увеличилось, это позволяет поддерживать высокое качество кода и лучше находить возможные ошибки. Больше об улучшениях в анализаторе кода можно почитить вот в этом посте в блоге [8].

  • 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" [9]. Поддержка Scala 3 всё ещё крайне всратая и неюзабельная, но другой поддержки всё равно нигде нет, включая другие IDE.

  • Улучшилась поддержка Scala Build Tool (sbt).

  • Исправлено несколько багов в выводе типов.

  • Компилятором по-умолчанию выбран Zinc [10], поэтому заработала инкрементальная компиляция фичей из Scala 3, включая inline methods.

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

  • Улучшилось отображение ScalaDoc Quick Documentation. Подсвечиваются аннотации, кейворды и литералы. Для подсветки используется текущая цветовая тема, списки расширенных трейтов и классов выделяются на отдельные строки, подсвечиваются ключевые слова из Scala 3.

Производительность

  • Новая утилита командной строки позволяет быстро собирать и загружать shared indexes [11], вместо того, чтобы по-старинке использовать кучу скриптов и сервисов. Прочитать об этом можно здесь [12].

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 [13] для файлов спецификаций OpenAPI и Swagger, включая YAML и JSON. Можно переключаться между интерфейсами Redoc и Swagger внутри IDE.

  • Добавлено автодополение ключей в JSON для JavaScript-кода.

  • Можно переиспользовать общий JS-код для разных обработчиков запросов HTTP Client, достигается использованием импорта модулей.

  • Прямо в IDE можно посмотреть предпросмотр файлов PDF и HTML, которые получаются в результате отработки запросов HTTP Client.

  • HTTP Client CLI [14] научилось работать с GraphQL API и поддерживаеть соединения с сервисами поверх WebSocket.

  • При создании конфигурации Spring Boot, полу VM options предоставляет автодополнение для ключей, используемых вместе с флагом -D.

  • Бины Spring Configuration не требуют отдельного процессора аннотаций, поэтому автодополнение и валидация свойств и YAML-коинфрураций работает сразу и из коробки.

  • Поддержка Spring AOP заработала вместе с Kotlin.

  • Упростилась работа со спецификацией AsyncAPI, потому что IDE научилось в валидацию схемы и автодополнение ссылок, в панелях Endpoints и Editor Preview.

  • Добавлено несколько инспеций для борьбы с "Norway problem" [15], т.е неправильной интерпретации ключей в YAML-файлах, которые похожи на булевские переменные.

Docker

  • Появился предспросмотр файлов внутри image layers.

  • Теперь можно запускать Docker-конфигурацию до любой другой Run/Debug конфигурации, добавив её в блок Before Launch.

Kubernetes

  • В одном и том же проекте теперь можно иметь несколько kubeconfig файлов, что позволяет проще управлять несколькими кластерами или средами разработки.

  • Внутри панели Services появилась возможность смотреть логи деплойментов Kubernetes.

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

  • Поддержка наисвежайшего Maven 4.0.0-alpha [16]. Непонятно, кому это ужно, но ни в чем себе не отказывайте.

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

  • IntelliJ IDEA Ultimate 2023.2 умеет лучше автоматически форматировать код на JavaScript и TypeScript.

  • Заработала поддержка CSS nesting [17].

  • Vue Language Server (Volar) делает более точно подсказывает ошибки и информацию о типах, они доступны в быстрой навигации и документации.

  • Для React Hooks добавлено несколько Live Templates.

Качество кода

  • Упрощена настройка статического анализа, благодаря интеграции с JetBrains Qodana [18] - умным движком статического анализа, созданного для работы со множеством пайплайнов CI/CD. Благодаря этому повяляется два преимущества. Во-первых, анализ настраивается в два клика, можно будет смотреть ошибки по всему проекту, ставить quality gates для своей любой системы CI/CD. Во-вторых, можно смотреть результаты анализа, запущенного на сервере, прямо внутри IDE. Подробней всё описано здесь [19].

Базы данных

  • Можно подключать Redis Cluster, и набор фичей внутри IDE будет такой же, как если бы вы работали с отдельным сервером.

  • Переделан визуальный интерфейс диалога миграции схемы.

  • На страничке Data Editor and Viewer появилось поле Time zone, чтобы настраивать тот часовой пояс, в котором будет отображаться результат работы datetime.

  • Реализована поддержка внешних баз данных и datashares в Redshift.

Полезные мелочи

  • LSP API позволяет работать со внешними серверами Language Server Protocol. Подробнее [20].

  • Плагин Big Data Tools [21] распилен на кусочки. Теперь не нужно ставить огромный монолит, а можно поставить только то, что реально нужно. Доступные кусочки: Kafka [22]Spark [23]Flink [24]Remote File Systems [25]Big Data File Viewer [26]Zeppelin [27].

  • Объявлены устаревшими плагины для 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 [28], но зачем его читать обычному человеку (не разработчику IDE) - не ясно.

Ваш фидбек крайне нужен и полезен сообществу. Автор этого поста на Хабре всячески советует пройти в наш чат в Телеграме (tg:javawatch_chat [4]) и поделиться возникшими идеями и болями. Также, можно подписаться на наш новостной канал (tg:javawatch [29]) и Twitter (twi:javawatchru [30]). И не забывайте зайти на митап по Java 21 в Failover Bar в Санкт-Петербурге (все анонсы Failover Meetup Space можно посмотреть в телеге tg:failoverbar [31]).

Автор: Олег Чирухин

Источник [32]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/386304

Ссылки в тексте:

[1] официального сайта: https://www.jetbrains.com/idea/download/

[2] Toolbox: https://www.jetbrains.com/toolbox-app/

[3] в телеге: https://t.me/javawatch/1096

[4] в чате: https://t.me/javawatch_chat

[5] Projector: https://github.com/JetBrains/projector-server

[6] в этом посте: https://blog.jetbrains.com/idea/2023/06/ai-assistant-in-jetbrains-ides/

[7] Подробности: https://blog.jetbrains.com/2023/07/26/gitlab-support-in-jetbrains-ides/

[8] посте в блоге: https://blog.jetbrains.com/idea/2023/05/intellij-idea-2023-2-eap-2/#Newinspectionsandothercodeanalysisimprovementss_and_other_improvements

[9] "fewer braces": https://docs.scala-lang.org/sips/fewer-braces.html

[10] Zinc: https://github.com/sbt/zinc

[11] shared indexes: https://www.jetbrains.com/help/idea/shared-indexes.html

[12] здесь: https://blog.jetbrains.com/idea/2023/05/intellij-idea-2023-2-eap/#Newtoolforeasilygeneratingsharedindexes

[13] Redoc UI: https://redocly.com/

[14] HTTP Client CLI: https://blog.jetbrains.com/idea/2022/12/http-client-cli-run-requests-and-tests-on-ci/

[15] "Norway problem": https://hitchdev.com/strictyaml/why/implicit-typing-removed/

[16] Maven 4.0.0-alpha: https://maven.apache.org/download.cgi#files-1

[17] CSS nesting: https://www.w3.org/TR/css-nesting-1/

[18] JetBrains Qodana: https://jb.gg/qodana_release_idea

[19] описано здесь: https://blog.jetbrains.com/qodana/2023/07/qodana-is-out-of-preview-with-first-class-jetbrains-ide-integration/

[20] Подробнее: https://blog.jetbrains.com/platform/2023/07/lsp-for-plugin-developers/

[21] Big Data Tools: https://plugins.jetbrains.com/plugin/12494-big-data-tools

[22] Kafka: https://plugins.jetbrains.com/plugin/21704-kafka

[23] Spark: https://plugins.jetbrains.com/plugin/21700-spark

[24] Flink: https://plugins.jetbrains.com/plugin/21702-flink

[25] Remote File Systems: https://plugins.jetbrains.com/plugin/21706-remote-file-systems

[26] Big Data File Viewer: https://plugins.jetbrains.com/plugin/21701-big-data-file-viewer

[27] Zeppelin: https://plugins.jetbrains.com/plugin/21673-zeppelin

[28] Release Notes: https://youtrack.jetbrains.com/articles/IDEA-A-2100661624/IntelliJ-IDEA-2023.2-232.8660.185-build-Release-Notes

[29] tg:javawatch: https://t.me/javawatch

[30] twi:javawatchru: https://twitter.com/javawatchru

[31] tg:failoverbar: https://t.me/failoverbar

[32] Источник: https://habr.com/ru/companies/bar/articles/751248/?utm_source=habrahabr&utm_medium=rss&utm_campaign=751248