Недавно состоялся релиз IntelliJ IDEA 2020.2! В новой версии много нового: теперь можно полноценно управлять пул-реквестами GitHub из IDE и просматривать все ошибки и предупреждения в проекте с помощью виджета Inspections. Работать с несовершенным кодом помогает также новое окно Problems, в котором можно увидеть подробное описание ошибок и быстро их исправить. Если вы вносите изменения, которые мешают работе другого кода, IDE сообщит вам об этом в подсказке Related Problems.
Кроме того, IntelliJ IDEA 2020.2 поддерживает Jakarta EE и предоставляет новые возможности для работы с Quarkus, Micronaut, Amazon SQS API и OpenAPI.
В разделе What’s New на сайте подробно описаны все изменения, но здесь мы собрали самое важное.
Java
- Мы заранее подготовились к релизу Java 15 в сентябре, поэтому в IntelliJ IDEA 2020.2 можно работать с записями, запечатанными классами и текстовыми блоками.
- Если изменение Java-метода или поля привело к ошибкам в других файлах, IDE сообщит об этом. Нажмите на подсказку и увидите список ошибок, которые можно сразу исправить.
- При помощи статического анализа IDE определяет, какое выражение вызвало исключение во время работы приложения.
- Из структурного поиска можно легко создать инспекцию с описанием и уровнем важности.
- Рефакторинг Introduce Variable работает более гибко: теперь можно заменить только вхождения выражения внутри условия или цикла (раньше можно было заменить либо одно, либо все вхождения).
- Когда вы вызываете метод Stream API на коллекции/массиве, IDE автоматически подставляет stream(). Кроме того, в цепочках вызовов автодополнение предлагает методы нужного типа.
- Новое действие разрешает преобразовать цепочку вызовов Optional в цепочку if-выражений.
- Вы можете свернуть несколько однотипных операторов в цикл, а intention-действие Unroll loop теперь разворачивает больше циклов, запрашивая количество итераций у анализатора потока данных.
- Чтобы шаблоны live templates для Java было проще найти, мы сгруппировали их под отдельным узлом в Settings | Preferences / Editor / Live Templates.
- Благодаря анализу потока данных, IDE сообщает о нетривиальных выражениях, которые вычисляются в 0, и предупреждает о ненужных сравнениях, в которых результат Math.min или Math.max не бывает больше или меньше другого операнда.
Редактор
- Добавили виджет Inspections, который показывает, сколько предупреждений и ошибок найдено в вашем файле, и позволяет легко перемещаться между ними.
- В новом окне Problems можно посмотреть список предупреждений и ошибок с описаниями и быстро исправить проблемный код.
- Теперь можно заранее посмотреть, как будет выглядеть код после применения быстрого исправления (quick-fix).
Система контроля версий
- Все действия по обработке пул-реквестов GitHub доступны прямо из IDE. Вы можете просматривать, назначать и объединять пул-реквесты, читать комментарии (как в хронологии, так и в коде), отправлять комментарии и ревью, а также принимать изменения.
- Для работы над проектами в файловых системах Linux или Windows, можно пользоваться Git, установленный в WSL2.
- Появилась возможность удалять коммиты, выбирать несколько коммитов из локальной ветки и объединить их в один на вкладке Log.
- При сравнении двух веток в IntelliJ IDEA все коммиты отображаются в одном окне.
- Вместо авторизации в GitHub по паролю теперь используется авторизация по протоколу OAuth.
Фреймворки и технологии
- В сентябре выходит Jakarta EE 9, и IntelliJ IDEA уже поддерживает основные технологии, включая CDI, JPA, Batch, Bean Validation, JSF, JAX-RS, WebSocket, Servlets, JSP, JSON-P, JSON-B, Security, EJB и JTA.
- Теперь можно создавать проекты Java EE 8 и Jakarta EE 9 в обновленном мастере проектов.
- Подсветка кода и автодополнение работают для файлов конфигурации .properties и YAML в проектах Quarkus.
- IDE позволяет переходить от файлов свойств Quarkus к настроенным bean-компонентам и обратно, а также от Java-кода к файлам свойств.
- В редакторе предусмотрена навигация по встроенным bean-компонентам. Кроме того, мы обновили инспекции для работы с упрощенным синтаксисом Quarkus.
- В тестах REST Assured теперь работает автодополнение URL-адресов и навигация к соответствующим ресурсам.
- В IDE появилась интеграция с интерфейсом Swagger.
- IntelliJ IDEA теперь показывает структурные различия между спецификациями OpenAPI.
- Можно создавать проекты Micronaut в мастере создания проектов.
- Для приложений Micronaut и Amazon SQS API, в которых используется асинхронная обработка данных через RabbitMQ или Kafka, теперь работает автодополнение имен, поиск использований, и навигация по очередям и темам с помощью значков на поле редактора.
- IntelliJ IDEA может автоматически генерировать HTTP-запросы JAX-RS и MicroProfile и открывать их во встроенном REST-клиенте.
- Selenium-плагин поддерживает интеграцию с Selenoid. Теперь прямо из файла browsers.json можно запустить новое тестовое окружение.
Профилировщик
- Мы улучшили инструмент просмотра дампов памяти HPROF. Теперь для каждого объекта возможно увидеть количество памяти, которое он не дает освободить; пути до ближайших корневых объектов сборщика мусора; дерево доминаторов (удерживаемые от удаления объекты); а также обратные ссылки из других объектов.
Взаимодействие с IDE
- С помощью нового плагина Shared Indexes можно загружать уже построенные индексы, вместо того чтобы создавать их локально. Это ускорит индексирование больших проектов на 60–75%.
- Во время индексирования теперь работает автодополнение для Java и PHP.
Терминал
- Управлять IDE можно прямо из терминала. Если команда подсвечена в терминале, нажмите Cmd/Ctrl+Enter, чтобы открыть соответствующий инструмент в графическом интерфейсе IDE. Читайте, как это работает в нашем блоге.
Инструменты сборки
- Maven Wrapper теперь автоматически устанавливает версию Maven, необходимую для вашего проекта.
- Раньше было обязательно использовать одну и ту же версию Maven во всех открытых проектах, а, начиная с этого релиза, можно выбирать нужную для вашего проекта.
- Теперь вывод встроенного инструмента сборки отображается в окне Build, там же, где обычно вы видите результаты сборок Gradle и Maven.
- IntelliJ IDEA 2020.2 поддерживает автодополнение имен проектов и навигацию от имени проекта к файлам build.gradle.
JavaScript и TypeScript
- Новые intention-действия (Alt + Enter) помогут ускорить некоторые операции. Например, можно быстро преобразовать цикл for с числовым индексом в перебирающий метод forEach.
- Теперь очень легко использовать Prettier в качестве форматера по умолчанию в JavaScript-проектах: просто отметьте галочкой опцию On code reformat в настройках.
- Мы добавили поддержку Nuxt.js и настройки стиля кода, специфичные для Vue.
База данных
- Теперь можно просматривать и редактировать длинные значения на отдельной панели в режиме Maximize.
- Работать с ячейками типа boolean стало гораздо удобнее, потому что вы видите в них значения, а не флажки.
- Результаты запросов к базе данных можно увидеть в редакторе.
- Мы добавили начальную поддержку диалекта Google BigQuery. IDE обеспечивает подсветку и автодополнение запросов.
Docker
- Благодаря поддержке TLS-соединений с демоном Docker, пользователи Windows могут безопасно подключиться к Docker.
Kubernetes
- В настройках Preferences/Settings | Build, Execution, Deployment | Kubernetes теперь можно указать кастомный файл kubeconfig.
- Мы добавили поддержку редактирования ConfigMaps/Secrets. Более того, IDE берет информацию не только из текущего проекта, но и из кластера.
- Для объектов ConfigMaps/Secrets и их ключей можно вызвать Find Usages из кластера.
Scala
- Добавлен автоматический импорт Implicits.
- В новой версии фигурные скобки добавляются и удаляются в зависимости от отступов.
- В редакторе появились навигационные значки для компаньонов. Вы также можете перейти к компаньону, вызвав действие Go To на ключевых словах class, trait или object.
- Мы сделали рендеринг Scaladoc прямо в редакторе и улучшили его во всплывающем окне Quick Documentation: абзацы, списки и макросы отображаются корректно.
- Теперь можно сразу подставить и имя метода, и его аргументы, если в текущей области доступа присутствуют соответствующие значения.
- Кроме того, вы можете применить статическую функцию к аргументу при помощи точечной записи, которая может использоваться в сочетании с алгебраическими типами данных.
Android
- IntelliJ IDEA 2020.2 включает в себя все нововведения из Android Studio 4.0.
Другие изменения
- Если вы используете программу чтения с экрана, IDE определит это и автоматически включит функции специальных возможностей.
- В IntelliJ IDEA 2020.2 можно использовать эмодзи Unicode на Linux.
- Значительно улучшена производительность удаленной отладки Java-проектов.
- Мы перешли с JavaFX на JCEF (Chromium Embedded Framework). Начиная с версии 2020.2, больше не будет встроенной поддержки JavaFX, теперь она вынесена в отдельный плагин, который внешние плагины могут использовать в качестве зависимости.
- У сочетания клавиш Alt+6 (Linux and Windows) / Cmd+6 (macOS) новое назначение: теперь вместо вызова TODO оно открывает окно Problems.
- Начиная с этой версии, IntelliJ IDEA не поддерживает запуск и тестирование проектов, написанных на Java 5 и более ранних версиях. В редакторе поддержка Java 5 остается.
Делитесь своими впечатлениями о новой версии в комментариях, на нашем форуме, и в Twitter. Все подробности о новой функциональности со скриншотами можно найти на нашем сайте и в видеообзоре.
Скачивайте IntelliJ IDEA 2020.2 и работайте еще продуктивнее с новыми фичами!
Программируйте с удовольствием!
Tilperion
Стоит упомянуть, что уже доступна 2020.2.1, и качать следует именно ее.
В ней исправлен баг, не позволявший работать плагину Lombok, очень популярного среди Java-dev сообщества.
Из-за этого бага лично мне. пришлось срочно откатывать 2020.2 и ждать фикса пару недель.
Так что — имейте ввиду.
mm3
На удивление стабильно очередной релиз IntelliJ IDEA ломает интеграцию с Lombok и по этому приходится с опаской глядеть на предложение обновитья и предварительно проверять багтрекер Lombok в поисках подсказки когда это можно будет сделать
artem_larin
Видимо идеевцам самим надо перейти на lombok, чтобы оно пореже ломалось. Если конечно они на Котлине Идею не пишут.
Graf54r
давно известно что на котлине
TheKnight
Нафиг нафиг.
Котлин удобней и полезней.
Да и ломбок появился от недостатка фич из котлина.
Но вот API они действительно регулярно меняют.
Включая переписывание на Kotlin в неожиданных местах(привет, DiffVcsDataKeys.REVISION_INFO!).
MamOn
Ну уже не первый раз после мажорного обновления IDEA отваливается lombok-плагин. Такое впечатление, что в jetbrains какая-то неприязнь к технологии, уже даже нативную поддержку micronaut сделали, а lombok, без которого я в последнее время не видел ни одного проекта на java, над которыми приходилось работать, там в упор не хотят замечать. Я думаю, что неравнодушным не будет лишним проголосовать за нативную поддержку lombok вот тут: https://youtrack.jetbrains.com/issue/IDEABKL-5667