Во-первых, мы существенно ускорили запуск. Надеемся, вы заметили :)
А еще:
Java
- Java 13 выходит в сентябре, и IntelliJ IDEA уже готова работать с ней. IDE поддерживает новый синтаксис switch-выражений (JEP 354) и новую функциональность текстовых блоков (JEP 355).
- IDE может выполнять рефакторинг Inline Method, даже если return-выражение прерывает поток выполнения.
- Если при анализе потока данных нашлись проблемы, новое действие Find cause поможет перейти к проблемному фрагменту кода.
- Мы объединили инспекцию для Java «Duplicated code fragment» с инструментом для других языков «Locate duplicates».
- Автодополнение кода теперь распознает опечатки и предлагает наиболее подходящие варианты для неправильно введенного текста.
- Теперь при работе со структурным поиском IDE мгновенно подсвечивает в редакторе все найденные фрагменты кода, соответствующие шаблону поиска.
Инструменты профилирования
- IntelliJ IDEA 2019.2 теперь интегрируется с Java Flight Recorder на платформах Windows, macOS и Linux, а также с Async-profiler на macOS и Linux.
Окно сервисов
- В новом окне Services собраны все подключения, а также конфигурации запуска, которые вы подключили к Services.
- IDE позволяет просматривать файловую систему запущенного Docker-контейнера (окно Services > узел Docker > вкладка Files).
Редактор
- Управлять всеми настройками стиля кода для разных областей можно с помощью файла EditorConfig. Подробнее.
- Благодаря встроенной интеграции с редактором TextMate доступна подсветка синтаксиса более чем для 20 языков программирования.
- IntelliJ IDEA теперь беспроблемно работает с большими файлами.
- Изменилось выбранное по умолчанию поведение действия Move Caret to Next Word. Теперь IDE передвигает курсор к концу текущего слова.
- Настройка Surround a selection with a quote or brace включена по умолчанию. Если при выделенном фрагменте кода набрать кавычку или скобку, фрагмент окажется внутри кавычек или скобок.
- По умолчанию клавиша Tab, нажатая при вводе текста, перемещает курсор за закрывающие скобки или кавычки.
- Чтобы сделать код более читаемым, мы изменили межстрочный интервал: теперь он равен 1,2. Изменить межстрочный интервал можно в разделе Settings / Preferences | Editor | Color Scheme | Color Scheme Font.
Обновления интерфейса
- Чтобы сделать быстрые исправления более заметными, мы поменяли дизайн всплывающего окна инспекций — оно теперь не только содержит описание проблемы, но и сразу же предлагает вам исправление.
- У окна New Class новый дизайн: теперь есть предпросмотр возможных вариантов.
- Современный безрамочный интерфейс в Windows 10.
- Возле элементов списков и деревьев в окне Project View отображается дополнительная информация: размеры файлов и время их изменения. Это включается в меню View | Appearance | Descriptions in Tree Views.
Gradle
- Зависимости Gradle теперь можно просматривать в виде диаграммы: нажмите значок Show Dependencies на панели инструментов в окне Gradle (Alt+Shift+Ctrl+U в Linux и Windows / Alt+Shift+Cmd+U в macOS).
- Внесены улучшения в анализ кода в файлах build.gradle. Автодополнение теперь работает в объявлении задач, нотации задач Gradle и даже внутри блоков зависимостей.
- Мы усовершенствовали отображение выводимой информации об операциях Gradle, чтобы предоставлять вам информацию о текущем статусе процесса синхронизации/сборки, — теперь дерево статуса и консоль вывода информации располагаются рядом друг с другом.
Maven
- Выводимая информация о синхронизации Maven теперь отображается в инструментальном окне Build, что делает сообщения об ошибках и прогрессе более заметными и упрощает навигацию.
- Автодополнение работает по умолчанию в рамках зависимостей Maven в файлах pom.xml.
Контроль версий
- В IntelliJ IDEA 2019.2 появилась поддержка нативной обработки игнорируемых файлов Git. Подробнее.
- IDE будет напоминать вам, если вы забудете включить в коммит файлы, которые обычно включаете вместе с файлами, редактируемыми в данный момент.
- Теперь можно делать коммит из вкладки Local Changes: установите флажок Commit from the Local Changes without showing a dialog в разделе Preferences / Settings | Version Control | Commit Dialog.
- Теперь можно смотреть файловую историю Git одной или нескольких директорий, выбранных в окне Project View.
- При выполнении процесса merge или cherry-pick во всплывающем окне Branches есть новые опции: Abort Merge и Abort Cherry-pick.
- Новое действие Show Diff with Working Tree показывает Diff-сравнение текущей и выбранной веток.
- IDE теперь предлагает вам добавлять в систему контроля версий файлы, которые были скопированы в проект извне.
Kotlin
- Поддержка JPA с Kotlin стала лучше: появилась возможность генерировать entity-классы Kotlin.
- Действие Async stack trace теперь отображает состояние переменных на момент последней приостановки.
- Новый режим interactive для вспомогательных файлов Kotlin автоматически показывает вам результаты по истечении определенного интервала времени без необходимости перезапускать скрипт.
- IDE подсвечивает TODO-комментарии Kotlin в редакторе и отображает их в инструментальном окне TODO.
- Если вы используете внешние аннотации допустимости значения null для Java, IDE предупреждает вас о неверных случаях применения аннотированных методов Java из Kotlin.
Scala
- IDE теперь отображает подсказку по аскрипции типа и подсвечивает те части, которые не соответствуют ожидаемому типу.
- Подсказки о несоответствии типа стали более подробными и показываются с выравниванием по вертикали, также используется отображение кода в режиме «было — стало».
- Подсказки аннотаций типов теперь поддерживают динамическое сворачивание, всплывающие подсказки, навигацию и подсветку парных скобок.
Groovy
- Усовершенствована поддержка синтаксиса Groovy 3.0 — теперь поддерживаются вложенные блоки кода, а фигурные скобки и стрелки в замыканиях по умолчанию выделяются полужирным шрифтом, чтобы блоки кода было легче отличить от замыканий.
JavaScript и TypeScript
- Теперь можно заменять избыточные переменные еще одной деструктуризацией: нажмите в редакторе Alt+Enter и выберите Propagate to destructuring.
- Теперь, когда вы переименовываете идентификатор в файле JavaScript или TypeScript, IDE группирует динамические вхождения отдельно от остальных вхождений и по умолчанию исключает их из рефакторинга.
- Мы сделали более точное автодополнение кода для компонентов и их свойств из библиотек Vuetify и BootstrapVue.
Отладчик JVM
- Теперь можно выбрать метод при выполнении действия Step Into.
Поддержка баз данных
- Поиск по данным.
- Быстрое изменение размера страницы.
- Фильтрация по источникам данных в навигации.
JetBrains Runtime
- IntelliJ IDEA 2019.2 теперь по умолчанию работает под JetBrains Runtime 11.
Благодарим всех пользователей за то, что вы делились с нами своими мыслями и рекомендациями в комментариях на Хабре, в трекере и в Твиттере.
Команда IntelliJ IDEA
Комментарии (50)
AlexunKo
05.08.2019 17:14+3Лучше бы жор CPU починили. Господа разработчики, почему ваша IDE, будучи свернутая безо всяких запущенных процессов съедает половину моей батареи впустую? Вы что там, майните биткоины в фоне?
moscas Автор
05.08.2019 17:27+5А можно вас попросить снять профиль и прсилать нам? Как — описано тут intellij-support.jetbrains.com/hc/en-us/articles/207241235-Reporting-performance-problems
Слать на maxim.sobolevskiy@jetbrains.com
evil_random
05.08.2019 20:47+1Поддерживаю этого оратора. Иногда оно прямо настолько жрёт, что просто работать невозможно.
А бывает что зависает наглухо на определённых файлах.artspb
06.08.2019 10:52Не надо поддерживать оратора, нужно подержать JetBrains и отправить снепшот по инструкции выше ;) Если мы не знаем о проблеме, то мы ее скорее всего не починим.
HawkeyePierce89
05.08.2019 18:09В IntelliJ IDEA 2019.2 появилась поддержка нативной обработки игнорируемых файлов Git
А можно при установке продуктов JetBrains сразу же прописывать папку .idea в список исключений на уровне core.excludeFiles?
В рабочих проектах, где у всех более-менее одинаковое рабочее окружение, ещё как-то нормально добавлять папку в локальный .gitignore, но если работать с Open Source на Github, то так делать очень неприлично.yole
05.08.2019 18:13+1Нет, потому что наш основной механизм шаринга настроек внутри команды, работающей над одним проектом (ран-конфигураций, настроек инспекций, code style) — это именно помещение папки .idea в систему контроля версий. Мы сейчас автоматически создаем .idea/.gitignore, в который добавляются те файлы из .idea, которые содержат личные настройки. Остальные файлы рассчитаны на то, что их можно шарить через систему контроля версий.
HawkeyePierce89
05.08.2019 18:49Кажется я не понимаю пары моментов
1) Есть, если я правильно помню, возможность экспорта настроек в некий jar-файл, разве это не подходит для шаринга внутри команды?
2) Как быть, если я хочу внести некую правку в open source проект на гитхабе? Мне больше по душе коммитить через терминал, но глобальное исключение папки из отслеживания гитом — это тот ещё геморрой, который я так и не смог одолеть. Добавлять в .gitignore своё локальное окружение — за такое и по рукам линейкой получить можно. Поэтому приходится постоянно смотреть в терминале на папку .idea, которая не отслеживается. Как быть в таком случае?yole
05.08.2019 19:151) В jar-файл экспортируются настройки уровня IDE. В него не попадают, например, ран-конфигурации, которые специфичны для проекта. Инспекции можно настроить по-разному для разных модулей в проекте, такую конфигурацию тоже нельзя экспортировать в jar. Ну и workflow совсем не такой удобный — нужно явно просить коллег импортировать jar (и делать это каждый раз, когда что-то меняется). В случае с шаренным .idea настройки автоматически применяются у всех, кто открыл проект, и автоматически подхватываются, когда кто-то их обновляет.
2) Вы можете добавить .idea в .git/info/exclude. Ну и нет ничего ужасного в PR, который добавит .idea в .gitignore проекта — нашими IDE пользуются достаточно людей, чтобы такие PR воспринимались вполне адекватно.
GriNAME
05.08.2019 18:14А когда планируется полноценная поддержка диаграмм для Kotlin?
Спасибо за обнову!
zikolach
05.08.2019 19:17Новый релиз выглядит свежо и по ощущениям работает отзывчивей. Жаль что многие плагины не обновились к дате релиза. Было бы удобно про это узнавать до обновления IDE.
yole
05.08.2019 19:30Какие плагины вы имеете в виду? Наши собственные плагины сейчас всегда релизятся вместе с IDE.
zikolach
05.08.2019 20:59В настоящий момент показываются как несовместимые:
- BashSupport
- Ideolog
- HOCON
- LiveEdit
- Python
- Scala
- Vue.js
5 из них от JetBrains.
den_po
06.08.2019 02:36Вроде после обновления и перезапуска IDE всегда приходилось выполнять обновление плагинов отдельно.
zikolach
06.08.2019 11:07+1Да так обычно и работает. Проблема была с конфигурацией HTTP прокси. По неизвестной причине была включена ручная настройка с нерабочей конфигурацией. После отключения плагины обновились.
FylmTm
05.08.2019 20:13Окно сервисов
Я не могу найти это новое окно сервисов. Его нету среди всех Tool Windows.
Я искал по документации и What's New, но не нашел подсказок куда смотреть.
Все что смог найти это action открытие этого tool window, но его вызов ничего не делает.
Нужно чтобы у меня был включен какой то плагин? Проект был какого то особенного типа?moscas Автор
05.08.2019 20:14Если чего-то не можете найти, всегда используйте Find Action: Ctrl/Cmd+Shift+A.
Наберите там Services.FylmTm
05.08.2019 20:39Я так и делал. Там нету «Services».
Сейчас опытным путем смог найти этот «Services».
Судя по всему для того чтобы это окно было доступно и видно (в том числе при поиске команд), нужно чтобы существовал хотябы один сервис.
То есть нельзя открыть «пустое» окно сервисов.
Я в новом проекте сделал себе коннекшн к базе. После того как его создал, это окно сразу появилось (и также опция Services в поиске стала доступна).
Skerrigan
06.08.2019 13:00-1Вот да, почему просто нельзя добавить окно «на постоянку» себе? Почему оно становится доступным только когда что-то «туда попало»?
Далее, у меня есть сервис на Jersey, но туда он не попал (в отличии от схожей реализации на SpringBoot)… теперь «Jersey-сервис» у меня всегда висит в run-вкладке и там этот непонятный отсчет идет, чего ранее не было. Вопрос — как это безобразие нафиг выключить? IDE может быть запущенным вместе с «задачей» и неделю к ряду… оно неделю будет там анимировано считать время?
И, я даже не знаю кто голосовал у вас за этот новый splash-screen, но… тут очень тяжелое ругательство — как его поменять на что-то человеческое, хотя бы как было до этого?
Каждый раз, когда вижу, появляется желание «отправить монитор в полет».kaleev
06.08.2019 15:28Добрый день, нет смысла в том, чтобы пустое окно постоянно висело. Мы планируем в следующих версиях сделать возможным настраивать доступные сервисы в самом окне, в частности доступные в окне Services run конфигурации, тогда будет иметь смысл то, что окно доступно всегда. Сейчас конфигурации для Services настраиваются так: www.jetbrains.com/help/idea/services-tool-window.html#run-configs
Какой тип run конфигурации у Вас настроен для «Jersey-сервиса»?Skerrigan
06.08.2019 15:54нет смысла в том, чтобы пустое окно постоянно висело
С одной стороны я понимаю стремление «облегчить UI», видел когда «размещают вообще все, что есть» на экран, получается тот же Toad Oracle.
Вместе с тем все же дает дискомфорт, что таб(вкладка) сервисов после каждого перезапуска IDE пропадает… по такой логике можно вообще никакие табы не отрисовывать (ну а что тут такого, запускаем IDE — ничего же не используем, тогда даже вкладка console зачем?) — я к тому, что в теории не вижу проблемы просто помнить самой IDE, какие табы были открыты и их же с самого начала уже иметь.
Какой тип run конфигурации у Вас настроен для «Jersey-сервиса»?
Т.к. я не могу найти варианта «указать для IDE, что это приложение будет сервисом» (как понимаю, такого и нет) — беру максимально близкое и подходящее: простой Application с указанием main-class.
Но я не могу понять, какой логикой руководствуется IDE при определении «что размещать во вкладке сервисов, а что нет» — Spring-приложения идут туда.
Если вы сможете подсказать, как настроить запуск Java-class, чтобы он попадал в сервисы — буду очень сильно рад.kaleev
06.08.2019 16:06В Services попадают только те типы конфигураций, которые укажет пользователь, для Spring Boot конфигураций, когда их становится больше одной, IntelliJ IDEA показывает всплывающую подсказку с предложением поместить их в Services, а так список типов можно найти в Edit Run/Debug Configurations диалоге, выбрав справа нод Templates: Configurations available in Services.
Skerrigan
06.08.2019 16:34Ок, понял и нашел. Разумеется благодарю!
Однако, кхм, ну совсем не очевидно же…
P.S. Возможно как-то что-то сделать с этой картинкой при загрузке? Она правда не выносимая.
NeLexa
05.08.2019 21:12После обновления сразу заметил, что у официального плагина Android Support перестал работать экран дизайна компоновки. Пришлось вернуть 2019.1.4.
yole
06.08.2019 11:29+1Это известная проблема, связанная с переходом на новую версию JDK, мы ее чиним. Пока что вы можете скачать версию с JDK 8 с www.jetbrains.com/idea/download/other.html, в ней дизайнер работает.
usharik
05.08.2019 21:51Большое спасибо за наглядное отображение процесса сборки приложения мавеном! Для гредла это уже давно было, а для мавена пришло только с этим обновлением, если я не ошибаюсь! Исключительно полезная фича, особенно, если проект большой!
Varets
06.08.2019 09:28Современный безрамочный интерфейс в Windows 10.
Подскажите, а это настраивается или если Windows 10 то только безрамочный?yole
06.08.2019 13:56Можно выключить: нажимаете Shift два раза, вводите Registry, в диалоге переключаете ide.win.frame.decoration в off.
Beholder
06.08.2019 17:33Выключить параметр
ide.win.frame.decoration
(в реестре Идеи или в файле idea.properties)
doom369
06.08.2019 13:59В новой версии maven-release-plugin при запуске из IDE перестал работать. Если запускать из окна «Maven» (command line: release:prepare release:perform). Плагин ожидает ввода из консоли новой версии, и тут похоже ИДЕ потеряла это окошко.
IDE может выполнять рефакторинг Inline Method, даже если return-выражение прерывает поток выполнения.
За эту штуку — отдельное спасибо.
AlexanderRS
06.08.2019 14:07Раньше, когда был «Run dashboard», при клике в окне «Maven» на задачу, задача запускалась и вывод был в консоль. На 2019.2 загорается зеленый индикатор на табе «Services», но вывода нет.
kaleev
06.08.2019 15:17Это известная проблема: youtrack.jetbrains.com/issue/IDEA-215102, она будет пофикшена в минорных апдейтах.
AlexanderRS
06.08.2019 15:23странно, что это не считается блокером для выпуска релиза. Может есть workaround?
kaleev
06.08.2019 15:36да, для задачи в окне Maven можно создан run конфигурацию (пункт Create 'name'… в контекстном меню) и потом запускать именно ее, или убрать Maven run конфигурации из списка отображаемых в Services.
Danik-ik
07.08.2019 08:42+1Теперь можно выбрать метод при выполнении действия Step Into.
Вот одно только это — и уже ДААААА! Спасибо, вообще очень много приятных полезностей на единицу обновления.
А не подскажет ли кто-нибудь, как запитать java 13 текстовые блоки под мавеном? Явное прописывание превью-опции командной строки jdk в pom не влияет на мнение Идеи об уровне языка. Других способов "на бегу" не нашёл. Где посмотреть?
ARosolko
Крутое обновление!
А еще шрифты стандартные поменяли. Но не рассказали об этом :|
moscas Автор
Именно шрифт? Мы увеличили межстрочное расстояние. У вас какой был и какой стал?
ARosolko
Был Monospaced, а стал Consolas. И да, расстояние с 1 изменилось на 1.2
yole
Про Consolas да, забыли рассказать. Про межстрочное расстояние в посте есть :)
moscas Автор
Выяснил: действительно поменяли. Забыли упомянуть, прошу прощения.
kykypyky
Присоединяюсь. Fira Code убрали к тому же.
yole
Fira Code вернем обратно, он по ошибке потерялся.
kykypyky
Спасибо!