New Products

Какие возможности открывает JetBrains Gateway

Read this post in other languages:
English, Français, 日本語, 한국어, Deutsch, 简体中文

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

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

Если вы еще не видели наш пост об этом, самое время его прочитать.

А сейчас хотим подробно рассказать о том, как устроен процесс удаленной разработки с использованием нового приложения JetBrains Gateway.

Удаленная разработка с JetBrains Gateway

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

Процессом полностью управляет JetBrains Gateway — новое компактное приложение, в котором есть все необходимое для удаленной разработки. Это автономное приложение — единственное, что нужно установить на свой компьютер, чтобы начать работу. Идеальный вариант, если у вас не очень мощный ноутбук или по каким-то причинам нежелательно устанавливать IDE целиком. 

В некоторые наши IDE приложение JetBrains Gateway встроено в виде плагина. Сейчас сеанс удаленной разработки можно запустить прямо с начального экрана IntelliJ IDEA Ultimate, PyCharm Professional, GoLand, PhpStorm и RubyMine. Плюс к этому автономное приложение Gateway может устанавливать CLion и WebStorm и управлять ими. Вскоре мы добавим поддержку и других IDE.

Gateway устанавливает удаленный бэкенд IDE и локальный тонкий клиент, а затем соединяет их по SSH. Сначала создается SSH-соединение. Для этого укажите хост и имя пользователя, введите ключ или пароль, и Gateway подключится к удаленному серверу. Если нужная IDE еще не установлена, Gateway скачает ее с сайта jetbrains.com.

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

Как только версия IDE и директория проекта выбраны, Gateway скачивает IDE на удаленный сервер, распаковывает и запускает ее, загрузив проект. После этого приложение скачивает, кэширует и запускает локально соответствующую версию JetBrains Client. 

JetBrains Client работает локально, обеспечивая интерфейс для бэкенда IDE. Все выглядит как полнофункциональная IDE на базе IntelliJ: такой же редактор, автодополнение кода, навигация, инспекции и инструменты рефакторинга, как в локальной IDE. Однако все файлы хранятся удаленно и обработка языка выполняется на удаленном сервере. Это тот же клиент, который используется в Code With Me, просто в него добавлено несколько новых функций. Новый клиент IDE с полнофункциональным интерфейсом может показывать все диалоговые окна и окна бэкенда IDE и дает доступ ко всем его функциям.

Завершив работу с кодом, можно просто закрыть JetBrains Client. А бэкенд IDE продолжит работать: чтобы подключиться к нему снова, достаточно щелкнуть по ссылке в списке последних подключений JetBrains Gateway.

Конфигурация сервера

До сих пор мы почти не говорили об удаленном сервере. В настоящее время для удаленной разработки требуется сервер Linux (хотя клиент работает на Windows, macOS и Linux), но в дальнейшем будут добавлены и другие варианты. В остальном можно использовать любой удобный сервер — физический или виртуальный, в локальном дата-центре или в облаке.

Одно из преимуществ виртуальных машин или контейнеров — возможность воспроизводить среду и делиться ее с другими членами команды. Технология удаленной разработки JetBrains включает в себя специальный скрипт, который помогает командам DevOps подготавливать существующую среду: загружать проект, скачивать зависимости, выполнять индексирование и компиляцию. Полученный в итоге образ позволяет сразу начать работу с кодом.

Если вы не хотите тратить время на написание собственных скриптов, воспользуйтесь JetBrains Space — универсальным решением для разработчиков, в котором появились облачные среды разработки. Любой проект, сохраненный в Space, легко превратить в среду разработки, использовав возможности его «прогрева»: загрузить, скомпилировать, индексировать, а затем сохранить среду в виде снэпшота, в котором сразу можно начинать писать код. Подробнее читайте в этой статье.

Попробуйте возможности удаленной разработки с использованием автономного приложения JetBrains Gateway или скачайте версию 2021.3 своей любимой IDE на базе IntelliJ (они вышли на прошлой неделе). Прочитайте документацию и расскажите нам о своих впечатлениях.

Вопросы и ответы

Каков статус поддержки удаленной разработки?

Вы наверняка заметили пометку «beta» на скриншотах. Поддержка удаленной разработки встроена в платформу IntelliJ и затрагивает множество функций во всех IDE. Мы уверены, что все основные сценарии будут работать, но впереди нас еще ждет некоторое количество сложностей. Тем не менее, мы хотим как можно раньше предоставить разработчикам все возможности для удаленной работы.

