company_banner

IntelliJ IDEA 2019.2: поддержка Java 13 Preview, инструменты профилирования, новое окно сервисов и многое другое

    Привет! Традиционно рассказываем, что нового в 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
    JetBrains
    219.08
    Делаем эффективные инструменты для разработчиков
    Share post

    Similar posts

    Comments 62

      +2
      Крутое обновление!
      А еще шрифты стандартные поменяли. Но не рассказали об этом :|
        0
        Именно шрифт? Мы увеличили межстрочное расстояние. У вас какой был и какой стал?
          +2
          Был Monospaced, а стал Consolas. И да, расстояние с 1 изменилось на 1.2
            0
            Про Consolas да, забыли рассказать. Про межстрочное расстояние в посте есть :)
              0
              Выяснил: действительно поменяли. Забыли упомянуть, прошу прощения.
              +1
              Присоединяюсь. Fira Code убрали к тому же.
                +2
                Fira Code вернем обратно, он по ошибке потерялся.
                  0
                  Спасибо!
            +4
            Лучше бы жор CPU починили. Господа разработчики, почему ваша IDE, будучи свернутая безо всяких запущенных процессов съедает половину моей батареи впустую? Вы что там, майните биткоины в фоне?
              +5
              А можно вас попросить снять профиль и прсилать нам? Как — описано тут intellij-support.jetbrains.com/hc/en-us/articles/207241235-Reporting-performance-problems

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

                А бывает что зависает наглухо на определённых файлах.
                  +6
                  Не надо поддерживать оратора, нужно подержать JetBrains и отправить снепшот по инструкции выше ;) Если мы не знаем о проблеме, то мы ее скорее всего не починим.
                    –5
                    Ну и не чините скорее всего. Пусть глючит, если вы не знаете о проблеме.
                  +3
                  У меня была такая же проблема — пофиксил сам.
                  Добавьте в idea64.vmoptions строчку
                  -XX:-SplitIfBlocks

                  Подробности в youtrack.jetbrains.com/issue/JBR-1596
                    +2

                    Андрей, спасибо за расследование и workaround!

                      0
                      Не помогло. Шпарит как и было. В итоге, откатился на 2019.1 поскольку новое поделие вообще поломало мне проекты так как они убрали диалог настроек импорта гредл проектов и идея сама принимает решение (причем неправильное) о том как мне надо организовывать проект.
                    0
                    В IntelliJ IDEA 2019.2 появилась поддержка нативной обработки игнорируемых файлов Git


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

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

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

                        2) Как быть, если я хочу внести некую правку в open source проект на гитхабе? Мне больше по душе коммитить через терминал, но глобальное исключение папки из отслеживания гитом — это тот ещё геморрой, который я так и не смог одолеть. Добавлять в .gitignore своё локальное окружение — за такое и по рукам линейкой получить можно. Поэтому приходится постоянно смотреть в терминале на папку .idea, которая не отслеживается. Как быть в таком случае?
                          0
                          1) В jar-файл экспортируются настройки уровня IDE. В него не попадают, например, ран-конфигурации, которые специфичны для проекта. Инспекции можно настроить по-разному для разных модулей в проекте, такую конфигурацию тоже нельзя экспортировать в jar. Ну и workflow совсем не такой удобный — нужно явно просить коллег импортировать jar (и делать это каждый раз, когда что-то меняется). В случае с шаренным .idea настройки автоматически применяются у всех, кто открыл проект, и автоматически подхватываются, когда кто-то их обновляет.

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

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

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

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

                        +1
                        Новые фичи ядра, интерфейса, и т. п. вы добавляете сразу во все свои IDE? То есть ускоренную загрузку, новый редактор и прочее следует также ждать в CLion и PyCharm 2019.2?
                          +1
                          Да, все это там есть.
                          0
                          Новый релиз выглядит свежо и по ощущениям работает отзывчивей. Жаль что многие плагины не обновились к дате релиза. Было бы удобно про это узнавать до обновления IDE.
                            0
                            Какие плагины вы имеете в виду? Наши собственные плагины сейчас всегда релизятся вместе с IDE.
                              0

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


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

                              5 из них от JetBrains.

                                0

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

                                  +1

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

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

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

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

                            Нужно чтобы у меня был включен какой то плагин? Проект был какого то особенного типа?
                              0
                              Если чего-то не можете найти, всегда используйте Find Action: Ctrl/Cmd+Shift+A.
                              Наберите там Services.
                                +3
                                Я так и делал. Там нету «Services».

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

                                Я в новом проекте сделал себе коннекшн к базе. После того как его создал, это окно сразу появилось (и также опция Services в поиске стала доступна).
                                  –1
                                  Вот да, почему просто нельзя добавить окно «на постоянку» себе? Почему оно становится доступным только когда что-то «туда попало»?

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

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

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

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

                                      Т.к. я не могу найти варианта «указать для IDE, что это приложение будет сервисом» (как понимаю, такого и нет) — беру максимально близкое и подходящее: простой Application с указанием main-class.
                                      Но я не могу понять, какой логикой руководствуется IDE при определении «что размещать во вкладке сервисов, а что нет» — Spring-приложения идут туда.
                                      Если вы сможете подсказать, как настроить запуск Java-class, чтобы он попадал в сервисы — буду очень сильно рад.
                                        0
                                        В Services попадают только те типы конфигураций, которые укажет пользователь, для Spring Boot конфигураций, когда их становится больше одной, IntelliJ IDEA показывает всплывающую подсказку с предложением поместить их в Services, а так список типов можно найти в Edit Run/Debug Configurations диалоге, выбрав справа нод Templates: Configurations available in Services.
                                          0
                                          Ок, понял и нашел. Разумеется благодарю!
                                          Однако, кхм, ну совсем не очевидно же…
                                          P.S. Возможно как-то что-то сделать с этой картинкой при загрузке? Она правда не выносимая.
                                            0

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

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

                                              Тот случай, когда не думаешь, что можно убрать (искал, как «изменить»).
                                              Спасибо!
                                0
                                После обновления сразу заметил, что у официального плагина Android Support перестал работать экран дизайна компоновки. Пришлось вернуть 2019.1.4.
                                  +2
                                  Это известная проблема, связанная с переходом на новую версию JDK, мы ее чиним. Пока что вы можете скачать версию с JDK 8 с www.jetbrains.com/idea/download/other.html, в ней дизайнер работает.
                                  +2
                                  Большое спасибо за наглядное отображение процесса сборки приложения мавеном! Для гредла это уже давно было, а для мавена пришло только с этим обновлением, если я не ошибаюсь! Исключительно полезная фича, особенно, если проект большой!
                                    0
                                    Хорошие продукты делают. Удивлен, что RnD еще не свалил из страны.
                                      0
                                      Современный безрамочный интерфейс в Windows 10.

                                      Подскажите, а это настраивается или если Windows 10 то только безрамочный?
                                        0
                                        Можно выключить: нажимаете Shift два раза, вводите Registry, в диалоге переключаете ide.win.frame.decoration в off.
                                          0

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

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

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

                                          За эту штуку — отдельное спасибо.
                                            0
                                            Раньше, когда был «Run dashboard», при клике в окне «Maven» на задачу, задача запускалась и вывод был в консоль. На 2019.2 загорается зеленый индикатор на табе «Services», но вывода нет.
                                              0
                                              Это известная проблема: youtrack.jetbrains.com/issue/IDEA-215102, она будет пофикшена в минорных апдейтах.
                                                0
                                                странно, что это не считается блокером для выпуска релиза. Может есть workaround?
                                                  +1
                                                  да, для задачи в окне Maven можно создан run конфигурацию (пункт Create 'name'… в контекстном меню) и потом запускать именно ее, или убрать Maven run конфигурации из списка отображаемых в Services.
                                              +1
                                              Теперь можно выбрать метод при выполнении действия Step Into.

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


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

                                                0
                                                Обещают в 2019.3 корректно подтягивать «экспериментальный» уровень языка из pom.xml (вчера закрыли issue): youtrack.jetbrains.com/issue/IDEA-212618
                                                0
                                                А у меня почему-то не всё так радужно. Много багов.
                                                1. Перестала работать кнопка перейти к коду(F4). Например, если смотреть изменения в коммите и переключаться между файлами с помощью F7, а потом остановиться и нажать F4, то ничего не происходит. А раньше закрывалась окно просмотра изменений и открывался этот файл.
                                                2. Сервисы перестали группироваться. Из-за того, что у меня 40+ микросервисов, я часто группирую их. После обновления кнопка группировки осталась, но когда, я на неё нажимаю и ввожу имя группы, то ничего не происходит.
                                                3. В новой вкладке services некорректно работает поиск по сервисам. Часто бывает, что набранное мной слово найдено, но при этом idea подсвечивает набираемое слово красным цветом, что раньше говорило пользователю, что ничего не найдено

                                                  0
                                                  Проблема с навигацией из Diff view известная: youtrack.jetbrains.com/issue/IDEA-218418
                                                  Группировка сервисов вернется в ближайшем апдейте 2019.2.1
                                                  Спасибо, что обратили внимание на проблему с красным текстом в speed search popup, добавили ее в трекер: youtrack.jetbrains.com/issue/IDEA-220601
                                                  0
                                                  Во-первых, мы существенно ускорили запуск. Надеемся, вы заметили :)

                                                  О да, оно теперь пару минут начало запускаться вместо десятка секунд.
                                                  И во время запуска очень сильно шуршит хардом (сама IDEA лежит на харде, проект — на SSD)
                                                    +1
                                                    Почему просто нельзя сделать работу с зависимостями как в эклипсе!?
                                                    Ваша диаграмма не сильно помогает остлеживать дубли зависимостей с разными версиями.
                                                      0
                                                      А скажите, зачем убирают возможность открыть произвольную папку в качестве raw файлового проекта?
                                                      Раньше было очень удобно пользоваться в качестве продвинутого текстового редактора, чтобы быстро что-то найти, посмотреть или даже сделать в побочной репе (например, в iOS проекте, не запуская Xcode/AppCode).
                                                      Теперь пользоваться для этих целей стало почти невозможно = очень неудобно.
                                                        0
                                                        А что вы имеете в виду под «убирают возможность»? Мы ничего специально не убирали и не планируем.
                                                          0
                                                          Ну значит само убирается при отсутствии тестов и фокуса внимания. )
                                                          Здесь я имел ввиду, что далеко не всегда можно просто открыть в Идее непрофильный проект просто как папку текстовых файлов — в навигаторе Project они не отображаются и прочие неудобства.

                                                          Еще непонятно, например, откуда больше растут, — из платформы Идеи или собственных наворотов Гугла, — такие «прелести» в Android Studio, когда довольно часто при попытке настроить расположение окон (Tool Window) под себя — можно оказаться в поломанном состоянии проекта: надписи окон налезают друг на друга, исчезает Project и проект приходится импортироваться заново.
                                                          Вообще эта проблема наблюдается испокон веков, и от нее очень подгорает, когда сталкиваешься.

                                                          Почему нельзя сделать рабочей связку «Store Layout as Default» + «Restore Default Layout» в другом проекте?

                                                      Only users with full accounts can post comments. Log in, please.