company_banner

IntelliJ IDEA 2019.1: Кастомизация тем интерфейса, switch-выражения из Java 12, отладка внутри Docker-контейнеров

    Это – обзор нового в IntelliJ IDEA 2019.1. Ссылки в заголовках ведут на соотвествующие разделы на сайте, где всё описано детально, но на английском.

    image

    Интерфейс


    Сделали новые темы интерфейса и возможность создавать их самостоятельно.



    Java




    • Появилась поддержка функции Switch Expressions из Java 12 Preview: JEP 325. Подробнее здесь.
    • Рефакторинг Extract Variable сохраняет семантику лучше, чем раньше.
    • В тернарных выражениях IDE подсвечивает только то условие, в котором обнаружено нарушение допустимости значения null.
    • IDE отслеживает значения операций умножения, вычисления остатка и сдвига вправо.
    • Появилась возможность настроить имена переменных для автоматически генерируемых блоков try/catch.
    • IDE теперь автоматически выводит чистоту конструкторов из источников.
    • Можно перейти из трассировки стэка к точному месту ошибки на строке.
    • IDE научилась находить дубликаты веток switch, их можно объединить с помощью быстрого исправления.
    • Можно перемещать switch-выражения и catch-блоки вверх/вниз с помощью действия Move Statement Up/Down.
    • Появилась возможность импортировать и экспортировать шаблоны Structural Search в буфер обмена и из него.

    Gradle




    • В новых Gradle-проектах действия сборки и запуска делегируются Gradle по умолчанию.
    • Делегирование сборки и запуска можно настроить отдельно для каждого Gradle-проекта.
    • Когда сборка делегируется Gradle, работает функция HotSwap.
    • Встроенная версия Gradle обновилась до 4.10.3.
    • С помощью инструмента запуска тестов Gradle теперь можно запускать параметризованные тесты JUnit.
    • IDE правильно выбирает, какую тестовую задачу Gradle запускать из редактора.
    • В окне Gradle можно просмотреть структуру многомодульного проекта без необходимости запускать команду gradle projects.

    Maven




    • Когда сборка делегируется Maven, работает функция HotSwap.
    • Теперь IntelliJ IDEA работает только с Maven 3.3.9. Maven 2 больше не поддерживается.
    • Все выходные данные сборки Maven теперь отображаются в одном месте — в окне инструментов Build.
    • Диаграммы Maven показывают конфликтующие зависимости и дубликаты. Кроме того, можно отдельно просмотреть соседей выбранного узла или пути к ним, а также отключить рамки на диаграмме.

    Системы контроля версий




    • Действия Fixup и Squash теперь есть в контекстном меню на вкладке VCS Log, так что вы можете
      быстро создавать коммиты с сообщениями fixup! и squash!
    • Можно черипикнуть файлы из VCS-лога в контекстном меню.
    • В окне Branches теперь можно увидеть наличие входящих и исходящих коммитов для отдельных веток, если включена опция Mark Branches that have incoming/outgoing commits in the Branches popup.
    • Новый узел Recently Deleted на вкладке Shelf показывает все недавно удаленные отложенные файлы и дает возможность их восстановить.
    • Для аннотаций VCS есть режим, в котором отображаются только инициалы автора.
    • Выполняя частичный коммит можно выделить все фрагменты кода и снять с них выделение одним действием: используйте новый флажок Uncheck all на панели Diff диалогового окна Commit Changes.
    • На панели Project файлы и папки, игнорируемые с использованием Git ignore, выделяются оливковым цветом.

    Diff Viewer




    • Чтобы скопировать текст в пустое окно Diff, можно перетащить в него файл.
    • Теперь в Diff Viewer можно просматривать различия не только по словам, но и по символам.
    • Новая опция Swap Sides позволяет выбрать, какой файл в Diff Viewer будет отображаться слева, а какой — справа.

    Recent Locations


    В новом всплывающем окне Recent Locations (Cmd-Shift-E / Ctrl-Shift-E) можно просмотреть все места в коде, которые вы недавно посещали или редактировали.



    Отладчик JVM




    • Вычислитель выражений отладчика теперь поддерживает операторы synchronized, выражения assert и операторы switch.
    • Во время отладки Java-проекта можно выйти из текущего блока, используя новое действие Step Out of the block.
    • Теперь вы можете вызывать действие перехода к курсору с помощью мыши — кликните по нужному номеру строки в режиме отладки.

    Редактор




    • Работает экспорт настроек стиля кода в JSON-файл. Экспортированные настройки можно использовать для интеграции с внешними инструментами.
    • Теперь можно включить soft-wraps для конкретного типа файла.
    • При первом использовании сочетания клавиш Ctrl+Y в Windows вы можете назначить его для действия Delete Line или Redo в диалоге Keymap Configuration.
    • Добавили раскладку Sublime Text.
    • Раскладка VSCode сделана в виде плагина VSCode Text keymap.

    Scala


    • Подсветка ошибок, неявные подсказки и действия GoTo / Quick Definition / Quick Documentation теперь работают в for-генераторах.
    • Действие Find Usages можно вызывать для неявных определений, методов apply/unapply, методов for-генераторов и типов Single Abstract Method (SAM).
    • Можно декомпилировать скомпилированные Scala-файлы в Java.
    • Появилась возможность выбрать версию форматтера Scalafmt.
    • Сделали плагин для формата HOCON.
    • Улучшена подсветка ошибок: частичное объединение, подсветка конструкторов, плагин для компилятора better-monadic-for (функция implicit0), kind-projector (полиморфные лямбды на уровне значений), simulacrum (конструкторы типов с большей арностью) и другое.

    Groovy


    • Поддержка Java-синтаксиса лямбда-выражений из Groovy 3.0.
    • Intention actions и инспекции для Groovy работают внутри тела лямбды.
    • Отладка Java-лямбд.

    Kotlin



    • Встроенный Kotlin- плагин обновился до версии 1.3.21.
    • Можно создать метод main без параметров с помощью live templates.
    • IDE предлагает добавить суффикс Async к функции, возвращающей Deferred.
    • Еще один intention поможет преобразовать SAM в виде лямбды в анонимный объект.
    • Усовершенствованы преобразования строк.

    JavaScript и Typescript


    • Новые рефакторинги и intention actions для деструктурирования JavaScript и TypeScript.
    • Новое действие для замены функции, возвращающей Promise, на асинхронную функцию с async/await.
    • Обновленная документация для CSS и HTML.
    • Усовершенствованная консоль в отладчике JavaScript и Node.js.

    Docker


    Теперь можно отлаживать Java-приложения, запущенные внутри Docker-контейнера.



    Плагин Kubernetes


    • Добавлена возможность загружать спецификации ресурсов из внешних источников.
    • Рефакторинг Rename для чартов можно применять в файлах ресурсов Helm.

    Spring Cloud Stream


    • Поддержали редактирование проектов в Spring Cloud Stream: подсветка синтаксиса, автодополнение кода, инспекции и быстрые исправления.
    • Автодополнение имен привязок работает для значений и ссылок в файлах application.properties и application.yml.
    • Переключаться между обработчиками связанных сообщений consumers и producers можно по значку в поле редактора.

    Другое


    • В IntelliJ IDEA 2019.1 попали все нововведения Android Studio 3.3. Подробнее.
    • Ранний доступ к новому JetBrains Runtime 11. Пока что IntelliJ IDEA доступна как с JetBrains Runtime 8, так и с JetBrains Runtime 11.
    • Поддержали баз данных Greenplum, Vertica и Apache Hive. В следующем апдейте появится Snowflake.
    • Новые настройки keep-alive и auto-disconnect для источников данных.
    • Поддержали фреймворк Eclipse Concierge OSGi.
    • Появилась возможность поиска настроек плагинов. Даже если плагин установлен вручную, настройки будут отображаться в результатах поиска.

    Список важных улучшений получился довольно большим, но в работе над всеми этими классными фичами мы не забывали о качестве и стабильности — продолжаем исправлять ошибки, избавляться от проблем с производительностью и делать IDE еще удобнее.

    Полный список можно найти в release notes. Мы благодарим всех, кто голосует за задачи в трекере, отправляет предложения по улучшению, делится мыслями в Твиттере и в комментариях на Хабре. Ваши отзывы помогают нам делать IntelliJ IDEA лучше, продолжайте в том же духе!

    Скачать IntelliJ IDEA 2019.1

    JetBrains
    JetBrains
    186,00
    Делаем эффективные инструменты для разработчиков
    Поделиться публикацией

    Похожие публикации

    Комментарии 19

      0
      Поставил эту версию, но откатился обратно на 2018.3.4, там какой-то баг с Gradle, не распознает таски, ключевые слова… Надеюсь в следующем году починят.
        +1
        Мы что-то не в курсе. Можете поподробней? Пример воспроизведения, скажем, показать :)
          0
          Для этого мне надо снова установить последнюю версию, потратить время, потом снова откатиться на старую. Я и так деньги вам плачу. В следующий раз обязательно сделаю скриншоты хотя бы.
            +3
            Хорошо. Вообще, сообщать о багах – иногда единственный способ сделать так, чтобы их починили.
              0

              зачем? обе версии прекрасно живут рядом — хотите одну запускайте, хотите другую.
              Иногда при "не распознаёт таски" и прочих "багах" помогает инвалидация кеша у IDEA

          0

          Спасибо! Как дела в Scala plugin с "good code is red"? Есть ли надежда увидеть поддержку whitebox прежде чем их выпилят в Scala3?

            0
            Копипейст от ребят из скала-плагигна:

            Про улучшения в последнем релизе:
            blog.jetbrains.com/scala/#highlighting
            Whitebox макросы в общем случае поддержать не получится, но мы собираемся добавить многие макросы из shapeless в ближайшее время. Для менее популярных макросов можно написать поддержку самостоятельно, как отдельный плагин. Мы с радостью поможем в гиттере
            gitter.im/JetBrains/intellij-scala
            0
            а можно пример как дебажить ява приложение в докере
            кроме варианта как создать
            ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005", ...
            и дебажить через remoute debug ничего не нашел
              0
              Можно добавить Launch Docker before run task и заранее перед этим ремоутным дебагом застартовать нужный сервис в композе или контейнер
              0
              В IntelliJ IDEA 2019.1 попали все нововведения Android Studio 3.3.
              Ммм, так и чем теперь лучше пользоваться? :)
              Или просто подождать, пока в какую-нибудь Android Studio 3.5 попадут все нововведения из IntelliJ IDEA 2019.1?
                0
                Всё, что касается Android развивается в Android Studio, и только потом падает в IDEA.
                  0
                  Android 3.5 Canary уже основана на 2019.1
                  developer.android.com/studio/preview/features
                  0

                  Что на счёт плагина golang в чем-нибудь ещё, кроме Idea ultimate? Хочу использовать его в PyCharm, а он не хочет.

                    0
                    Пока не ожидается
                      0

                      Есть какая-то техническая сложность или это политика? У меня платная версия PyCharm, покупать ещё Goland?

                        +1
                        Это не связано с техничечскими сложностями. Если хочется всё иметь в одной IDE, подходит Idea Ultimate. Если хочется именно в PyCharm иметь Go, то единсвтенный вариант, который потенциально возможен: платный Go-плагин по цене GoLand.
                    0
                    А я уже давно мечтаю об отображении двумерных массивов как DataFrame в PyCharm. Жутко намучаться можно, если матрица больше чем 10х10.

                    И люди ищут на stack, на форуме самой Intellij задают вопросы(предлагают только мелкие хаки с функцией для отображения, но для больших массивов все равно не подходит). Есть какие-то причины не вводить такой функционал? Или спрос слишком низок?
                      0
                      У нас есть SciView tool window в PyCharm Professional www.jetbrains.com/pycharm/features/scientific_tools.html

                      Он умеет отображать двумерные numpy arrays наряду с pandas data frames. Обычно когда хотят численные массивы, то хотят или numpy или pandas. Если хочется других типов данных, то можно завести feature request
                        0
                        Да, но я то про Idea. Для Java ничего удобного не нашёл

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое