Привет! Традиционно рассказываем, что нового в IntelliJ IDEA 2019.2. Список большой и все равно неполный: если хочется подробностей, добро пожаловать на страницу What’s new in IntelliJ IDEA 2019.2.



Во-первых, мы существенно ускорили запуск. Надеемся, вы заметили :)

А еще:

Java




  • Java 13 выходит в сентябре, и IntelliJ IDEA уже готова работать с ней. IDE поддерживает новый синтаксис switch-выражений (JEP 354) и новую функциональность текстовых блоков (JEP 355).
  • IDE может выполнять рефакторинг Inline Method, даже если return-выражение прерывает поток выполнения.
  • Если при анализе потока данных нашлись проблемы, новое действие Find cause поможет перейти к проблемному фрагменту кода.
  • Мы объединили инспекцию для Java «Duplicated code fragment» с инструментом для других языков «Locate duplicates».
  • Автодополнение кода теперь распознает опечатки и предлагает наиболее подходящие варианты для неправильно введенного текста.
  • Теперь при работе со структурным поиском IDE мгновенно подсвечивает в редакторе все найденные фрагменты кода, соответствующие шаблону поиска.

Инструменты профилирования


  • IntelliJ IDEA 2019.2 теперь интегрируется с Java Flight Recorder на платформах Windows, macOS и Linux, а также с Async-profiler на macOS и Linux.

Окно сервисов




  • В новом окне Services собраны все подключения, а также конфигурации запуска, которые вы подключили к Services.
  • IDE позволяет просматривать файловую систему запущенного Docker-контейнера (окно Services > узел Docker > вкладка Files).

Редактор


  • Управлять всеми настройками стиля кода для разных областей можно с помощью файла EditorConfig. Подробнее.
  • Благодаря встроенной интеграции с редактором TextMate доступна подсветка синтаксиса более чем для 20 языков программирования.
  • IntelliJ IDEA теперь беспроблемно работает с большими файлами.
  • Изменилось выбранное по умолчанию поведение действия Move Caret to Next Word. Теперь IDE передвигает курсор к концу текущего слова.
  • Настройка Surround a selection with a quote or brace включена по умолчанию. Если при выделенном фрагменте кода набрать кавычку или скобку, фрагмент окажется внутри кавычек или скобок.
  • По умолчанию клавиша Tab, нажатая при вводе текста, перемещает курсор за закрывающие скобки или кавычки.
  • Чтобы сделать код более читаемым, мы изменили межстрочный интервал: теперь он равен 1,2. Изменить межстрочный интервал можно в разделе Settings / Preferences | Editor | Color Scheme | Color Scheme Font.

Обновления интерфейса




  • Чтобы сделать быстрые исправления более заметными, мы поменяли дизайн всплывающего окна инспекций — оно теперь не только содержит описание проблемы, но и сразу же предлагает вам исправление.
  • У окна New Class новый дизайн: теперь есть предпросмотр возможных вариантов.
  • Современный безрамочный интерфейс в Windows 10.
  • Возле элементов списков и деревьев в окне Project View отображается дополнительная информация: размеры файлов и время их изменения. Это включается в меню View | Appearance | Descriptions in Tree Views.

Gradle


  • Зависимости Gradle теперь можно просматривать в виде диаграммы: нажмите значок Show Dependencies на панели инструментов в окне Gradle (Alt+Shift+Ctrl+U в Linux и Windows / Alt+Shift+Cmd+U в macOS).
  • Внесены улучшения в анализ кода в файлах build.gradle. Автодополнение теперь работает в объявлении задач, нотации задач Gradle и даже внутри блоков зависимостей.
  • Мы усовершенствовали отображение выводимой информации об операциях Gradle, чтобы предоставлять вам информацию о текущем статусе процесса синхронизации/сборки, — теперь дерево статуса и консоль вывода информации располагаются рядом друг с другом.

Maven


  • Выводимая информация о синхронизации Maven теперь отображается в инструментальном окне Build, что делает сообщения об ошибках и прогрессе более заметными и упрощает навигацию.
  • Автодополнение работает по умолчанию в рамках зависимостей Maven в файлах pom.xml.

