Обзор IntelliJ IDEA 16 Public Preview

В пятницу, 19 февраля, мы выпустили бета-версию IntelliJ IDEA 16. Учитывая то, что с момента выхода IntelliJ IDEA 15 прошло немногим более трех месяцев, вы будете приятно удивлены тем, что мы успели сделать за это время. Мы приглашаем вас скачать свежую версию прямо сейчас и самостоятельно попробовать все улучшения, о самых главных из которых я с удовольствием расскажу далее.

image

Отладчик

Для Java проектов в Evaluate Expression и Watches теперь можно писать выражения и на Groovy, обладающим более компактным синтаксисом, что делает более удобной, например, работу с коллекциями.

image

Если текущий поток заблокирован другим остановленным потоком, то IntelliJ IDEA предложит его разблокировать.

Ранее, по нажатию Resume, возобновлялись все запущенные потоки. Теперь можно изменить это поведение, включив опцию Resume only the current thread.

Теперь IntelliJ IDEA предупреждает всякий раз, когда замечает, что исходники не соответствуют выполняемому коду. Это помогает избежать ошибок и сэкономить время.

image

Интеграция с Git и другими VCS

IntelliJ IDEA теперь поддерживает git worktrees — на случай если вы хотите работать с несколькими ревизиями репозитория одновременно и сэкономить место на диске.

Для Git в Branches popup появились две новые команды: Checkout with Rebase и Rename. Checkout with Rebase позволяет сэкономить время, если вы хотите выполнить эти две операции одну за другой.

Инструменты Diff viewer и Merge dialog стали удобнее за счет подсветки изменений на уровне конкретных частей строки.

image

Редактор

В редакторе появился новый инструмент: Move Element Right/Left (Alt + Ctrl + Shift + Arrows или Alt + Cmd + Shift + Arrows для OS X). С его помощью можно менять местами аргументы методов, элементы массивов и атрибуты тегов.

image

Мы добавили авто-импорт для статических методов и констант (ранее он работал только для классов). Опция Add unambiguous imports on the fly теперь также работает и для статических методов и констант.

image

Редактор поддерживает арабский, иврит и другие языкы, где символы следуют справа на лево.

image

В настройках стилей появилась опция для автоматического добавления пробела в начало комментариев.

Java 8

При вызове Inline method или Change signature, ссылки на метод (method references) преобразуются в соответствующие лямбда выражения.

IntelliJ IDEA предупредит, если вы вызываете метод get () на java.util.Optional не проверив перед этим с помощью isPresent () содержится ли там значение.

image

Добавлено много инспекций на использование функциональных интерфейсов, лямбда выражений и Optional.

image

Если вы используете Guava, вам предложат Вам заменить FluentIterable, Function, Optional и Predicate их аналогами из Java 8.

image

Быстрый поиск

Быстрый поиск (speed-search) теперь доступен в окне Terminal, также был улучшен поиск во всплывающем окне Show usages и в окне Find usages.

image

Интерфейс Log viewer для Git и Mercurial теперь выглядит чуть приятнее.

Gradle

Теперь модель проекта IntelliJ IDEA полностью совпадает с моделью Gradle: каждый source set представлен в IntelliJ IDEA как отдельный модуль, и поэтому может иметь собственные зависимости (classpath). Это позволило решить огромное количество проблем.

IntelliJ IDEA научилась автоматически импортировать EAR-артефакты из билд-скриптов.

Spring

Для Spring Boot проектов добавленны подсказки внутри файлов YML и banner.txt. Аннотация \@SpringApplicationConfiguration учитывается при создании конфигураций запуска для тестов. Для пользовательских свойств конфигурации теперь работает Find usages.

Поддержка Spring MVC сильно улучшилась за счет поддежки аннотации \@EnableWebMvc.

image

Исправленнно много старых проблем.

Thymeleaf

Thymeleaf 3 Beta поддеживается «из коробки».

image

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

image

Исправленно много проблем с поддержкой Thymeleaf 2.

Android

Профайлер утечек и новые инспекции, появившиеся в Android Studio 1.5, теперь доступны и в IntelliJ IDEA.

Kotlin

Да-да, если вы еще не в курсе (или не верите своим глазам), неделю назад состоялся релиз Kotlin 1.0.

Kotlin совместим с Java 6, 7, 8, Android, и любыми Java фреймворками (такими как Java EE, Spring) и билд-системами (Gradle, Maven). Kotlin можно использовать в существующих Java проектах. С версии 1.0 Kotlin обратно-совместим со своими предыдущими версиямми.

IntelliJ IDEA 16 включает плагиин для Kotlin 1.0.

Ранее на Хабре уже была проведена первая сессия вопросов и ответов.

Scala

Работая над Kotlin, мы не забываем и о Scala: комплишен претерпел ряд улучшений. Во-первых, порядок предлагаемых вариантов теперь учитывает такие факторы, как тип символа, историю его использования и контекст. Предпочтение отдается локальным переменным, затем аргументам, затем полям класса, затем методам и т.д. Если в данном контексте ожидается тип, IntelliJ IDEA учитывает это в порядке предложенных вариантов.

image

Во-вторых, появился комплишен для выражений pattern matching c подсказкой имен свойств case-классов.

image

ES6 и TypeScript

Поддержкка ES6 и TypeScript становится лучше с каждым днем. Добавлены рефакторинги Create method, Extract method, Inline method и Introduce field и интеншены Make class abstract, Make public/private и Remove modifier. Неиспользуемые import-выражения теперь подсвечиваются и убираются с помощью Optimize imports. Во время набора кода import-выражения добавляются автоматически.

image

Добавленна поддерджка TypeScript 1.8.

AngularJS

Для AngularJS 2 добавлен комплишн директив, переменных шаблонов, пользовательских обработчиков событий, путей в templateUrl и styleUrls полях, а также в event, data, и property bindings.

image

Также IntelliJ IDEA понимает компоненты, определенные с помощью module.component (), добавленного в AngularJS 1.5.

JavaScript отладчик

С новым отладчиком для Chrome гораздо лечге отлаживать асинхронный код и код с лямбда выражениями (arrow functions). Для асинхронного кода, стек фреймов включает место вызова асинхронного кода. При добавлении точек остановки, теперь можно выбрать конкреное лямбда выражение.

Также можно отлаживать main и render процессы Electron приложений.

JSON

Кроме этого теперь IntelliJ IDEA поддерживает JSON schema и предлагает на его основе комплишн внутри JSON файлов (tsconfig.json, .eslintrc, .babelrc и многих других).

image

Работа с базами данных

После релиза DataGrip мы продолжаем улучшать поддержку баз данных и инструменты для работы с ними. Добавлены поддержка некоторых операторов PostgreSQL 9.5 (hstore? ), а также User Defined Table и Column Types для SQL Server. С помощью Create/Modify Table теперь можно редактировать комментарии для колонок (если это поддерживается базой данных).

image

Если вы хотите удалить данные из таблиц, вам поможет новый инструмент: Truncate, который позволяет очень быстро и вне транзакции удалить данные из одной или более таблиц.

image

Docker

И наконец, Docker стал отдельным окном (tool window) и его интерфейс понемногу становится лучше и лучше: теперь правая панель отображает логи и позволяет редактировать настройки контейнеров. Образы и контейнеры теперь показываются раздельно и более понятно. Также мы поддержали Docker Machine.

image

Если вы хотите чтобы я написал о каких-то из новых фич отдельно (или о каких-то старых фичах), — просите в комментариях, и я с удовольствием напишу. Также буду рад ответить на любые вопросы.

© Habrahabr.ru