Опубликована дорожная карта Spring Cloud 2020

Spring Cloud IntelliJ IDEA
Опубликована дорожная карта Spring Cloud 2020

JetBrains опубликовала план развития своей платформы IntelliJ на 2020 год.

В этой статье в основном представлены некоторые текущие работы, проделанные JetBrains по улучшению IntelliJ IDEA и IDE на базе платформы IntelliJ, включая производительность и поддержку современных рабочих процессов разработки.

Улучшения будут выпущены в следующем году, некоторые из них будут выпущены в выпуске Spring 2020.1.

представление

Производительность индексирования

Две основные болевые точки, связанные с производительностью IDE, — это производительность при запуске, а инструменты, индексация которых занимает много времени, считаются тяжеловесными. В следующем году, по словам JetBrains, основное внимание будет уделено производительности индексации.

Чиновники подошли к этой проблеме комплексно. Во-первых, поддерживается использование предварительно созданных индексных блоков, поэтому каждому пользовательскому экземпляру IntelliJ не нужно выполнять работу по индексированию класса java.lang.String.

Поддержка запланирована на следующий год, начиная с JDK и заканчивая библиотеками, интерпретаторами и пакетами Maven Central в других IDE. Существуют также способы поддержки совместного использования индексных блоков исходного кода проекта внутри команд или предприятий, хотя в настоящее время нет конкретных планов для этого блока.

Во-вторых, планируется сделать индексацию менее разрушительной, предоставляя больше операций IDE во время индексации.

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

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

Редизайн модели потока блокировки чтения/записи

Зависание UI (зависание, зависание) — большая проблема. Несмотря на то, что в этом году была создана основа для сообщения о таких зависших проблемах, и были внесены архитектурные изменения для устранения многих связанных проблем, таких как асинхронные прослушиватели событий файловой системы, в следующем году планируется предпринять еще более масштабные шаги. Шаг 1. Переместить операции, требующие блокировки записи из потока пользовательского интерфейса.

В начале IntelliJ IDEA было принято архитектурное решение, которое требовало, чтобы большинство операций требовали модификации внутренних структур данных IDE для выполнения в потоке пользовательского интерфейса, то есть как базовые операции (вставка символов в документ), так и крупномасштабные операции (переименование метод с тысячами применений).

Преимуществом этой архитектуры является простая модель программирования, но очевидным недостатком является то, что во многих случаях страдает отзывчивость пользовательского интерфейса.

В течение многих лет официальные лица искали способы обойти ограничения этой архитектуры, в основном разбивая большие операции на части, которые выполняются в фоновом режиме и применяются к потоку пользовательского интерфейса. Более простым решением было бы полностью избавиться от требований к потоку пользовательского интерфейса, но до недавнего времени было неизвестно, как это сделать без серьезной перезаписи собственного кода и сторонних плагинов.

Но теперь у JetBrains есть архитектурное решение, позволяющее осуществлять постепенную миграцию, и она приступает к его реализации. Базовые компоненты пользовательского интерфейса и API-интерфейсы платформы IntelliJ будут реорганизованы в следующем году, чтобы принять новую модель многопоточности. Как только новая модель станет стабильной и станут видны улучшения, переход на новую модель во всех IDE приведет к плавному пользовательскому интерфейсу и отсутствию задержек.

Загружать и выгружать плагины без перезагрузки

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

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

Что делает эту работу еще более значимой, так это то, что ее конечной целью является то, что IDE может изменять свой размер в зависимости от размера каждого проекта, который открывает разработчик, например загрузка подключаемого модуля Spring только для проектов, использующих Spring, и подключаемого модуля Angular только для Angular. проекты.

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

Поддержка рабочего процесса

Совместное редактирование

Совместное редактирование — это запрос, получивший наибольшее количество голосов в системе отслеживания проблем, и JetBrains в настоящее время работает над этой функцией. При текущем подходе на компьютере с исходным кодом будет работать основная IDE, а другие пользователи смогут подключать свои IDE к основной IDE в качестве «тонких клиентов» без прямого доступа к исходному коду.

Каждый подключенный пользователь будет иметь свой собственный статус, включая открытые наборы файлов, позиции курсора и т. д., и при желании может «следовать» за другим пользователем.

Пользователи тонкого клиента будут иметь доступ к основным функциям IDE, таким как навигация, завершение и отладка, но не к полному набору функций, например, в начальном выпуске тонкий клиент может не иметь возможности выполнять операции контроля версий.

Поддержка совместного редактирования основана на протоколе Rider, поэтому, скорее всего, сначала она будет реализована в Rider, а затем будет распространена на другие IDE. Однако это долгосрочная работа, и версия IntelliJ IDEA 2020.1 пока не имеет отношения к результатам.

Поддержка облачного исполнения

Запуск и отладка кода внутри контейнеров поддерживается многими продуктами JetBrains в течение достаточно долгого времени, однако между реализацией этих функций в разных продуктах нет большой корреляции, и даже пользовательский интерфейс для основных функций (таких как поддержка Docker) противоречив. .

Теперь JetBrains представила концепцию целевой среды, которая позволяет копировать файлы в обоих направлениях и запускать процесс в целевой среде. В IntelliJ IDEA 2020.1 поддерживаемые среды будут включать локальные компьютеры, контейнеры Docker и компьютеры, подключенные через ssh.

В последующих выпусках планируется унифицировать поддержку существующих Docker и удаленных интерпретаторов вокруг новой архитектуры. В дополнение к этому будет обеспечена более глубокая облачная интеграция.

Перепроектировать модель проекта

Модель проекта — это способ представления IDE структуры проекта: какие файлы принадлежат проекту, как они зависят друг от друга, какие библиотеки используются... Модель проекта имеет определенные ограничения, прежде всего, она не поддерживает произвольные смешивание разных типов проектов.

Например, AppCode может открывать проекты Xcode, а Rider может открывать решения Visual Studio, но не может открывать проекты Gradle и проекты Xcode в одной и той же среде IDE.

Во-вторых, модель проекта работает на уровне каталогов, а не на уровне файлов, и она не может представлять разные файлы с разными зависимостями в одном каталоге, что затрудняет интеграцию системы сборки, такой как Bazel, в IDE, а также создает проблемы. для других сценариев.

Переработанная модель проекта (внутренне именуемая «моделью рабочей области») снимет эти ограничения. Это также дает другие преимущества, такие как повышенная производительность при открытии проекта, более плавная синхронизация с Maven и Gradle и лучшая модель программирования.

JetBrains также сообщила, что в будущем будет опубликована дополнительная информация о плане.https://blog.jetbrains.com/idea/2019/12/intellij-platform-roadmap-for-2020