Контроль версий




  • В IntelliJ IDEA 2019.2 появилась поддержка нативной обработки игнорируемых файлов Git. Подробнее.
  • IDE будет напоминать вам, если вы забудете включить в коммит файлы, которые обычно включаете вместе с файлами, редактируемыми в данный момент.
  • Теперь можно делать коммит из вкладки Local Changes: установите флажок Commit from the Local Changes without showing a dialog в разделе Preferences / Settings | Version Control | Commit Dialog.
  • Теперь можно смотреть файловую историю Git одной или нескольких директорий, выбранных в окне Project View.
  • При выполнении процесса merge или cherry-pick во всплывающем окне Branches есть новые опции: Abort Merge и Abort Cherry-pick.
  • Новое действие Show Diff with Working Tree показывает Diff-сравнение текущей и выбранной веток.
  • IDE теперь предлагает вам добавлять в систему контроля версий файлы, которые были скопированы в проект извне.


Kotlin


  • Поддержка JPA с Kotlin стала лучше: появилась возможность генерировать entity-классы Kotlin.
  • Действие Async stack trace теперь отображает состояние переменных на момент последней приостановки.
  • Новый режим interactive для вспомогательных файлов Kotlin автоматически показывает вам результаты по истечении определенного интервала времени без необходимости перезапускать скрипт.
  • IDE подсвечивает TODO-комментарии Kotlin в редакторе и отображает их в инструментальном окне TODO.
  • Если вы используете внешние аннотации допустимости значения null для Java, IDE предупреждает вас о неверных случаях применения аннотированных методов Java из Kotlin.

Scala


  • IDE теперь отображает подсказку по аскрипции типа и подсвечивает те части, которые не соответствуют ожидаемому типу.
  • Подсказки о несоответствии типа стали более подробными и показываются с выравниванием по вертикали, также используется отображение кода в режиме «было — стало».
  • Подсказки аннотаций типов теперь поддерживают динамическое сворачивание, всплывающие подсказки, навигацию и подсветку парных скобок.

Groovy


  • Усовершенствована поддержка синтаксиса Groovy 3.0 — теперь поддерживаются вложенные блоки кода, а фигурные скобки и стрелки в замыканиях по умолчанию выделяются полужирным шрифтом, чтобы блоки кода было легче отличить от замыканий.

JavaScript и TypeScript


  • Теперь можно заменять избыточные переменные еще одной деструктуризацией: нажмите в редакторе Alt+Enter и выберите Propagate to destructuring.
  • Теперь, когда вы переименовываете идентификатор в файле JavaScript или TypeScript, IDE группирует динамические вхождения отдельно от остальных вхождений и по умолчанию исключает их из рефакторинга.
  • Мы сделали более точное автодополнение кода для компонентов и их свойств из библиотек Vuetify и BootstrapVue.

Отладчик JVM


  • Теперь можно выбрать метод при выполнении действия Step Into.

Поддержка баз данных




  • Поиск по данным.
  • Быстрое изменение размера страницы.
  • Фильтрация по источникам данных в навигации.

JetBrains Runtime


  • IntelliJ IDEA 2019.2 теперь по умолчанию работает под JetBrains Runtime 11.

Благодарим всех пользователей за то, что вы делились с нами своими мыслями и рекомендациями в комментариях на Хабре, в трекере и в Твиттере.

