Быстро приближается релиз IntelliJ IDEA 2023.2, а значит, текущему EAP-у осталось жить недолго. Вы все еще можете успеть попробовать новые фичи, и попросить исправить их до релиза, когда исправлять будет уже поздно.

JetBrains ушел из России, но его IDE всё ещё является основным средством разработки на Java. Как у бывшего product marketing manager в JetBrains, у меня есть некоторый опыт в написании и переводе таких статей. Изначально, принести эту новость сподвигло то, что в ней есть важное обновление плагина Big Data Tools, над которым когда-то работала моя команда. Кроме того, JB разродились официальной поддержкой LSP, что наверняка, стоило им титанических моральных усилий. PMM-ов бывших не бывает, им просто перестают за это платить.

Я попробую описывать самые значимые новости, касающиеся JetBrains IDE. Чтобы получать больше таких новостей - подписывайтесь на Хабре на наш блог, а ещё вы можете пройти в мою личную телегу @Javawatch.

Под катом - обзор перечисленных фичей, со скриншотами. Поехали.

Фреймворки и технологии

Поддержка LSP для разработчиков плагинов

В этом EAP появилась огромная, фундаментальная фича, которую так долго ждали: LSP API для разрабочтиков плагинов. LSP - это протокол между редактором и бэкендом анализа кода, который позволяет делать поддержку анализа кода без залочки на конкретного вендора IDE.

IDE на основе IntelliJ известны способностью глубоко анализировать исходный код и поддерживать множество языков программирования и фреймворков. В то же время, часть языков технологий не поддерживаются нативно, и возможно, в природе существует LSP-сервер, который их поддерживает.

LSP API, в основном, предназначется тем разработчикам плагинов, которые хотят использовать LSP для фичей, связанных с написанием кода. Если у вас есть свой язык программирования или фреймворк, можно добавить его поддержку в IDE, написав для него свой LSP-сервер и плагин для интеграции в IDEA.

Текущая версия поддержки LSP включает подсветку ошибок и ворнингов, квик-фиксы, автодополнение, переход к определениям функций. Список поддерживаемых фичей будет расширяться.

Чтобы написать самый минимальный плагин, который уже что-то делает, хватит несколько строк кода. Такой плагин должен реализовывать интерфейс com.intellij.platform.lsp.api.LspServerSupportProvider, перечислять на каких типах файлов он работает, и как запустить сервер. Плагин Prisma ORM, разработанный в JetBrains, может быть хорошим опенсорсным примером реализации такого плагина. Кодовая база дстаточно большая, но лишь несколько классов относятся к поддержке LSP - их можно пронаблюдать в пакете org.intellij.prisma.ide.lsp.*.

Предпросмотр Redoc UI для OpenAPI и Swagger

IDEA начала поддерживать предпросмотр Redoc UI для файлов спецификации OpenAPI и Swagger, включая YAML и JSON, позволяя переключаться между Redoc и Swagger. Эта интеграция позволяет использовать консоль Try it прямо внутри IDE, устанавливать параметры и рассылать запросы к API.

Поддержка GraphQL и WebSocket в HTTP Client CLI

Теперь вы можете использовать HTTP Client CLI для работы с GraphQL API и установки WebSocket-соединений с вашими сервисами, например, для тестирования или скриптов автоматизации.

Запросы к gRPC с использованием TLS в HTTP Client

