В этом релизе мы сосредоточились на производительности и качестве. Вместе с другими командами JetBrains, мы занимались оптимизацией производительности, повышением отзывчивости интерфейса, улучшением существующей функциональности.
Чтобы правильно расставить приоритеты, мы полагались на ваши отзывы и благодарим всех, кто делился идеями и сообщал об ошибках в нашем трекере. В результате мы исправили более 1600 проблем, которые в общей сложности получили около 4000 голосов пользователей.
Мы также работали над поддержкой новых фреймворков для создания микросервисов, таких как Micronaut, Quarkus и Helidon, и сделали долгожданную поддержку MongoDB.
Оптимизация производительности
Мы много работали над улучшением производительности IntelliJ IDEA. Вот что у нас получилось:
- IntelliJ IDEA запускается гораздо быстрее.
- Меньше зависаний редактора и интерфейса.
- IDE потребляет меньше памяти, особенно при импорте Gradle-проектов.
Одной из главных задач в этом году было сократить время запуска IDE. Мы внесли существенные архитектурные изменения в платформу IntelliJ: некоторые процессы, которые при запуске происходили последовательно, теперь выполняются параллельно. Кроме того, мы реорганизовали классы, чтобы ускорить инициализацию, оптимизировали загрузку шрифтов на macOS и многое другое.
Мы уделили внимание повышению отзывчивости интерфейса и избавились от многих зависаний в различных частях IntelliJ IDEA. Нам удалось устранить причины зависаний из более чем 1600 баг-репортов. Кроме того, сообщать о зависаниях теперь легче.
Теперь IntelliJ IDEA работает гораздо быстрее, когда в редакторе или отладчике открыто много вкладок, а также когда регулярное выражение соответствует очень длинным строкам в Find in Path. Открытие дерева проекта тоже занимает меньше времени.
Мы ускорили работу редактора, оптимизировав вывод типов в Java. Вывод типов для длинных цепочек вызовов методов теперь работает намного быстрее. Подсветка синтаксиса Java тоже работает быстрее, особенно это касается методов с generic varargs (Arrays.asList, Map.ofEntries и т.д.), которые могут содержать десятки аргументов. Объединение нескольких строк с помощью действия Join Lines тоже ускорилось.
Поддержка Kotlin 1.3.60 тоже привела к улучшениям, например, ускорилась подсветка синтаксиса Kotlin в редакторе.
Другие исправления коснулись VCS: удалось сократить время обработки событий и игнорируемых файлов, устранить зависания и ускорить обновление статуса в больших проектах.
В подсистеме сборки мы снизили пиковое потребление памяти при импорте больших Gradle-проектов. А еще исправили проблемы с редактированием файлов pom.xml в Maven-проектах: теперь IDE предлагает варианты автодополнения без задержек.
Мы довольны результатами, но не останавливаемся на этом. В следующих версиях будем и дальше оптимизировать производительность и постараемся сделать запуск IDE еще быстрее.
Улучшение качества
Плагины
У IntelliJ IDEA богатая экосистема плагинов, но есть недостаток: при установке или удалении плагина нужно перезапускать IDE. Мы начали решать эту проблему и реализовали базовую инфраструктуру для динамической установки плагинов, без перезапуска IDE. Пока что это работает только для тем интерфейса и сочетаний клавиш.
Системы контроля версий
Много нового в поддержке VCS. Чтобы упростить работу с ветками, вместо действия Checkout as... мы добавили два новых: Checkout и New Branch from Selected. Действие New Branch from Selected создает новую локальную ветку, но не включает отслеживание какой-либо удаленной ветки. При вызове действия Checkout IDE создает новую локальную ветку, извлекает ее из репозитория и включает отслеживание выбранной удаленной ветки, если нет локальной ветки с таким же именем.
Мы переработали диалог Clone и сделали единый интерфейс для скачивания проектов с различных VCS-хостингов. Теперь вы можете войти в свой аккаунт прямо из обновленного диалога. Если вы уже залогинились, IDE покажет списки всех репозиториев, сгруппированных по учетным записям или организациям, в которых вы состоите.
Кроме того, больше не нужно загружать ветку, чтобы отправить изменения в репозиторий: выберите нужную ветку в окне Branches и нажмите Push. Для перемещенных или переименованных файлов мы добавили столбец с именами файлов в File History. Еще одно полезное улучшение — возможность принудительно добавить файл в Git (или Mercurial), даже если он находится в списке .gitignore (или .hgignore).
Другие улучшения
В предыдущей версии мы поддержали функциональность Java 13, а в этот раз значительно улучшили поддержку текстовых блоков Java 13. Недавно мы рассказывали об этом в нашем блоге.
Теперь есть простой способ просмотреть иерархию вызовов для выбранного поля: используйте новое действие Field Call Hierarchy (Ctrl/Cmd+Alt+H).
Если у вас установлен флажок Show quick documentation on mouse move, при наведении указателя мыши на предупреждение или ошибку отобразится единая подсказка с описанием предупреждения или ошибки и справочной информацией о коде.
Раньше в таких случаях IDE показывала только подсказку об ошибке без документации, а иногда появлялось целых два всплывающих окна.
Мы обновили поведение диалога intention actions: действия не исчезнут из списка предложений, если вы выбрали одно из них и закрыли диалог.
Окно Services теперь всегда отображается, и его поведение можно можно настроить внутри самого окна. Кроме того, вы можете скрыть определенные конфигурации запуска.
А также:
— Подсказки о несоответствии типа стали более подробными и понятными.
— При открытии проекта IntelliJ IDEA показывает его название.
— Мы поддержали вставки фрагментов кода на новых языках шаблонов, в частности Pug (ранее — Jade), Handlebars, EJS и Slim.
— Появилась плавная прокрутка колесом мыши.
— Полосы прокрутки можно сделать более заметными, используя чекбокс Use contrast scrollbars в меню Preferences/Settings | Appearance & Behavior | Appearance.
Поддержка новых фреймворков и технологий
Несмотря на то, что при подготовке этой версии мы в основном были сосредоточены на качестве, мы также работали над несколькими новыми функциями и рады их представить. Всё, что описано ниже, есть только в IntelliJ IDEA Ultimate.
Вокруг микросервисов было много разговоров задолго до того, как мы начали планировать этот релиз. В какой-то момент мы подумали, что нам стоит добавить поддержку технологий, которые используются для разработки Java и Kotlin-проектов с микросервисной архитектурой. Звезды сошлись, и мы начали работать над интеграцией.
Во-первых, мы расширили помощь при написании кода и возможности навигации для фреймворков разработки микросервисов нового поколения: Micronaut, Quarkus и Helidon. Для тех, кто занимается реактивным программированием, мы добавили поддержку Spring Web Flux.
Обычно микросервисы взаимодействуют друг с другом через HTTP/WebSocket, поэтому следующим шагом для нас было добавить поддержку API HTTP-клиентов Java, таких как java.net.URI/URL, Retrofit v2, OkHttp v3, а также клиентских библиотек популярных серверных фреймворков: Spring Feign, MicroProfile REST Client и т.д. Что важно, теперь IDE предоставляет автодополнение URL-адресов и навигацию для HTTP/WebSocket API.
Во-вторых, мы добавили новое окно Endpoints, чтобы было удобно просматривать конечные точки вашего проекта. В этом окне отображаются как клиентские, так и серверные API. Постепенно сюда будут добавлены не только HTTP API, но и API обмена сообщениями, gRPC и GraphQL.
Наконец, мы расширили поддержку спецификаций API. В этой версии мы поддержали Swagger 2 и OpenAPI Specification 3. Поддержка включает в себя проверку на соответствие схеме, автодополнение, навигацию, поиск использований и рефакторинг Rename в YAML/JSON-файлах, содержащих описания API.
На данный момент все это работает только для проектов на Java и Kotlin, но в следующих версиях мы планируем поддержать другие языки и фреймворки.
Кроме того, IntelliJ IDEA 2019.3 наконец поддерживает MongoDB. В этой версии коллекции и поля отображаются в проводнике баз данных, вы можете выполнять запросы и просматривать их результаты.
Важные исправления
— IDE теперь находит каталог, в который Gradle был установлен через Homebrew.
— Стало проще вручную устанавливать домашний каталог Gradle.
— IntelliJ IDEA теперь поддерживает хранение паролей в KWallet на Linux.
— Для проектов JavaFX IDE может отображать файл FXML со встроенным Scene Builder на вкладке Scene Builder.
— В окне Debug работает навигация с клавиатуры.
— Можно скопировать выбранный текст из окна инспекции через Ctrl/Cmd+C.
— Фокус не теряется при переключении между окнами IDE.
— Улучшено расположение окон и всплывающих подсказок.
— Если в IDE выбрана тема Darcula, системные окна MacOS при вызове открываются в темной теме.
Мы также обновили JetBrains Runtime 11 (JBR 11).
— Исправили рендеринг шрифтов на macOS Catalina.
— Устранили проблему с открытием проекта на macOS 10.15 Catalina.
— Исправили символы в диалоге Evaluate Expression.
— IntelliJ IDEA обнаружит конфликты между сочетаниями клавиш IDE и шорткатами операционной системы.
— В редакторе устранили ??проблему со шрифтами, которые всегда были выделены курсивом.
— Исправили начальный экран на Windows.
Все подробности о новой версии читайте на сайте или посмотрите обзор (на английском).
Команда JetBrains
voopr
Отличный инструмент. На текущей работе пока Eclipse, но есть подвижки в сторону перехода на IDEA. Даже время на попробовать выделили. Попробовал и обнаружил багу при импорте проекта из Eclipse. Даже БАГУ или БАЖИЩЕ.
Имеем свежеустановленную последнюю версию IDEA 2019.3 Ultimate (trial), импортируем существующий eclipse проект (импорт проходит внешне хорошо), нажимаем кнопочку Build и получаем девственно чистую директроию проекта, IDEA удалила все! Ах… как я был удивлен.
При импорте из eclipse (если просто создать проект из существующего исходного кода такого не происходит) IDEA все директории в которых есть файлы .jar или .class помечает как excluded, а при сборке удаляет.
OnYourLips
Работодатель не покупает лицензию, а из своего кармана платить не хочется? Или запрет на использование нерегламентированного ПО?
voopr
Так исторически сложилось. Работодатель вроде не против, но проекты на eclipse местами завязаны. Надо на первом шаге обеспечить что бы можно было и там и там работать.
Xobotun
О, у меня была похожая забавная ситуация, когда я пытался заставить
hibernate-jpamodelgen
писать метамодель вsrc/main/java
в package*.entities.generated
. Написал кучу нового кода, не закоммитил, решил протестить – запускаю сборку gradle – вся папкаsrc
пуста.Спасибо, что есть local history. А генерируемые файлы решил писать в
src/generated/java
, хотя и были небольшие проблемы с classpath'ом.oljakli
Добрый день, IntelliJ IDEA не должна удалять excluded файлы при build'e. Создайте, пожалуйста, ишью на YouTrack (https://youtrack.jetbrains.com/issues/IDEA), просьба уточнить в ней, как именно собирается проект и, по возможности, предоставить пример, на котором проблема воспроизводится. Спасибо!
Zam_dev
Единственный минус JetBrains — катастрофически не хватает UX/UI дизайнера…
moscas Автор
У нас есть команда UX/UI, вы создавали тикеты на проблемы в UX/UI в нашем трекере?
Zam_dev
Не создавал, простите за прямоту, как по мне, то там в корне нужно менять все. Я понимаю цветовые схемы можно подбирать самому, но вот от этого «оранжевое на сером» которое идет с самого первого релиза — волосы встают дыбом. Расположение окон, подсказки, диалоговые инструменты, не имеют единого стиля, первое знакомство для меня было целым квестом, что где и почему.
Фейерверк цветов кнопок, иконок, пунктов меню. Перенасыщение интерфейса. Неуместные скачки размеров шрифтов и размеров элементов управления. Нехватка минимализма.
После VS больно смотреть На IDEA ес чес.
zirix
У всех разные вкусы (и разные мониторы). По мне, так у идеи самая идеальная цветовая схема.
Откройте фотошоп/гимп, там примерно тоже самое. Всегда требуется некоторое время, чтобы разобраться в сложном ПО.
moscas Автор
Спасибо! Пара советов:
1. Скачайте 15 тем для идеи в Plugins, наверняка хотя бы одна из них вам подойдет.
2. Попробуйте включить Distraction free mode, я его не выключаю уже года два. Шума станет намного меньше.
RI7
Забавно, мне больно смотреть на VS после IDEA
Maccimo
Вы, верно, на версию двухгодичной давности смотрите?
Примерно в версии 2018.3 заботливые УХУИ-специалисты похерили нормальные контрастные иконки и заменили их на нечто, больше всего напоминающее осеннюю слякоть под подошвами сапог.
Все пользователи этому были очень рады и даже написали более сотни комментариев с благодарностями.
tonad
И не один из них не работает так, как работал раньше «Checkout as». Теперь необходимо сначала выполнить «Checkout» а потом поменять имя. Спасибо.
И если вы, в JetBrains читаете, возможно рассмотрите небольшое улучшение, которое давно есть в eclipse, что бы при изменении имени ветки пробелы и запрещенные символы автоматически заменялись нижним подчеркиванием.
moscas Автор
1. Да, это намеренно, реквест на «вернуть» с комментариями: youtrack.jetbrains.com/issue/IDEA-228145
2. Про конверсию имени youtrack.jetbrains.com/issue/IDEA-128268, мы посмотрим, спасибо!
Mountaineer
После обновления Idea начала ужасно лагать. То на поиске зависимостей, то еще на какой то функции. Почистил кеш — поиск зависимостей заработал, но зависало на какой то другой функции.
moscas Автор
А сможете прислать нам тред-дампы и логи? Как — описано здесь intellij-support.jetbrains.com/hc/en-us/articles/207241235-Reporting-performance-problems
keekkenen
навскидку пару багов появилось
Мелочь, а неприятно.
Конечно же, IDEA больше радует день ото дня
moscas Автор
Это те самые кейсы для тикетов со скриншотами: youtrack.jetbrains.com/issues/DBE
Zeitung
Исправьте пожалуйста несколько проблем (обе проблемы на Win10 и появились ДО 2019.3):
1) Принудительный фокус окна при git fetch/pull/push. Сценарий:
— IDEA работает в 2 окна (Back + Front)
— переключаюсь на новый бранч в Back (начинается fetch + indexing + «восстановление состояния окон» + maven/gradle refresh)
— если успеть переключиться на Front начать что-то делать (например в терминале печатать `npm run *` или начать создавать новый бранч) до того как Back закончит свою последовательность, то по ее окончании (или где-то в средине, на мой взгляд связанно именно с git) Back снова получит принудительный фокус No matter what
2) Символы с клавиатуры попадают в код, вместо нового окна. Сценарий:
— фокус находится где-то в коде
— ctrl+shift+F
— СРАЗУ начать что-то печатать или ctrl+V
— первые пару символов попадают в код, вместо окна поиска. Такая-же ситуация с всеми окнами при вызове которых текстовое поле автоматически должно получать фокус.
moscas Автор
Традиционный вопрос: эти проблемы есть в трекере?
doom369
Подтверждаю, такая же хрень. А индексирование обычно раньше минуты-двух не заканчивается.
tsypanov
https://github.com/JetBrains/intellij-community/pull/1259
Посмотрите? Улучшение не бог весть какое значительное, но зато замена
Method.getParameterTypes().length
наMethod.getParameterCount()
может быть выполнена автоматически и точно ничего не сломает.kacetal
Заметил одно очстранное поведение, если выташить таб с открытым классом с помошью shift + f4 из основного окна, то при нажатии в окне с деревом проекта на иконку которая показывает местоположение файла в проекте. Она будет всегда орентироваться на основное окно, а не то которое мы открыли и выташили из основного.