New Products

深入了解 JetBrains Gateway

Read this post in other languages:
English, Français, 日本語, 한국어, Русский

我们最近宣布了在 JetBrains IDE 中支持远程开发。 这意味着您可以在远程服务器上托管您的源代码、工具链和作为服务运行的基于 IntelliJ 的 IDE。 基于熟悉的 IntelliJ 平台的本地瘦客户端为编辑、构建、运行、测试、调试等提供了丰富的全功能用户界面。

处理代码所需的一切都可以远程位于物理服务器或虚拟机上,给您干净、可重现的开发环境、服务器的强大性能,以及从任何地方工作的能力。

如果您还没有看到这个公告, 不妨现在熟悉一下

今天,让我们深入了解一下由新的 JetBrains Gateway 应用管理的远程开发工作流。

使用 JetBrains Gateway 进行远程开发

JetBrains 远程开发将通过 SSH 连接到现有服务器。 IDE 作为后端服务安装在远程机器上,将在其中加载项目而不显示用户界面。 瘦客户端在本地运行,连接到 IDE 后端并提供完整、丰富的 UI,而所有处理都在远程服务器上完成。

整个流程由 JetBrains Gateway 管理,这是一款全新的紧凑型独立应用,可以满足启动远程开发的所有需求。 由于它是一个独立应用,您只需要在本地安装就可以开始工作,非常适合功能较弱的笔记本电脑以及不需要安装完整 IDE 的情况。 

JetBrains Gateway 也作为插件许多 JetBrains IDE 捆绑在一起。 在这个初始测试版中,您可以直接从 IntelliJ IDEA Ultimate、PyCharm Professional、GoLand、PhpStorm 和 RubyMine 的欢迎屏幕启动远程开发会话。 此外,独立版的 Gateway 应用可以安装和管理 CLion 与 WebStorm。 更多 IDE 支持即将到来。

Gateway 将安装远程 IDE 后端和本地瘦客户端,并通过 SSH 将其连接。 首先,它会建立 SSH 连接。 指定主机和用户名并提供密钥或密码后,Gateway 将连接到远程服务器。 它会检查是否已经安装了 IDE 后端,如果没有,则会从 jetbrains.com 下载一个新的版本。

启动 IDE 后端前,Gateway 需要知道项目目录。 您可以浏览远程文件系统并选择一个目录,如果项目尚不可用,您可以使用内置终端从版本控制系统中克隆项目。

选择 IDE 版本和项目目录后,Gateway 会将 IDE 下载到远程服务器、解压缩并启动,同时加载项目。 然后它会在本地下载、缓存和启动匹配版本的 JetBrains Client。

JetBrains Client 在本地运行,并为 IDE 后端提供用户界面。 它以 IntelliJ 平台为基础,使用起来与完整的基于 IntelliJ 的 IDE 别无二致:具有与本地 IDE 相同的编辑器、代码补全、导航、检查和重构工具,但所有文件均远程托管,所有语言处理都在远程服务器上完成。 它与我们在 Code With Me 中使用的 JetBrains Client 相同,但它学会了一些新技巧。 它现在可以在富 IDE 客户端中本地显示来自 IDE 后端的所有对话框和工具窗口,从而允许访问远程 IDE 后端的所有功能。

代码处理完成后即可关闭 JetBrains Client。 IDE 后端将继续运行,后续只需点击 Gateway 最近连接列表中的链接即可重新连接

服务器配置

到目前为止,我们还没太谈及远程服务器。 目前,远程开发需要 Linux 服务器,但这也将在未来获得更新(Client 可以在 Windows、macOS 和 Linux 上运行)。 除此之外,您可以从物理或虚拟、本地托管、数据中心或云端任意选择您喜欢的服务器。

使用虚拟机或容器的好处之一是可重现环境并在团队中共享。 为了帮助您的 DevOps 团队,JetBrains 远程开发增添了帮助程序脚本,可通过加载项目、下载依赖项、编制索引和编译来“预热”现有环境。 生成的镜像可让您立即开始编码。

如果您不想花时间编写自己的脚本,我们为软件团队和项目提供的一体化解决方案 JetBrains Space 刚刚推出了云开发环境。 任何托管在 Space 中的项目都可以很轻松地变成开发环境,支持通过加载、编译、索引来“预热”项目,然后将环境保存为快照,准备好让您开始编码。 阅读 Space 公告,了解更多详细信息。

使用独立版的JetBrains Gateway工具开始远程开发,或者下载您喜欢的基于 IntelliJ 的 IDE 的 2021.3 版本(本周发布)。 查看文档了解更多信息,同时也请分享您的体验!

