company_banner

IntelliJ IDEA 2020.1: Java 14, анализ потока данных в отладчике, новый режим LightEdit и многое другое

    Привет, Хабр!


    На прошлой неделе состоялся релиз IntelliJ IDEA 2020.1, и в этом посте мы коротко расскажем о самом интересном в новой версии. Из крупного: мы добавили поддержку Java 14, анализ потока данных в отладчике, режим редактирования файлов без открытия проекта (LightEdit) и новые фичи для разных фреймворков. Все подробности можно узнать на странице What’s new.



    Java



    • Новая версия IntelliJ IDEA поддерживает Java 14. В частности, появилось автодополнение, навигация, инспекции, генерация конструкторов для записей (JEP 359) и возможность исправить перегруженные выражения instanceof-and-cast на лаконичные pattern-переменные (JEP 305).
    • Больше не нужно качать Java руками. Можно скачать и установить JDK прямо в IDE, как при создании нового проекта, так и при открытии существующего.
    • Мы добавили новые инспекции. Они проверяют корректность использования заглавных букв в шаблонах `SimpleDateFormat`, ищут избыточные вызовы методов, находят и предлагают удалить лишние экранирующие символы в строковых литералах и делают многое другое.

    Редактор



    • Появился долгожданный режим LightEdit. С его помощью можно быстро вносить изменения в отдельные файлы в облегченном редакторе, не создавая и не загружая проект. Открывать файлы в режиме LightEdit можно из командной строки (`idea file.extension`), с начального экрана IDE или из файлового менеджера операционной системы. Подробнее в блоге (англ.).
    • Новые Rename и Change Signature позволяют изменить сигнатуру метода или класса, просто изменив параметры класса или метода в коде. Появится значок на поле редактора, нажав на который можно просмотреть и применить изменения к объявлению класса/метода и ко всем его использованиям. Подробнее в блоге (англ.).
    • Читать Javadocs в редакторе весьма неудобно из-за обилия тегов, через которые приходится продираться, особенно если нужно перейти по ссылке. Поэтому мы научили IDE рендерить Javadocs прямо в редакторе.
    • Добавлена первая реализация Code vision — фичи, которая позволяет видеть информацию о коде прямо в редакторе. В этой версии вы можете включить показ количества использований рядом с каждой декларацией.

    А еще в редакторе появились:


    • Быстрый просмотр определения типа для Java-символов.
    • Отображение методов классов и интерфейсов в панели навигации.
    • Дзен-режим для полного погружения.
    • Умная проверка грамматики.

    Отладчик



    • В отладчике теперь поддерживается анализ потока данных. Он предсказывает, как будет выполняться программа. Когда выполнение приложения прерывается на точке останова, IDE производит анализ потока данных на основе текущего состояния программы и показывает, значения каких проверок будут равны true, а каких — false. Читайте подробнее в блоге (англ.).
    • Теперь можно закрепить любое поле объекта в верхней части списка полей. Это удобно, когда у объекта так много полей, что трудно найти нужное.

    Профилировщик



    • В IntelliJ IDEA 2020.1 теперь можно открывать файлы дампов памяти `.hprof`, которые помогают обнаружить утечки памяти. Чтобы открыть hprof-файл, перейдите в раздел Help | Find action и введите «hprof» для поиска действия Open Hprof Snapshot. Обратите внимание, что эта функциональность пока находится в экспериментальном режиме.
    • Профилировщик теперь может сворачивать рекурсивные вызовы и фокусироваться на вызовах методов с помощью соответствующих опций. Разобраться с работой профилировщика поможет данная данная статья в документации (англ.).

    VCS



    • Диалог Interactively Rebase from Here стал по-настоящему интерактивным. Теперь в нем есть диаграмма, показывающая, какие действия были применены к каждому коммиту, отображаются сведения о коммитах, и можно просмотреть различия и при необходимости отменить изменения.
    • Мы переработали интерфейс для Commit и заменили модальный диалог полноценным инструментальным окном Commit. У новых пользователей это окно включено по умолчанию, а те, кто обновился со старой версии, могут включить его в меню Preferences/Settings | Version Control | Commit Dialog.

    А еще:


    • При отсутствии Git его теперь можно установить прямо из IDE.
    • Обновлено окно Branches.
    • На вкладке Log теперь отображается список веток.

    Интерфейс



    • Мы разработали собственный шрифт JetBrains Mono, получили массу положительных отзывов и решили сделать JetBrains Mono шрифтом по умолчанию в IntelliJ IDEA. Если вам вдруг не понравился JetBrains Mono, то всегда можно откатиться к старому системному моноширинному шрифту в Preferences/Settings | Editor | Font.
    • В новой версии IDE появилась стандартная светлая тема, которая выглядит одинаково во всех операционных системах, — IntelliJ Light.
    • Обновлен дизайн полей Find и Find in Path.

    Фреймворки и веб



    • IntelliJ IDEA 2020.1 Ultimate предоставляет поддержку Selenium, фреймворка для тестирования веб-приложений, через новый плагин Selenium UI Automation Testing. Плагин поддерживает самые популярные JVM-фреймворки для UI-тестирования и библиотеки генерации отчетов о тестировании: Selenium, Selenide, Geb, Serenity BDD и Allure Framework. Читайте отдельный большой пост про поддержку Selenium (англ.)
    • В версии 2020.1 мы расширили поддержку фреймворка Spring WebFlux. IDE теперь корректно взаимодействует с `Rendering` API, поэтому работает автодополнение и переход к связанным представлениям. А еще мы добавили маппинги запросов, поэтому, если в вашем приложении WebFlux включен Actuator, вы можете получить доступ к маппингам в окне Run.

    А еще:


    • Добавлены автодополнение, навигация, рефакторинг Rename (Shift+F6) для JMS и Spring Messaging API.
    • Новая версия IDE различает Spring профили в выражениях и позволяет применять к ним умные действия, например Find Usages (Alt+F7) или Rename.
    • Для Micronaut добавлены автодополнение параметров в файлах конфигурации, а также навигация и быстрый просмотр документации.
    • Добавлены инспекции для RxJava.
    • Теперь можно создавать проекты Quarkus и MicroProfile с помощью мастера создания проектов.
    • Добавлено распознавание фрагментов кода для R2DBC, Vert.x SQL Clients, Apache Spark SQL, Apache DB Utils и других библиотек.
    • Появилась интеграция со Swagger Codegen — мощным инструментом для создания серверных заглушек, клиентов API и документации.
    • Появилась навигация из файлов HTTP-запроса прямо к соответствующим сервисам.
    • Тысяча и одно улучшение для JavaScript, про которые можно прочитать подробно в отдельном хабропосте.

    Но и это еще не все


    В новой версии улучшены инструменты баз данных (отдельный хабропост тут), поддержка Scala, Docker и Kubernetes (пост на англ.). А еще есть разные небольшие, но классные изменения, например возможность хранить конфигурации запуска в папках проекта и параллельное отображение окон терминала.


    На этом все! Еще раз напомню, что подробнее обо всем вышесказанном можно прочитать на странице What’s new на нашем сайте.


    Команда IntelliJ IDEA

    JetBrains
    Делаем эффективные инструменты для разработчиков

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

      +2
      Отличный продукт, на работе пользуемся (лицензионным, разумеется)

      А кто-то может пояснить как у них работает программа EAP — для своих pet-projects дома я использовал GoLand EAP, но с выходом 2020.1 он превратился в тыкву c 30-дневным триалом. Так теперь и будет или скоро новый EAP появится?
        +4

        Сначала выходит EAP будущей мажорной версии, например, 2020.1 EAP. Это "программа раннего доступа" продукта, которая распространяется бесплатно. А через пару месяцев, когда выходит официальный релиз (к примеру, нынешний 2020.1), то релизная версия становится основной стабильной, а EAP программа закрывается.


        Где-то через месяц откроется EAP следующей мажорной версии, то есть 2020.2. И на время EAP программы билды снова будут распространяться бесплатно.


        И еще один момент. Вы упомянули, что на работе пользуетесь нашим продуктом (IntelliJ IDEA?). Я так понимаю, что у вас есть лицензия, предоставляемая работодателем. В этом случае, вы можете ей пользоваться и дома, в том числе и для pet-projects.

          +1

          По ссылке указано, что свою персональную лицензию можно использовать как дома, так и на работе.
          Использование корпоративной лицензии для домашнего использования зависит от разрешения компании: Can I use a commercial license purchased by my company at home?.

            0
            точно, спасибо за исправление
            0
            Спасибо за разьяснения. Насчет использования рабочей лицензии дома — было б здорово, но вряд ли реализуемо: на работе стоит license-server, который доступен только через рабочий VPN, которого на домашней машине нет.
              0
              Действительно, этом случае без VPN вы не достучитесь до сервера. Но вообще можно откреплять лицензии с license server и раздавать per-user (подробнее здесь). Может вам сможет помочь тот, кто у вас на работе занимается администрированием лицензий JetBrains.
                0
                Спасибо, поинтересуюсь.
              0

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

                +1

                IDEA одна — лицензии в ней две. Обе активировали и работайте

                  +1
                  Просто привяжите рабочую лицензию к одному аккаунту JetBrains, а опенрсорную к другому. И на время удаленки пользуйтесь на ноутбуке аккаунтом, к которому привязана рабочая лицензия.
              0
              Отлично, пытался со switch выражениями поиграть, но не хотела IDEA дружить с ними даже в режиме эксперементальных фич(хотя их же вроде в 13 версии ввели) в прошлой версии(еще и мавен на что-то ругался). Теперь всё работает отлично.

              В любом случае спасибо за лучшую IDE!
                +1
                Новый шрифт великолепен. Я как обновился не сразу понял почему так хорошо стало. Потом уже присмотрелся и пошел release notes читать.

                И отдельное спасибо за прекращение перетирания Xmx при каждом обновлении. Мелочь, но так раздражало.

                Если сделаете лицензионный сервер не таким назойливым вообще цены не будет. В условиях удаленки и ВПН Идея часто поднимается раньше ВПН и показывает окошко хочу тикет, сервер недоступен. Это раздражает.
                  +2

                  Зачем-то переколбасили панель поиска в файле.


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


                  Кнопки Match case / Whole words / Regex визуально стали продолжением поля ввода, т.к. расположены к последнему вплотную и, с какого-то перепуга, на белом фоне. Что, опять же, ухудшает читаемость.


                  Размеры катастрофы усугубляет то, что каждый раз приходится вглядываться, в каком они состоянии. Светло-серый — unchecked, очень светло-серый — disabled или светло-бирюзовый (?) — checked.


                  Неужели так сложно сделать нормальные контрастные цвета по умолчанию и другой цвет фона для checked кнопки?


                  Для кнопки "In Selection", расположенной на этом же тулбаре, ведь смогли сделать нормально, а не по-дизайнерски.


                  Такое впечатление, что изменения в UI идут обязательным условием для выпуска релиза, вне зависимости от их нужности и полезности.

                    +1
                    Спасибо за фидбэк, передаю ответ от UX-команды:

                    Были жалобы от пользователей, что опции в виде чекбоксов далеко, можно забыть о них, не заметить, что опция включена, и получить не релевантные результаты. Поэтому поменяли внешний вид поля, чтобы расположить опции поиска ближе к самому полю и сделать их более заметными.

                    А фон для кнопки checked поменяем.
                    +1
                    Спасибо вам большое за такой классный продукт, я прям читал и плакал от радости!

                    Сделайте уже IdeaOS, так как эта прослойка из операционной системы становится лишней.
                      0
                      спасибо за спасибо! :)
                      +2

                      LightEdit режим не такой уж и Light. Запускается нисколечки не быстрее чем вся IDE, и при этом попутно гадит в терминал, оставляя после себя кучу логов. Видно что грузит все возможные плагины в процессе старта. Универсальный лёгкий редактор должен стартовать за секунду. Попробовал разные режимы, например diff. То же самое. Если я пишу в консоли "meld file1 file2", то вижу результат мгновенно. А с idea можно сходить заварить чайку пока дождешься ответа.

                        0

                        Ну, так и функционал в IDEA больше.

                          +3

                          IDEA является моим основным рабочим инструментом уже больше 15 лет. У меня постоянно открыто несколько проектов. И если мне нужен временный файл, то для этого предусмотрен специальный хоткей Ctrl+Shift+Alt+Insert (New scratch file). Там мне будет доступна вся мощь, за которую я и плачу компании Jet Brains. Это единственное платное приложение на моём лэптопе, всё остальное только open source.


                          Здесь же речь идёт об облегчённом режиме запуска, в дополнение к полноценной IDE. В этом случае мне не нужен интеллект, поддержка фреймворков и инспекции. Достаточно просто редактора с подсветкой синтаксиса и всякими удобствами типа выделения вертикальных блоков, записи макросов и т.п. А уж в режиме diff и того меньше.


                          Так вот вопрос — зачем IDEA в LightEdit режиме подгружает плагины и оставляет кучу debug логов в терминале? Я хочу чтоб терминал оставался чистым, мне просто неприятно видеть этот мусор, это тоже мой основной рабочий инструмент. Мне нужно быстро сравнить 2 файла, но различия настолько значительны, что мне уже мало стандартного консольного diff и требуется GUI. Какой смысл ждать 10 сек, если тот же meld справляется за 1 сек и результат ничуть не хуже?


                          Может под Win это будет актуально? Не знаю как сейчас, но раньше там было всё очень плохо в плане маленьких бесплатных инструментов для разработчиков на каждый день. Но LightEdit там был, кстати, назывался Notepad++ :)

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

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