Это – обзор нового в 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

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


  1. ifqthenp
    09.04.2019 17:34

    Поставил эту версию, но откатился обратно на 2018.3.4, там какой-то баг с Gradle, не распознает таски, ключевые слова… Надеюсь в следующем году починят.


    1. moscas Автор
      10.04.2019 12:32
      +1

      Мы что-то не в курсе. Можете поподробней? Пример воспроизведения, скажем, показать :)


      1. ifqthenp
        11.04.2019 12:45

        Для этого мне надо снова установить последнюю версию, потратить время, потом снова откатиться на старую. Я и так деньги вам плачу. В следующий раз обязательно сделаю скриншоты хотя бы.


        1. moscas Автор
          11.04.2019 13:01

          Хорошо. Вообще, сообщать о багах – иногда единственный способ сделать так, чтобы их починили.


        1. Borz
          11.04.2019 14:46

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


  1. borv
    09.04.2019 21:55

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


    1. moscas Автор
      10.04.2019 12:21

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

      Про улучшения в последнем релизе:
      blog.jetbrains.com/scala/#highlighting
      Whitebox макросы в общем случае поддержать не получится, но мы собираемся добавить многие макросы из shapeless в ближайшее время. Для менее популярных макросов можно написать поддержку самостоятельно, как отдельный плагин. Мы с радостью поможем в гиттере
      gitter.im/JetBrains/intellij-scala


  1. panchmp
    09.04.2019 23:16

    а можно пример как дебажить ява приложение в докере
    кроме варианта как создать
    ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005", ...
    и дебажить через remoute debug ничего не нашел


    1. moscas Автор
      10.04.2019 17:32

      Можно добавить Launch Docker before run task и заранее перед этим ремоутным дебагом застартовать нужный сервис в композе или контейнер


  1. Revertis
    09.04.2019 23:40

    В IntelliJ IDEA 2019.1 попали все нововведения Android Studio 3.3.
    Ммм, так и чем теперь лучше пользоваться? :)
    Или просто подождать, пока в какую-нибудь Android Studio 3.5 попадут все нововведения из IntelliJ IDEA 2019.1?


    1. Prototik
      10.04.2019 02:38

      Всё, что касается Android развивается в Android Studio, и только потом падает в IDEA.


    1. ChPr
      10.04.2019 10:26

      Android 3.5 Canary уже основана на 2019.1
      developer.android.com/studio/preview/features


  1. ivanych
    10.04.2019 18:28

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


    1. moscas Автор
      10.04.2019 19:00

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


      1. ivanych
        10.04.2019 20:20

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


        1. moscas Автор
          10.04.2019 20:58

          Это не связано с техничечскими сложностями. Если хочется всё иметь в одной IDE, подходит Idea Ultimate. Если хочется именно в PyCharm иметь Go, то единсвтенный вариант, который потенциально возможен: платный Go-плагин по цене GoLand.


  1. DouTro
    10.04.2019 21:30

    А я уже давно мечтаю об отображении двумерных массивов как DataFrame в PyCharm. Жутко намучаться можно, если матрица больше чем 10х10.

    И люди ищут на stack, на форуме самой Intellij задают вопросы(предлагают только мелкие хаки с функцией для отображения, но для больших массивов все равно не подходит). Есть какие-то причины не вводить такой функционал? Или спрос слишком низок?


    1. moscas Автор
      11.04.2019 18:32

      У нас есть SciView tool window в PyCharm Professional www.jetbrains.com/pycharm/features/scientific_tools.html

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


      1. DouTro
        11.04.2019 23:27

        Да, но я то про Idea. Для Java ничего удобного не нашёл