常见问题解答

远程开发支持的程度如何?

您可能已经注意到屏幕截图中的“Beta”标签。 对远程开发的支持已融入 IntelliJ 平台本身,并触及所有 IDE 的大量功能。 虽然我们相信核心场景将有效运作,但不保证过程中不会出现任何问题。 尽管如此,我们还是希望尽早将这些功能交到开发者手中。

JetBrains Gateway 作为插件与许多 IDE 捆绑在一起。 其他一些 IDE(CLion 和 WebStorm)不捆绑 Gateway,因为它们在测试方面不如其他 IDE。 您仍然可以使用独立应用在这些 IDE 上试用 Gateway。

最后,还有一些 IDE 目前不支持远程开发:AppCode、DataGrip、DataSpell、Rider 和 Android Studio。 我们正在全力开展工作,希望尽快为其提供支持。

远程开发如何获得许可?

远程开发包含在现有付费订阅中。 当 Client 连接到正在运行的 IDE 后端实例时,将执行许可证检查。 自动化用例不需要许可证,例如使用 IDE 后端创建和“预热”远程服务器或服务器映像。 但是,拥有许可证才能将 IDE 后端与 JetBrains Client 交互使用。

远程开发是否包括协作开发?

 尚不包括,但我们已经制定了相关计划。 远程开发以支持 Code With Me 的技术为基础,JetBrains Client 也与用于 Code With Me 会话的客户端相同。 

但是,相关使用场景大不相同。 Code With Me 旨在向多个同时使用中的用户显示工具窗口和对话框,可能会提供不同的视图,而远程开发需要向单个用户显示所有工具窗口和对话框。 团队刚刚在初始版本中关注此场景。

远程开发是否提供完整的 JetBrains IDE 体验?

是! 虽然您使用的是瘦客户端和无头 IDE 后端,但所有关键功能、工具窗口和对话框都一应俱全。 丰富的语法高亮显示、导航、代码补全、检查、Alt+Enter 操作、快速修复、上下文操作、重构、运行配置、运行和调试支持、测试和工具窗口(例如 Gradle 和 Maven)和插件等均可供使用。

远程开发还包括端口转发,因此您可通过本地浏览器查看远程运行的项目。

是否提供其他 UI,例如 Web 或 iPad?

远程开发经过特殊设计,专供以 IntelliJ 平台与 JetBrains Client 配合使用,提供丰富、熟悉的客户端应用程序,涵盖 JetBrains IDE 的所有知名功能,包括主题和插件(从本地安装的 IDE 自动导入)的自定义和个性化。 通过重用 Rider 和 Code With Me 背后的方法,协议可以基于轻量级“视图模型”,带来良好的响应式用户体验。 因此,我们并未计划提供 Web 前端。

但在 Projector 上,可以通过 Web 浏览器访问 JetBrains IDE。 注意,Projector 的工作级别低于远程开发协议,因此它具有更高的 UI 延迟并将使用更多的网络带宽。 Projector 的另一个限制是其不支持从本地安装的 IDE 导入设置和插件。

是否支持插件?

IntelliJ 平台具有出色的插件生态系统,能够在远程开发中继续发挥作用。 如果插件的作用是扩展 IDE 功能,例如添加对新语言或新检查的支持和高亮显示,则可以安装在 IDE 后端。这些功能将在 JetBrains Client 中自动加载。 新检查和 Alt+Enter 操作等都将通过 Client 运行,就像在本地 IDE 中一样。 插件安装也可以通过编写 IDE 后端脚本实现自动化

修改 IDE 的 UI(例如主题)的插件可以安装在 JetBrains Client 而不是 IDE 后端。 IdeaVim 等编辑器插件也适用于 Client。

支持哪些操作系统?

目前,JetBrains 远程开发需要 Linux 服务器,但 Client 可以在 Windows、macOS 和 Linux 上运行。 我们将在未来添加对 Windows 和 macOS 服务器的支持。

我可以在云中托管远程服务器吗?

当然可以! 远程服务器可以是办公室中的物理服务器,也可以是桌面或云中的虚拟机。 它可以创建为 Docker 镜像,IDE 后端包含用于下载依赖项、编译和等待索引完成的脚本。

是否有第三方为 JetBrains 远程开发提供编排?

JetBrains Space 是目前唯一提供远程服务器编排的工具,它使用 Dockerfile 将仓库转换为随时可用的虚拟机。 我们正在与其他提供商讨论集成问题,未来将公布更多消息。

英文博文原作者:

Lei

Matt Ellis

Discover more