Теперь вы можете делать gRPC-запросы через Transport Layer Security (TLS) в HTTP Client. TLS предоставляет шифрование и аутентификацию, обеспечивая конфиденциальность и целостность передачи данных. В синтаксисе запроса поддеживаются обе схемы (https:// and grpcs://).

Инспекция для Norway problem в YAML-файлах

Добавлена инспекция, исправляющая так называемую Norway problem, мешающая неправильной интерпретации булевских значений в YAML-файлах. Вкратце, а что если в YAML файле будет строчка 'NO', которую вы собирались интерпретировать как сокращение от страны Норвегия, но она внезапно стала булевским значением "no"?

Когда список, по большей части, состоит из строк, содержащих литерал, похожий на булевское значение, IDEA пытается подсветить этот литерал, обозначая потенциальную неконсистентность, и подсказывая добавить кавычки. Если список состоит из таких литералов (например, false, off, on, yes, no), любой лиетрал, который отличается от этого паттерна, подсвеичвается как возможная ошибка, несмотря на то, что никаких специальных решений проблемы и квик-фиксов IDE предлагать здесь не станет.

Бины-конфигурации Spring больше не требует процессора аннотаций

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

Run / Debug

Непрерывный запуск JUnit для проектов Maven и Gradle

В свежей IDEA расширились возможности auto-testing с использванием JUnit, что позволило нормально работать с Maven и Gradle.

В дополнение к этому, упрощена активация режима непрерывного тестирования. Чтобы включить его, нужно использовать новую иконку Rerun Automatically, расположенную в окне Run/Debug. Каждый раз, когда вы сохраняете изменения, ваши тесты запускаются совершенно автоматически, что позволяет получать мгновенный фидбек на каждое обновление кода.

Остальные фичи

Разделение плагина Big Data Tools на кусочки

То, что плагин Big Data Tools - это огромный монолит, всегда было проблемой для пользователей. Сейчас его разделили на кусочки, которые можно использовать по-отдельности и сравнительно независимо. Это означает появление шести новых плагинов:

  • Плагин для Kafka позволяет мониторить кафковые процессы, управлять созданием консюмеров, продюсеров и топиков. Кроме того, он позволяет подключаться к Schema Registry, чтобы создавать и обновлять схемы.

  • Плагин для Spark позволяет работать со спарковыми проектами, запускать джобы и мониторить их исполнение.

  • Плагин для Flink - это отдельная штука для работы с Flink-проектами, которая умеет запускать джобы и мониторить их.

  • Remote File Systems создан для работы с облачными хранилищами типа AWS S3, Alibaba, Google Cloud и Tencent, это что-то типа файлового менеджера.

  • Big Data File Viewer нужен для того, чтобы получить быстрый предпросмотр файлов с большими данными (CSV, Parquet, ORC, Avro), не скачивая терабайты данных, и имея возможность смотреть их сразу в табличной форме.

  • Плагин Zeppelin нужен для эксплоративного анализа, визуализации и прототипирования в ноутбуках Zeppelin. Он делает для Цепелина нормальный UI, а не тот кошмар, что вы видите в вебе.

  • Если вам нужны все эти плагины одновременно (а почему бы их и не поставить, если вы за них всё равно заплатили), можно установить кмулятивный плагин Big Data Tools. Он подтянет их все.

Выше были перечислены наиболее важные изменения в IntelliJ IDEA 2023.2 EAP 7. Полный список таких изменений есть в Release Notes.

EAP скоро заканчивается, и у вас всё ещё есть возможность опробовать эти фичи и заслать в JB обратную связь. Если там есть какие-то дикие косяки, их ещё успеют починить.

Обратную связь можно отослать или через пункт Submit Feedback в меню Help, или пройдя в официальный багтрекер.

Но гораздо ценней, что мы можем бугуртить в комментариях на Хабре.

Пост написан при поддержке "российской джавы" Axiom JDK и моего бара Failover Bar, потому что я пишу его в рабочее время.

Комментарии (39)


  1. IcyKit
    06.07.2023 09:05

    То есть IDE идет к тому, чтобы на ней работали не преимущественно джависты, а все? Если эта IDE хочет забрать в себя все направления, то зачем жидбрейнсам куча других IDE?


    1. olegchir Автор
      06.07.2023 09:05
      +3

      IDEA всегда была самой "жирной" IDE. Там работают почти все плагины для скриптятины. Не работают только извращения - C++, C#, итп.


      1. slonopotamus
        06.07.2023 09:05
        +1

        Ну как работают... Rust уже можно дебажить хоть где-нить кроме CLion?

        Я вот страдаю в обратную сторону - идея самого понятия "IDE" в том что из неё можно заниматься всеми активностями по разработке. А мне приходится держать ШЕСТЬ сред от JetBrains. Они почти покрывают функциональность друг друга, но вот не полностью.


        1. ris58h
          06.07.2023 09:05

          Интересно стало что это за 6 сред - расскажите.


          1. slonopotamus
            06.07.2023 09:05
            +4

            IDEA (джава, котлин)
            RubyMine (руби)
            GoLang (го)
            PyCharm (питон)
            CLion (раст)
            Rider (c#, c++)

            Почему Rider и CLion - понятно.
            Причины, которые мешают полноценно девелопить руби/питон/го в IDEA я честно говоря забыл, не хватало каких-то мелочей, но важных.
            Ну то есть меньше трёх штук ну ваще никак не получается.


            1. theonevolodya
              06.07.2023 09:05

              Поставьте соответствующие платины в Idea и используйте только её


              1. olegchir Автор
                06.07.2023 09:05

                Причины, которые мешают полноценно девелопить руби/питон/го в IDEA я честно говоря забыл

                Про Питон - там часть фичей находится в других местах, чем в выделенной IDE. Поэтому может сложиться ощущение, что их нет вообще. Хотя они есть. Другие пункты меню, другие хоткеи, вот это всё. Нужно поискать.

                Про го сказать не смогу, потому что не использую. Скорей всего, там могут быть те же пробьлемы, что и с CLion - нативная отладка требует нативных инструментов.


                1. slonopotamus
                  06.07.2023 09:05

                  Ну меньше трёх (IDEA, CLion, Rider) значит всё-равно не получится.


                  1. olegchir Автор
                    06.07.2023 09:05

                    Да это чистый маркетинг. Будет нужно - все можно смерджить в одно. Было бы зачем.


                    1. slonopotamus
                      06.07.2023 09:05
                      +1

                      Но спасибо за пинок под зад, попробовал, как минимум отдельный GoLang похоже действительно не нужен. Попробую PyCharm/RubyMine тоже выкинуть. CLion таки никак, из-за дебага Rust'а.


    1. olegchir Автор
      06.07.2023 09:05
      +2

      А суть в том, что "куча других IDE" нужна не стоклько Джетбрейнсу, сколько нам. Они сильно дешевле стоят. Если они вдруг таки соберутся и прикроют другие IDE, это будет мощный удар по карману. Вот прикинь, пишешь ты на Питоне, зачем тебе нужно платить за Java и Ruby?


      1. IcyKit
        06.07.2023 09:05
        +2

        не знал про цену, в виме пишу :D


  1. ris58h
    06.07.2023 09:05
    +5

    Кроме того, JB разродились официальной поддержкой LSP, что наверняка, стоило им титанических моральных усилий.

    Поэтому поддержка LSP только в платных версиях.

    https://youtrack.jetbrains.com/issue/IDEA-162901

    Are you planning to support LSP API in IntelliJ IDEA Community?

    No, sorry, IntelliJ IDEA Community, PyCharm Community, and Android Studio won't support LSP API.


  1. AstarothAst
    06.07.2023 09:05
    +7

    Круто, конечно, но не актуально — JB решили, что наши деньги для них не достаточно хороши, и продавать все это великолепие нам отказывается. А жаль =(


    1. olegchir Автор
      06.07.2023 09:05
      +1

      (удалено)


    1. ris58h
      06.07.2023 09:05
      +1

      Community Edition можно использовать для комерческой разработки. Лучше чем ничего.


      1. olegchir Автор
        06.07.2023 09:05
        +4

        Есть Eclipse, он довольно хорош, и у него куча плагинов для всего на свете

        IDEA CE хороша, но имхо, Эклипс совершенно незаслуженно забывают


        1. Maccimo
          06.07.2023 09:05

          Есть Eclipse, он довольно хорош

          Вы им, похоже, не пользовались никогда.
          Зачастую для отладки плагина для Eclipse-платформы проще было подрубиться к нему идеей по JDWP или даже просто JDB, чем пытаться отладить его средствами самого Eclipse. А «Evaluate» какой-нибудь переменной вполне мог закончиться «ClassNotFoundException». В окне отладчика «Variables» оная при этом прекрасно отображала своё значение.


          и у него куча плагинов для всего на свете

          Количество не всегда переходит в качество.


  1. 0Bannon
    06.07.2023 09:05
    +3

    А как же плагин для kotlin notebook


  1. ritorichesky_echpochmak
    06.07.2023 09:05

    А HTTP Client уже научился в объявление переменных по аналогии с HTTP Request у VSCode и httpYac? И нормально подсвечиваться/запускаться прямо из документации на Markdown (блоки '''http ...''')?

    Ну и всякие эти вот LSP в плагине плагина к плагину - это прекрасно, но киллерфичей был бы быстрый генератор для создания класса по шаблону (часто нужно, например, создать модельку улетающую с бэкенда перенеся часть свойств от основного объекта и точно так же приземлить очень похожую модель в БД), генератор нового объекта (просто быстро перечислить все имеющиеся пропертя класса у создаваемого объекта, чтобы юзверь не пропустил пару-тройку при заполнении) и инструмент для сравнения классов по аналогии с тем, как сделано сравнение результатов в DataGrip.


    1. olegchir Автор
      06.07.2023 09:05
      +1

      Сложной генерации нет, но самые простейшие штуки можно делать с помощью шаблонов. Класс по шаблону можно делатьс с помощью File Templates, а куски внутри файлов - с помощью Live Templates, эта функциональность древняя как звезды :)


      1. ritorichesky_echpochmak
        06.07.2023 09:05

        Создавать каждый раз ручками шаблон из которого тебе нужно две копии (DTO и моделька для сериализации в JSON из MVC) - ну такое себе. Ctrl+C/Ctrl+V тогда уж проще.

        Live Templates, мне кажется 80% никто не использует в ежедневной работе, в лучшем случае конструктор, for и проперти создать - это почти то же самое, что с нуля всё писать и присутствует уже почти везде, чуть ли не в notepad++ и vim.

        А вот именно добавить в Code | Generate (Alt+Insert) что-то типа create by example, да ещё с конструктором который бы от исходного класса всё затягивал - это же песня. Заполнить объект данными из другого объекта пройдясь по всем имеющимся полям - тоже была бы прям фича-фича, чтобы не перебирать всё руками, уже и для разных моделек часто нужная. Ну или некоторые swagger-штуки умеют генерить код прям по JSON - почему бы не создать класс на основе json-объекта прям в редакторе от JB? И, главное, даже пропосалы есть в трекере, им даже уже не один год.

        DataGrip и его компаратор DDL и результатов - вообще вещь в себе и сильно недооценённая. Хотя там тоже подбешивает, например, дефолтная ширина таблички при использовании Inline results вместо services.


        1. ris58h
          06.07.2023 09:05

          Ctrl+C/Ctrl+V тогда уж проще.

          Возможно, в этом дело. Фича весьма узкоспециализированная.

          Можете сами плагин слепить - это не так уж трудно.


        1. olegchir Автор
          06.07.2023 09:05

          Когда руки таки дойдут до создания своей IDE, запилю тебе такую фичу одной из первых :)


        1. b00
          06.07.2023 09:05
          +1

          Класс (dto) из json (и обратная операция) - плагины есть, нормально справляются.


  1. axelmaker
    06.07.2023 09:05

    Как дела с удаленной разработкой по SSH? Пытался как-то раз попользоваться, но не дотягивает то того уровню, как у VS Code


    1. olegchir Автор
      06.07.2023 09:05
      +2

      Если нужно просто использование файлов на диске удалённого сервера, то это инструмент Tools->Deployment. Оно умеет синхронизировать локальный проект с удалённым.

      Если нужно запускать движок анализа языка на удаленной тачке, то в платных версиях есть Remote Development: https://www.jetbrains.com/remote-development/


      1. ritorichesky_echpochmak
        06.07.2023 09:05
        +2

        Скорее всего речь про плагин "Remote - SSH" который поднимает удалённо инстанс VSCode, вместе со всеми плагинами на той стороне, а локальный инстанс подключается к нему. Можно в т.ч. дебажить код запущенный на удалённой машине. При этом локально исходников может не быть вообще - всё на той стороне.


        1. olegchir Автор
          06.07.2023 09:05
          +2

          Это remote development, по ссылке выше. Прямо из главного экрана Идеи эта штука работает. Собственно, мы над этой фичой и работали.


          1. Sigest
            06.07.2023 09:05
            +1

            А когда можно будет хоститься на windows? У меня вот есть мощная машина под виндой и я хочу тонким клиентом подключаться через Gateway покодить. Хост требуется линуксовый, либо какие-то костыли в виде WSL, которые у меня так и не завелись


            1. ritorichesky_echpochmak
              06.07.2023 09:05

              Мне нравится этот вопрос... потому что на винде docker-compose поднимающий Windows Containers у меня полгода назад даже на локальном хосте дебажить не получалось из Rider, ремоут не пробовал


            1. slonopotamus
              06.07.2023 09:05

              RDP?


              1. Sigest
                06.07.2023 09:05

                Не, ну по SSH как-то понадежнее в плане секьюрити, а оборачивать RDP впном не хочется. Но и легковеснее на SSH. Я пробовал через linux host - просто бомба. Сама идея бомба. Реализация пока хромая-кривая. Но ты получаешь вычислительную мощь домашнего десктопа у себя на полудохлом планшете. Не надо возить ноутбук с собой. Какого-нибудь surface с 4гб хватит. И это максимально бесшовно. Словно работаешь на десктопной машине


                1. olegchir Автор
                  06.07.2023 09:05

                  Projector работает сильно лучше RDP. Там векторные шрифты, которые не корежатся через сжатие по JPEG


            1. olegchir Автор
              06.07.2023 09:05

              Моя команда делала бесплатный продукт, который мог работать на Windows. Он до сих пор находится в открытом доступе:

              Официально, JetBrains убили этот продукт, потому что им бесплатное решение невыгодно. Но по факту, вы можете разобраться, как это работает, и запустить всё у себя.

              Вот мой самый первый пост:
              https://habr.com/ru/articles/510210/

              А вот пост, сделанный во время первого публичного релиза: https://habr.com/ru/companies/JetBrains/articles/548770/

              Я сейчас делаю свою IDE, там Projector будет бесплатно входить в базовую поставку, и для его настройки не нужно будет мучиться вообще. Но это дело долгое, типа полгода ещё до бета-версии.

              Пока что рекомендую разобраться с Прожектором. Это не очень сложно.


              1. ris58h
                06.07.2023 09:05
                +1

                Я сейчас делаю свою IDE

                С этого места подробнее, пожалуйста.


          1. ritorichesky_echpochmak
            06.07.2023 09:05

            Скажите пожалуйста, а будет ли тогда это вот Remote Development добавлено в Space для Android? Или там в принципе не будет никакой возможности что-то попрогать кроме как сходить по SSH на удалённый хост и поднять там веб-версию VSCode. У меня просто Samsung DeX без дела простаивает, т.к. девелоперского софта непосредственно под ведроиды нет в принципе (полтора блокнотика со скудной подсветкой синтаксиса и не знающие про клавиатуру не считаем), приходится таскать в любую поездку ноут с собой)

            И второй вопрос - мне казалось что Remote Development и Space немножко за санкциями. Или локально это решается?


            1. olegchir Автор
              06.07.2023 09:05

              Прости, ничего не знаю про Space, в том числе, по озвученной причине - оно всё забанено в России. Я сам, конечно, могу купить всё что нужно для себя лично, но люди в целом так делать не будут. В отсутствие возможности масштабировать это на большое количество людей, изучать тему про Спейс бессмысленно.

              В качестве альтернативы, почитай вот этот комментарий выше по треду.

              Скриншот в этом комментарии сделан именно что в IDE, которое проецируется на Android. И я даже так работал некоторое время.


        1. nullfrank
          06.07.2023 09:05

          Есть такое