Привет, Хабр!
Спешу поделиться хорошей новостью. Сегодня стала доступна IntelliJ IDEA 2016.3 – очередное крупное обновление нашей (и, хочется надеяться, вашей) любимой Java IDE. Читайте ниже об основных изменениях и нововведениях.
С релиза Java 8 IntelliJ IDEA предоставляет инспекции, помогающие писать корректный и идиоматический Java 8. В IntellIJ IDEA 2016.3 эти инспекции были серьезно переработаны, расширив область применения за рамки тривиальных примеров. Теперь, если вы нажмете Alt+Enter внутри нетривиального for цикла, IDE предложит переписать его с использованием Stream API. При этом IDE будет опираться на практически все доступные API: count, sum, flatMap, map, mapToInt, collect, filter, anyMatch, findFirst, toArray и другие. Примечание: похожая инспекция доступна для Kotlin. Также IDE предложит заменить соответствующие конструкции на Map.computeIfAbsent, Collections.removeIf или ThreadLocal.withInitial там, где это имеет смысл.
Обновленный Scala плагин теперь предоставляет навигацию и автодополнение для js.Dynamic – на основе переменных и методов, объявленных в JavaScript библиотеках или файлах проекта.
Также плагин получил поддержку scala.meta. IntelliJ IDEA поддерживает “новые” макро-аннотации и предоставляет помощь при редактировании scala.meta quasiquotes.
Эта новая мощная функция отладчика позволяет добавлять Watch выражения на уровне классов. Эти выражения выглядят как поля классов, однако их значения определяются самими выражениями. Выражения указываются в контексте класса.
Этот новый плагин позволяет исследовать объекты в памяти JVM при отладке кода. Плагин показывает количество объектов в памяти, с группировкой по имени класса. По мере того как вы перемещаетесь во время отладки по коду, колонка Diff показывает как это количество меняется. Двойной клик на классе откроет диалог с объектами. Также плагин позволяет отслеживать stacktraces создания объектов.
Опция Parameter Hints (включена по-умолчанию) показывает имена параметров методов, если в качестве аргументов используются литералы или null. Такие подсказки делают код более читаемым. Если подсказки для каких-то методов избыточны, вы можете попросить IDE не показывать их.
Ранее появившийся в KDevelop и некоторых других IDE, Semantic highlighting теперь доступен в IntelliJ IDEA. Эта опция добавляет в стандартную подсветку уникальные цвета для каждого параметра и локальной переменной. Эта опция выключена по умолчанию, но может быть включена в Settings → Editor → Colors & Fonts → Language Defaults → Semantic highlighting.
Иконки файлов и папок стали плоскими. Новые иконки стали четче и менее отвлекающими.
Эта новая опция позволяет делегировать такие действия IDE как Build, Build Artifacts и Run напрямую Gradle. Когда эта опция включена, IDE вместо стандартных действий вызывает соответствующие Gradle-таски. Включить эту опцию можно в Settings → Build, Execution, Deployment → Build Tools → Gradle → Runner → Delegate IDE build/run actions to Gradle.
Эта новая мощная опция позволяет заменить любую из зависимостей проекта другим проектом. Эта опция требует Gradle 3.1 или старше.
Теперь pom.xml можно писать на Groovy, Scala, Ruby и других языках. (Примечание: подсказки при редактировании pom.xml доступны только для Groovy.)
Окно Log снова переработано, в этот раз – с целью повышения эргономичности и скорости работы. Панель подробных изменений сместилась вправо, освободив больше места. Описание изменений теперь выровнены и более читаемы. Метки с тегами и названиями веток сместились вправо и отображаются более элегантно. Строка поиска сохраняется между запусками IDE. Для Git поиск по тексту, автору и пути стал гораздо быстрее.
Окно Merge теперь может разрешать конфликты автоматически там, где это возможно. В таких случаях слева будет отображаться иконка Resolve с волшебной палочкой. Также мы добавили маркеры, отражающие изменения, которые будут применены поверх базовой ревизии. Кроме этого, и Merge и Diff теперь предлагают подсветку синтаксиса и навигацию для “не-базовых” ревизий.
Также добавлено управление удаленными репозиториями.
IntelliJ IDEA позволяет автоматически конвертировать переменные объявленные var в const/let в зависимости от семантики их использования.
Для всех вызовов require, IDE предложит автозамену на import.
Для всех классов, объявленных с помощью функций и цепочек prototype, IDE предложит автозамену на полноценные классы.
Исправлена проблема переименования наследуемых методов.
Теперь, если вы укажете Flow в качестве версии JavaScript, а также укажете путь к дистрибутиву Flow, заработают соответствующие инспекции (и в некоторых случаях автодополнения).
Поддержка TomEE была обновлена до последней версии.
Теперь IDE позволяет запускать loose applications. Для этого на закладке Deployment в окне WebSphere Run/Debug configuration вместо артефакта выберите Loose application….
Теперь запускать и отлаживать React Native приложения можно для OS X и Android прямо из IDE.
Это новый режим в Designer, который скрывает визуальные элементы компонентов и отражает только их структуру.
Это мощный новый layout manager, который позволяет создавать сложные структуры интерфейса, используя плоскую структуру.
Согласно информации от команды Android Tools, обновление исправляет большое количество проблем, связанных с работой Instant Run. Теперь Instant Run должен работать более стабильно.
Эта утилита позволяет анализировать содержимое APK.
Теперь вы можете выделить несколько ячеек и редактировать их одновременно.
Теперь изменения в таблице отправляются не сразу, а по нажатию Ctrl+Enter (Cmd+Enter для OS X) – целыми пакетами. Используйте Undo, чтобы откатить неотправленное изменение.
Теперь вы можете искать использование объектов базы данных в исходном коде других объектов баз данных. Например, вы можете узнать, какие процедуры, функции, отображения и триггеры используют выбранную таблицу.
Google представила собственный плагин для деплоя приложений в Google Cloud. Позже этот плагин полностью заменит плагин JetBrains для работы с Google App Engine.
Плагин для работы с OpenShift теперь поддерживает новую версию OpenShift.
Не забудьте взглянуть на Toolbox App — новое десктопное приложение для удобной установки и обновления любых IDE от JetBrains.
Это вкратце все, что команда успела сделать за 4 месяца, не считая багфиксов.
Подробности, скриншоты и видео о релизе можно найти на странице What’s New (на английском). Там же можно скачать обновление.
Как всегда, буду рад ответить на любые вопросы.
Спешу поделиться хорошей новостью. Сегодня стала доступна IntelliJ IDEA 2016.3 – очередное крупное обновление нашей (и, хочется надеяться, вашей) любимой Java IDE. Читайте ниже об основных изменениях и нововведениях.
Java 8
С релиза Java 8 IntelliJ IDEA предоставляет инспекции, помогающие писать корректный и идиоматический Java 8. В IntellIJ IDEA 2016.3 эти инспекции были серьезно переработаны, расширив область применения за рамки тривиальных примеров. Теперь, если вы нажмете Alt+Enter внутри нетривиального for цикла, IDE предложит переписать его с использованием Stream API. При этом IDE будет опираться на практически все доступные API: count, sum, flatMap, map, mapToInt, collect, filter, anyMatch, findFirst, toArray и другие. Примечание: похожая инспекция доступна для Kotlin. Также IDE предложит заменить соответствующие конструкции на Map.computeIfAbsent, Collections.removeIf или ThreadLocal.withInitial там, где это имеет смысл.
Scala
Scala.js
Обновленный Scala плагин теперь предоставляет навигацию и автодополнение для js.Dynamic – на основе переменных и методов, объявленных в JavaScript библиотеках или файлах проекта.
scala.meta
Также плагин получил поддержку scala.meta. IntelliJ IDEA поддерживает “новые” макро-аннотации и предоставляет помощь при редактировании scala.meta quasiquotes.
JVM отладчик
Class-level Watches
Эта новая мощная функция отладчика позволяет добавлять Watch выражения на уровне классов. Эти выражения выглядят как поля классов, однако их значения определяются самими выражениями. Выражения указываются в контексте класса.
Memory View
Этот новый плагин позволяет исследовать объекты в памяти JVM при отладке кода. Плагин показывает количество объектов в памяти, с группировкой по имени класса. По мере того как вы перемещаетесь во время отладки по коду, колонка Diff показывает как это количество меняется. Двойной клик на классе откроет диалог с объектами. Также плагин позволяет отслеживать stacktraces создания объектов.
Интерфейс
Подсказки имен параметров методов
Опция Parameter Hints (включена по-умолчанию) показывает имена параметров методов, если в качестве аргументов используются литералы или null. Такие подсказки делают код более читаемым. Если подсказки для каких-то методов избыточны, вы можете попросить IDE не показывать их.
Семантическая подсветка
Ранее появившийся в KDevelop и некоторых других IDE, Semantic highlighting теперь доступен в IntelliJ IDEA. Эта опция добавляет в стандартную подсветку уникальные цвета для каждого параметра и локальной переменной. Эта опция выключена по умолчанию, но может быть включена в Settings → Editor → Colors & Fonts → Language Defaults → Semantic highlighting.
Иконки
Иконки файлов и папок стали плоскими. Новые иконки стали четче и менее отвлекающими.
Инструменты сборки
Delegate IDE build/run actions to Gradle
Эта новая опция позволяет делегировать такие действия IDE как Build, Build Artifacts и Run напрямую Gradle. Когда эта опция включена, IDE вместо стандартных действий вызывает соответствующие Gradle-таски. Включить эту опцию можно в Settings → Build, Execution, Deployment → Build Tools → Gradle → Runner → Delegate IDE build/run actions to Gradle.
Gradle Composite Builds.
Эта новая мощная опция позволяет заменить любую из зависимостей проекта другим проектом. Эта опция требует Gradle 3.1 или старше.
Polyglot Maven
Теперь pom.xml можно писать на Groovy, Scala, Ruby и других языках. (Примечание: подсказки при редактировании pom.xml доступны только для Groovy.)
Контроль версий
Log для Git и Mercurial
Окно Log снова переработано, в этот раз – с целью повышения эргономичности и скорости работы. Панель подробных изменений сместилась вправо, освободив больше места. Описание изменений теперь выровнены и более читаемы. Метки с тегами и названиями веток сместились вправо и отображаются более элегантно. Строка поиска сохраняется между запусками IDE. Для Git поиск по тексту, автору и пути стал гораздо быстрее.
Merge и Diff
Окно Merge теперь может разрешать конфликты автоматически там, где это возможно. В таких случаях слева будет отображаться иконка Resolve с волшебной палочкой. Также мы добавили маркеры, отражающие изменения, которые будут применены поверх базовой ревизии. Кроме этого, и Merge и Diff теперь предлагают подсветку синтаксиса и навигацию для “не-базовых” ревизий.
Также добавлено управление удаленными репозиториями.
JavaScript
ECMAScript 6
IntelliJ IDEA позволяет автоматически конвертировать переменные объявленные var в const/let в зависимости от семантики их использования.
Для всех вызовов require, IDE предложит автозамену на import.
Для всех классов, объявленных с помощью функций и цепочек prototype, IDE предложит автозамену на полноценные классы.
TypeScript
Исправлена проблема переименования наследуемых методов.
Flow
Теперь, если вы укажете Flow в качестве версии JavaScript, а также укажете путь к дистрибутиву Flow, заработают соответствующие инспекции (и в некоторых случаях автодополнения).
Серверы приложений
TomEE 7
Поддержка TomEE была обновлена до последней версии.
Liberty
Теперь IDE позволяет запускать loose applications. Для этого на закладке Deployment в окне WebSphere Run/Debug configuration вместо артефакта выберите Loose application….
React Native
Теперь запускать и отлаживать React Native приложения можно для OS X и Android прямо из IDE.
Android
Blueprint
Это новый режим в Designer, который скрывает визуальные элементы компонентов и отражает только их структуру.
Constraint Layout
Это мощный новый layout manager, который позволяет создавать сложные структуры интерфейса, используя плоскую структуру.
Instant Run
Согласно информации от команды Android Tools, обновление исправляет большое количество проблем, связанных с работой Instant Run. Теперь Instant Run должен работать более стабильно.
APK Analyzer
Эта утилита позволяет анализировать содержимое APK.
Базы данных
Редактирование нескольких ячеек
Теперь вы можете выделить несколько ячеек и редактировать их одновременно.
Пакетная отправка изменений
Теперь изменения в таблице отправляются не сразу, а по нажатию Ctrl+Enter (Cmd+Enter для OS X) – целыми пакетами. Используйте Undo, чтобы откатить неотправленное изменение.
Поиск использований
Теперь вы можете искать использование объектов базы данных в исходном коде других объектов баз данных. Например, вы можете узнать, какие процедуры, функции, отображения и триггеры используют выбранную таблицу.
Clouds
Google Cloud Tools
Google представила собственный плагин для деплоя приложений в Google Cloud. Позже этот плагин полностью заменит плагин JetBrains для работы с Google App Engine.
OpenShift Origin (V3)
Плагин для работы с OpenShift теперь поддерживает новую версию OpenShift.
Toolbox App
Не забудьте взглянуть на Toolbox App — новое десктопное приложение для удобной установки и обновления любых IDE от JetBrains.
Это вкратце все, что команда успела сделать за 4 месяца, не считая багфиксов.
Подробности, скриншоты и видео о релизе можно найти на странице What’s New (на английском). Там же можно скачать обновление.
Как всегда, буду рад ответить на любые вопросы.