JetBrains Gateway встроен в виде плагина в несколько IDE. В CLion и WebStorm плагин отсутствует, потому что для них было проведено меньше тестов, но с этими IDE можно использовать Gateway как автономное приложение.

Наконец, есть IDE, которые в данный момент вообще не поддерживают удаленную разработку: AppCode, DataGrip, DataSpell, Rider и Android Studio. Мы работаем над тем, чтобы как можно скорее обеспечить поддержку новых возможностей в этих инструментах.

Как лицензируется удаленная разработка?

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

Входят ли в технологию удаленной разработки возможности совместной разработки?

Еще нет, но мы планируем их добавить. Для удаленной разработки используется та же технология, что лежит в основе Code With Me, а JetBrains Client — тот же самый клиент, что используется в сеансах Code With Me. 

Однако сценарии использования принципиально отличаются. Code With Me предназначен для демонстрации некоторых окон, в том числе диалоговых, нескольким пользователям одновременно, в то время как при удаленной разработке необходимо обеспечить одному пользователю возможность доступа ко всем окнам. При подготовке первой версии мы сосредоточились именно на этом сценарии.

Все ли возможности IDE JetBrains доступны при удаленной разработке?

Да! Хотя вы работаете с тонким клиентом и бэкендом IDE без пользовательского интерфейса, вам доступны все функции, окна и диалоги: подсветка синтаксиса, навигация, автодополнение кода, инспекции, действия при нажатии Alt+Enter, быстрые исправления, контекстные действия, рефакторинги, конфигурации запуска, поддержка запуска и отладки, тестирование, различные окна, такие как Gradle и Maven, плагины и многое другое.

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

Есть другие варианты пользовательского интерфейса, например, для iPad или веб-интерфейс?

Наша технология предполагает использование клиента JetBrains Client вместе с платформой IntelliJ. Это позволяет работать в полнофункциональном интерфейсе и пользоваться всеми привычными возможностями IDE JetBrains, включая индивидуальную настройку и персонализацию с помощью тем и плагинов (они автоматически импортируются из локально установленной IDE). Поскольку используется тот же подход, что был опробован в Rider и Code With Me, протокол может опираться на легкие «модели просмотра», и это обеспечивает скорость и удобство работы для пользователя. Поэтому мы не планируем создавать веб-фронтенд.

Чтобы получить доступ к IDE JetBrains через браузер, можно использовать Projector. Однако Projector работает на более низком уровне, чем протокол удаленной разработки. Это приводит к задержкам отклика интерфейса и требует гораздо более высокой пропускной способности сети. Кроме того, Projector не поддерживает импорт настроек и плагинов из локально установленной IDE.

Поддерживаются ли плагины?

Платформа IntelliJ Platform предлагает большую экосистему плагинов, которые будут работать и при удаленной разработке. Если плагин расширяет функциональность IDE, например, добавляет поддержку еще одного языка или новые инспекции и подсветку, его можно установить в бэкенд IDE, и соответствующие возможности автоматически будут доступны в JetBrains Client. Любые новые инспекции, действия по сочетанию клавиш Alt+Enter и т. п. будут работать в клиенте так же, как в локальной IDE. Кроме того, установку плагинов можно автоматизировать с помощью скриптов для бэкенда IDE.

Плагины, меняющие пользовательский интерфейс IDE, например темы, можно установить в JetBrains Client, а не в бэкенд IDE. Плагины редактора, такие как IdeaVim, тоже будут работать в клиенте.

Какие операционные системы поддерживаются?

В настоящее время для удаленной разработки требуется сервер Linux, но клиент работает на Windows, macOS и Linux. В будущем мы добавим поддержку серверов под управлением Windows и macOS.

Можно ли размещать удаленные серверы в облаке?

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

Существуют ли сторонние решения для управления удаленной разработкой JetBrains?

В настоящее время JetBrains Space — единственный инструмент, обеспечивающий управление удаленными серверами. Он использует файлы Dockerfile для преобразования репозитория в готовую к использованию виртуальную машину. Мы ведем переговоры с другими поставщиками об интеграции с их решениями и сразу же сообщим, когда появится новая информация.

Ваша команда JetBrains
The Drive to Develop

Автор оригинальной статьи:

Oksana Mandryka

Matt Ellis

Discover more