Команда IntelliJ IDEA

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


  1. ARosolko
    05.08.2019 16:18

    Крутое обновление!
    А еще шрифты стандартные поменяли. Но не рассказали об этом :|


    1. moscas Автор
      05.08.2019 16:19

      Именно шрифт? Мы увеличили межстрочное расстояние. У вас какой был и какой стал?


      1. ARosolko
        05.08.2019 16:21

        Был Monospaced, а стал Consolas. И да, расстояние с 1 изменилось на 1.2


        1. yole
          05.08.2019 18:35

          Про Consolas да, забыли рассказать. Про межстрочное расстояние в посте есть :)


        1. moscas Автор
          05.08.2019 18:46

          Выяснил: действительно поменяли. Забыли упомянуть, прошу прощения.


      1. kykypyky
        05.08.2019 18:27

        Присоединяюсь. Fira Code убрали к тому же.


        1. yole
          05.08.2019 18:34
          +1

          Fira Code вернем обратно, он по ошибке потерялся.


          1. kykypyky
            05.08.2019 18:36

            Спасибо!


  1. AlexunKo
    05.08.2019 17:14
    +3

    Лучше бы жор CPU починили. Господа разработчики, почему ваша IDE, будучи свернутая безо всяких запущенных процессов съедает половину моей батареи впустую? Вы что там, майните биткоины в фоне?


    1. moscas Автор
      05.08.2019 17:27
      +5

      А можно вас попросить снять профиль и прсилать нам? Как — описано тут intellij-support.jetbrains.com/hc/en-us/articles/207241235-Reporting-performance-problems

      Слать на maxim.sobolevskiy@jetbrains.com


    1. evil_random
      05.08.2019 20:47
      +1

      Поддерживаю этого оратора. Иногда оно прямо настолько жрёт, что просто работать невозможно.

      А бывает что зависает наглухо на определённых файлах.


      1. artspb
        06.08.2019 10:52

        Не надо поддерживать оратора, нужно подержать JetBrains и отправить снепшот по инструкции выше ;) Если мы не знаем о проблеме, то мы ее скорее всего не починим.


  1. HawkeyePierce89
    05.08.2019 18:09

    В IntelliJ IDEA 2019.2 появилась поддержка нативной обработки игнорируемых файлов Git


    А можно при установке продуктов JetBrains сразу же прописывать папку .idea в список исключений на уровне core.excludeFiles?

    В рабочих проектах, где у всех более-менее одинаковое рабочее окружение, ещё как-то нормально добавлять папку в локальный .gitignore, но если работать с Open Source на Github, то так делать очень неприлично.


    1. yole
      05.08.2019 18:13
      +1

      Нет, потому что наш основной механизм шаринга настроек внутри команды, работающей над одним проектом (ран-конфигураций, настроек инспекций, code style) — это именно помещение папки .idea в систему контроля версий. Мы сейчас автоматически создаем .idea/.gitignore, в который добавляются те файлы из .idea, которые содержат личные настройки. Остальные файлы рассчитаны на то, что их можно шарить через систему контроля версий.


      1. HawkeyePierce89
        05.08.2019 18:49

        Кажется я не понимаю пары моментов

        1) Есть, если я правильно помню, возможность экспорта настроек в некий jar-файл, разве это не подходит для шаринга внутри команды?

        2) Как быть, если я хочу внести некую правку в open source проект на гитхабе? Мне больше по душе коммитить через терминал, но глобальное исключение папки из отслеживания гитом — это тот ещё геморрой, который я так и не смог одолеть. Добавлять в .gitignore своё локальное окружение — за такое и по рукам линейкой получить можно. Поэтому приходится постоянно смотреть в терминале на папку .idea, которая не отслеживается. Как быть в таком случае?


        1. yole
          05.08.2019 19:15

          1) В jar-файл экспортируются настройки уровня IDE. В него не попадают, например, ран-конфигурации, которые специфичны для проекта. Инспекции можно настроить по-разному для разных модулей в проекте, такую конфигурацию тоже нельзя экспортировать в jar. Ну и workflow совсем не такой удобный — нужно явно просить коллег импортировать jar (и делать это каждый раз, когда что-то меняется). В случае с шаренным .idea настройки автоматически применяются у всех, кто открыл проект, и автоматически подхватываются, когда кто-то их обновляет.

          2) Вы можете добавить .idea в .git/info/exclude. Ну и нет ничего ужасного в PR, который добавит .idea в .gitignore проекта — нашими IDE пользуются достаточно людей, чтобы такие PR воспринимались вполне адекватно.


          1. HawkeyePierce89
            05.08.2019 21:01

            спасибо, посмотрю на .git/info/exclude


  1. GriNAME
    05.08.2019 18:14

    А когда планируется полноценная поддержка диаграмм для Kotlin?
    Спасибо за обнову!


    1. yole
      05.08.2019 18:28

      Не в этом году. Ближайшие планы команды Kotlin-плагина — работа над перформансом и качеством существующих фич, а не добавление новых.


      1. GriNAME
        05.08.2019 18:29

        Понятно, ну буду ждать)


  1. Fedorkov
    05.08.2019 19:09

    Новые фичи ядра, интерфейса, и т. п. вы добавляете сразу во все свои IDE? То есть ускоренную загрузку, новый редактор и прочее следует также ждать в CLion и PyCharm 2019.2?


    1. yole
      05.08.2019 19:16
      +1

      Да, все это там есть.


  1. zikolach
    05.08.2019 19:17

    Новый релиз выглядит свежо и по ощущениям работает отзывчивей. Жаль что многие плагины не обновились к дате релиза. Было бы удобно про это узнавать до обновления IDE.


    1. yole
      05.08.2019 19:30

      Какие плагины вы имеете в виду? Наши собственные плагины сейчас всегда релизятся вместе с IDE.


      1. zikolach
        05.08.2019 20:59

        В настоящий момент показываются как несовместимые:


        • BashSupport
        • Ideolog
        • HOCON
        • LiveEdit
        • Python
        • Scala
        • Vue.js

        5 из них от JetBrains.


        1. den_po
          06.08.2019 02:36

          Вроде после обновления и перезапуска IDE всегда приходилось выполнять обновление плагинов отдельно.


          1. zikolach
            06.08.2019 11:07
            +1

            Да так обычно и работает. Проблема была с конфигурацией HTTP прокси. По неизвестной причине была включена ручная настройка с нерабочей конфигурацией. После отключения плагины обновились.


  1. FylmTm
    05.08.2019 20:13

    Окно сервисов

    Я не могу найти это новое окно сервисов. Его нету среди всех Tool Windows.
    Я искал по документации и What's New, но не нашел подсказок куда смотреть.

    Все что смог найти это action открытие этого tool window, но его вызов ничего не делает.

    Нужно чтобы у меня был включен какой то плагин? Проект был какого то особенного типа?


    1. moscas Автор
      05.08.2019 20:14

      Если чего-то не можете найти, всегда используйте Find Action: Ctrl/Cmd+Shift+A.
      Наберите там Services.


      1. FylmTm
        05.08.2019 20:39

        Я так и делал. Там нету «Services».

        Сейчас опытным путем смог найти этот «Services».
        Судя по всему для того чтобы это окно было доступно и видно (в том числе при поиске команд), нужно чтобы существовал хотябы один сервис.
        То есть нельзя открыть «пустое» окно сервисов.

        Я в новом проекте сделал себе коннекшн к базе. После того как его создал, это окно сразу появилось (и также опция Services в поиске стала доступна).


      1. Skerrigan
        06.08.2019 13:00
        -1

        Вот да, почему просто нельзя добавить окно «на постоянку» себе? Почему оно становится доступным только когда что-то «туда попало»?

        Далее, у меня есть сервис на Jersey, но туда он не попал (в отличии от схожей реализации на SpringBoot)… теперь «Jersey-сервис» у меня всегда висит в run-вкладке и там этот непонятный отсчет идет, чего ранее не было. Вопрос — как это безобразие нафиг выключить? IDE может быть запущенным вместе с «задачей» и неделю к ряду… оно неделю будет там анимировано считать время?

        И, я даже не знаю кто голосовал у вас за этот новый splash-screen, но… тут очень тяжелое ругательство — как его поменять на что-то человеческое, хотя бы как было до этого?
        Каждый раз, когда вижу, появляется желание «отправить монитор в полет».


        1. kaleev
          06.08.2019 15:28

          Добрый день, нет смысла в том, чтобы пустое окно постоянно висело. Мы планируем в следующих версиях сделать возможным настраивать доступные сервисы в самом окне, в частности доступные в окне Services run конфигурации, тогда будет иметь смысл то, что окно доступно всегда. Сейчас конфигурации для Services настраиваются так: www.jetbrains.com/help/idea/services-tool-window.html#run-configs
          Какой тип run конфигурации у Вас настроен для «Jersey-сервиса»?


          1. Skerrigan
            06.08.2019 15:54

            нет смысла в том, чтобы пустое окно постоянно висело

            С одной стороны я понимаю стремление «облегчить UI», видел когда «размещают вообще все, что есть» на экран, получается тот же Toad Oracle.
            Вместе с тем все же дает дискомфорт, что таб(вкладка) сервисов после каждого перезапуска IDE пропадает… по такой логике можно вообще никакие табы не отрисовывать (ну а что тут такого, запускаем IDE — ничего же не используем, тогда даже вкладка console зачем?) — я к тому, что в теории не вижу проблемы просто помнить самой IDE, какие табы были открыты и их же с самого начала уже иметь.

            Какой тип run конфигурации у Вас настроен для «Jersey-сервиса»?

            Т.к. я не могу найти варианта «указать для IDE, что это приложение будет сервисом» (как понимаю, такого и нет) — беру максимально близкое и подходящее: простой Application с указанием main-class.
            Но я не могу понять, какой логикой руководствуется IDE при определении «что размещать во вкладке сервисов, а что нет» — Spring-приложения идут туда.
            Если вы сможете подсказать, как настроить запуск Java-class, чтобы он попадал в сервисы — буду очень сильно рад.


            1. kaleev
              06.08.2019 16:06

              В Services попадают только те типы конфигураций, которые укажет пользователь, для Spring Boot конфигураций, когда их становится больше одной, IntelliJ IDEA показывает всплывающую подсказку с предложением поместить их в Services, а так список типов можно найти в Edit Run/Debug Configurations диалоге, выбрав справа нод Templates: Configurations available in Services.


              1. Skerrigan
                06.08.2019 16:34

                Ок, понял и нашел. Разумеется благодарю!
                Однако, кхм, ну совсем не очевидно же…
                P.S. Возможно как-то что-то сделать с этой картинкой при загрузке? Она правда не выносимая.


                1. Maccimo
                  07.08.2019 23:23

                  Странная реакция на абстрактную и вполне себе симпатичную картинку.
                  Гугл мгновенно подсказывает idea64.exe nosplash.


                  1. Skerrigan
                    08.08.2019 04:37

                    Гугл мгновенно подсказывает

                    Тот случай, когда не думаешь, что можно убрать (искал, как «изменить»).
                    Спасибо!


  1. NeLexa
    05.08.2019 21:12

    После обновления сразу заметил, что у официального плагина Android Support перестал работать экран дизайна компоновки. Пришлось вернуть 2019.1.4.


    1. yole
      06.08.2019 11:29
      +1

      Это известная проблема, связанная с переходом на новую версию JDK, мы ее чиним. Пока что вы можете скачать версию с JDK 8 с www.jetbrains.com/idea/download/other.html, в ней дизайнер работает.


  1. usharik
    05.08.2019 21:51

    Большое спасибо за наглядное отображение процесса сборки приложения мавеном! Для гредла это уже давно было, а для мавена пришло только с этим обновлением, если я не ошибаюсь! Исключительно полезная фича, особенно, если проект большой!


  1. Dmitry88
    05.08.2019 22:18
    -1

    Хорошие продукты делают. Удивлен, что RnD еще не свалил из страны.


  1. Varets
    06.08.2019 09:28

    Современный безрамочный интерфейс в Windows 10.

    Подскажите, а это настраивается или если Windows 10 то только безрамочный?


    1. yole
      06.08.2019 13:56

      Можно выключить: нажимаете Shift два раза, вводите Registry, в диалоге переключаете ide.win.frame.decoration в off.


    1. Beholder
      06.08.2019 17:33

      Выключить параметр ide.win.frame.decoration (в реестре Идеи или в файле idea.properties)


  1. doom369
    06.08.2019 13:59

    В новой версии maven-release-plugin при запуске из IDE перестал работать. Если запускать из окна «Maven» (command line: release:prepare release:perform). Плагин ожидает ввода из консоли новой версии, и тут похоже ИДЕ потеряла это окошко.

    IDE может выполнять рефакторинг Inline Method, даже если return-выражение прерывает поток выполнения.

    За эту штуку — отдельное спасибо.


  1. AlexanderRS
    06.08.2019 14:07

    Раньше, когда был «Run dashboard», при клике в окне «Maven» на задачу, задача запускалась и вывод был в консоль. На 2019.2 загорается зеленый индикатор на табе «Services», но вывода нет.


    1. kaleev
      06.08.2019 15:17

      Это известная проблема: youtrack.jetbrains.com/issue/IDEA-215102, она будет пофикшена в минорных апдейтах.


      1. AlexanderRS
        06.08.2019 15:23

        странно, что это не считается блокером для выпуска релиза. Может есть workaround?


        1. kaleev
          06.08.2019 15:36

          да, для задачи в окне Maven можно создан run конфигурацию (пункт Create 'name'… в контекстном меню) и потом запускать именно ее, или убрать Maven run конфигурации из списка отображаемых в Services.


  1. Danik-ik
    07.08.2019 08:42
    +1

    Теперь можно выбрать метод при выполнении действия Step Into.

    Вот одно только это — и уже ДААААА! Спасибо, вообще очень много приятных полезностей на единицу обновления.


    А не подскажет ли кто-нибудь, как запитать java 13 текстовые блоки под мавеном? Явное прописывание превью-опции командной строки jdk в pom не влияет на мнение Идеи об уровне языка. Других способов "на бегу" не нашёл. Где посмотреть?