В пятницу, 19 февраля, мы выпустили бета-версию IntelliJ IDEA 16. Учитывая то, что с момента выхода IntelliJ IDEA 15 прошло немногим более трех месяцев, вы будете приятно удивлены тем, что мы успели сделать за это время. Мы приглашаем вас скачать свежую версию прямо сейчас и самостоятельно попробовать все улучшения, о самых главных из которых я с удовольствием расскажу далее.
Отладчик
Для Java проектов в Evaluate Expression и Watches теперь можно писать выражения и на Groovy, обладающим более компактным синтаксисом, что делает более удобной, например, работу с коллекциями.
Если текущий поток заблокирован другим остановленным потоком, то IntelliJ IDEA предложит его разблокировать.
Ранее, по нажатию Resume, возобновлялись все запущенные потоки. Теперь можно изменить это поведение, включив опцию Resume only the current thread.
Теперь IntelliJ IDEA предупреждает всякий раз, когда замечает, что исходники не соответствуют выполняемому коду. Это помогает избежать ошибок и сэкономить время.
Интеграция с Git и другими VCS
IntelliJ IDEA теперь поддерживает git worktrees – на случай если вы хотите работать с несколькими ревизиями репозитория одновременно и сэкономить место на диске.
Для Git в Branches popup появились две новые команды: Checkout with Rebase и Rename. Checkout with Rebase позволяет сэкономить время, если вы хотите выполнить эти две операции одну за другой.
Инструменты Diff viewer и Merge dialog стали удобнее за счет подсветки изменений на уровне конкретных частей строки.
Редактор
В редакторе появился новый инструмент: Move Element Right/Left (Alt + Ctrl + Shift + Arrows или Alt + Cmd + Shift + Arrows для OS X). С его помощью можно менять местами аргументы методов, элементы массивов и атрибуты тегов.
Мы добавили авто-импорт для статических методов и констант (ранее он работал только для классов). Опция Add unambiguous imports on the fly теперь также работает и для статических методов и констант.
Редактор поддерживает арабский, иврит и другие языки, где символы следуют справа налево.
В настройках стилей появилась опция для автоматического добавления пробела в начало комментариев.
Java 8
При вызове Inline method или Change signature, ссылки на метод (method references) преобразуются в соответствующие лямбда выражения.
IntelliJ IDEA предупредит, если вы вызываете метод get() на java.util.Optional не проверив перед этим с помощью isPresent() содержится ли там значение.
Добавлено много инспекций на использование функциональных интерфейсов, лямбда выражений и Optional.
Если вы используете Guava, IDE предложат Вам заменить FluentIterable, Function, Optional и Predicate их аналогами из Java 8.
Быстрый поиск
Быстрый поиск (speed-search) теперь доступен в окне Terminal, также был улучшен поиск во всплывающем окне Show usages и в окне Find usages.
Интерфейс 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.
Исправленнно много старых проблем.
Thymeleaf
Thymeleaf 3 Beta поддеживается “из коробки”.
Добавлена поддержка пользовательских диалектов: для них теперь доступны те же посказки, что и для стандартных.
Исправленно много проблем с поддержкой 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 учитывает это в порядке предложенных вариантов.
Во-вторых, появился комплишен для выражений pattern matching c подсказкой имен свойств case-классов.
ES6 и TypeScript
Поддержкка ES6 и TypeScript становится лучше с каждым днем. Добавлены рефакторинги Create method, Extract method, Inline method и Introduce field и интеншены Make class abstract, Make public/private и Remove modifier. Неиспользуемые import-выражения теперь подсвечиваются и убираются с помощью Optimize imports. Во время набора кода import-выражения добавляются автоматически.
Добавленна поддерджка TypeScript 1.8.
AngularJS
Для AngularJS 2 добавлен комплишн директив, переменных шаблонов, пользовательских обработчиков событий, путей в templateUrl и styleUrls полях, а также в event, data, и property bindings.
Также IntelliJ IDEA понимает компоненты, определенные с помощью module.component(), добавленного в AngularJS 1.5.
JavaScript отладчик
С новым отладчиком для Chrome гораздо лечге отлаживать асинхронный код и код с лямбда выражениями (arrow functions). Для асинхронного кода, стек фреймов включает место вызова асинхронного кода. При добавлении точек остановки, теперь можно выбрать конкреное лямбда выражение.
Также можно отлаживать main и render процессы Electron приложений.
JSON
Кроме этого теперь IntelliJ IDEA поддерживает JSON schema и предлагает на его основе комплишн внутри JSON файлов (tsconfig.json, .eslintrc, .babelrc и многих других).
Работа с базами данных
После релиза DataGrip мы продолжаем улучшать поддержку баз данных и инструменты для работы с ними. Добавлены поддержка некоторых операторов PostgreSQL 9.5 (hstore ?) а также User Defined Table и Column Types для SQL Server. С помощью Create/Modify Table теперь можно редактировать комментарии для колонок (если это поддерживается базой данных).
Если вы хотите удалить данные из таблиц, вам поможет новый инструмент: Truncate, который позволяет очень быстро и вне транзакции удалить данные из одной или более таблиц.
Docker
И наконец, Docker стал отдельным окном (tool window) и его интерфейс понемногу становится лучше и лучше: теперь правая панель отображает логи и позволяет редактировать настройки контейнеров. Образы и контейнеры теперь показываются раздельно и более понятно. Также мы поддержали Docker Machine.
Если вы хотите чтобы я написал о каких-то из новых фич отдельно (или о каких-то старых фичах), – просите в комментариях, и я с удовольствием напишу. Также буду рад ответить на любые вопросы.
Отладчик
Для Java проектов в Evaluate Expression и Watches теперь можно писать выражения и на Groovy, обладающим более компактным синтаксисом, что делает более удобной, например, работу с коллекциями.
Если текущий поток заблокирован другим остановленным потоком, то IntelliJ IDEA предложит его разблокировать.
Ранее, по нажатию Resume, возобновлялись все запущенные потоки. Теперь можно изменить это поведение, включив опцию Resume only the current thread.
Теперь IntelliJ IDEA предупреждает всякий раз, когда замечает, что исходники не соответствуют выполняемому коду. Это помогает избежать ошибок и сэкономить время.
Интеграция с Git и другими VCS
IntelliJ IDEA теперь поддерживает git worktrees – на случай если вы хотите работать с несколькими ревизиями репозитория одновременно и сэкономить место на диске.
Для Git в Branches popup появились две новые команды: Checkout with Rebase и Rename. Checkout with Rebase позволяет сэкономить время, если вы хотите выполнить эти две операции одну за другой.
Инструменты Diff viewer и Merge dialog стали удобнее за счет подсветки изменений на уровне конкретных частей строки.
Редактор
В редакторе появился новый инструмент: Move Element Right/Left (Alt + Ctrl + Shift + Arrows или Alt + Cmd + Shift + Arrows для OS X). С его помощью можно менять местами аргументы методов, элементы массивов и атрибуты тегов.
Мы добавили авто-импорт для статических методов и констант (ранее он работал только для классов). Опция Add unambiguous imports on the fly теперь также работает и для статических методов и констант.
Редактор поддерживает арабский, иврит и другие языки, где символы следуют справа налево.
В настройках стилей появилась опция для автоматического добавления пробела в начало комментариев.
Java 8
При вызове Inline method или Change signature, ссылки на метод (method references) преобразуются в соответствующие лямбда выражения.
IntelliJ IDEA предупредит, если вы вызываете метод get() на java.util.Optional не проверив перед этим с помощью isPresent() содержится ли там значение.
Добавлено много инспекций на использование функциональных интерфейсов, лямбда выражений и Optional.
Если вы используете Guava, IDE предложат Вам заменить FluentIterable, Function, Optional и Predicate их аналогами из Java 8.
Быстрый поиск
Быстрый поиск (speed-search) теперь доступен в окне Terminal, также был улучшен поиск во всплывающем окне Show usages и в окне Find usages.
Интерфейс 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.
Исправленнно много старых проблем.
Thymeleaf
Thymeleaf 3 Beta поддеживается “из коробки”.
Добавлена поддержка пользовательских диалектов: для них теперь доступны те же посказки, что и для стандартных.
Исправленно много проблем с поддержкой 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 учитывает это в порядке предложенных вариантов.
Во-вторых, появился комплишен для выражений pattern matching c подсказкой имен свойств case-классов.
ES6 и TypeScript
Поддержкка ES6 и TypeScript становится лучше с каждым днем. Добавлены рефакторинги Create method, Extract method, Inline method и Introduce field и интеншены Make class abstract, Make public/private и Remove modifier. Неиспользуемые import-выражения теперь подсвечиваются и убираются с помощью Optimize imports. Во время набора кода import-выражения добавляются автоматически.
Добавленна поддерджка TypeScript 1.8.
AngularJS
Для AngularJS 2 добавлен комплишн директив, переменных шаблонов, пользовательских обработчиков событий, путей в templateUrl и styleUrls полях, а также в event, data, и property bindings.
Также IntelliJ IDEA понимает компоненты, определенные с помощью module.component(), добавленного в AngularJS 1.5.
JavaScript отладчик
С новым отладчиком для Chrome гораздо лечге отлаживать асинхронный код и код с лямбда выражениями (arrow functions). Для асинхронного кода, стек фреймов включает место вызова асинхронного кода. При добавлении точек остановки, теперь можно выбрать конкреное лямбда выражение.
Также можно отлаживать main и render процессы Electron приложений.
JSON
Кроме этого теперь IntelliJ IDEA поддерживает JSON schema и предлагает на его основе комплишн внутри JSON файлов (tsconfig.json, .eslintrc, .babelrc и многих других).
Работа с базами данных
После релиза DataGrip мы продолжаем улучшать поддержку баз данных и инструменты для работы с ними. Добавлены поддержка некоторых операторов PostgreSQL 9.5 (hstore ?) а также User Defined Table и Column Types для SQL Server. С помощью Create/Modify Table теперь можно редактировать комментарии для колонок (если это поддерживается базой данных).
Если вы хотите удалить данные из таблиц, вам поможет новый инструмент: Truncate, который позволяет очень быстро и вне транзакции удалить данные из одной или более таблиц.
Docker
И наконец, Docker стал отдельным окном (tool window) и его интерфейс понемногу становится лучше и лучше: теперь правая панель отображает логи и позволяет редактировать настройки контейнеров. Образы и контейнеры теперь показываются раздельно и более понятно. Также мы поддержали Docker Machine.
Если вы хотите чтобы я написал о каких-то из новых фич отдельно (или о каких-то старых фичах), – просите в комментариях, и я с удовольствием напишу. Также буду рад ответить на любые вопросы.