简单体验一下JetBrains的远程开发方案——Projector

作为 Java 开发人员,IDEA 应该是接触得最多的开发工具,如果能够将 IDEA 跑在云端,不限制特定的客户端的话,就能随时随地的加班了(逃Projector 是 JetBrains 开发的远程开发解决方案,根据官方文档的介绍, Projector 最直接的作用就是通过网络远程运行 JetBrains IDE 和 Swing 应用程序。Projector 是一款 C-S 架构的软件,可以使用 Projector 达到 IDE 在服务器上运行,然后本地连接到服务器上部署的 IDE 进行开发的效果,官方提供了一个客户端应用,当然也可以使用网页进行 IDE 的操作。作为一个远程 IDE 的解决方案,他和微软的 VSCode Remote 有很大的不同。

远程办公

JetBrains 三月发布的 Projector 可能就能满足这种需求。

Projector 是啥

Projector 是 JetBrains 开发的远程开发解决方案,根据官方文档的介绍, Projector 最直接的作用就是通过网络远程运行 JetBrains IDE 和 Swing 应用程序。Projector 是一款 C-S 架构的软件,可以使用 Projector 达到 IDE 在服务器上运行,然后本地连接到 IDE 进行开发官方提供了一个客户端应用,当然也可以使用网页进行 IDE 的操作。作为一个远程 IDE 的解决方案,他和微软的 VSCode Remote 有很大的不同

  • VSCode Remote 是通过 SSH 连接到远程服务器,对远程文件进行修改,只传输代码等数据,将计算匀给服务器,而渲染显示等还是依赖本地的 VSCode 客户端。
  • Projector 是修改了 Swing 的渲染机制,让 Swing 程序通过网络进行渲染,更接近于一个远程桌面的形式,但是仅仅只显示 IDE 窗口。

体验Projector

Projector 是 C-S 架构的软件,我们需要分别准备服务端和客户端:

Projector 的服务端有三种安装方式

  • 通过官方的 projector-installer 安装脚本进行安装,目前仅支持 linux 安装。
  • 通过官方提供的 Docker 镜像 projector-docker 安装。
  • 直接在 JetBrains 的 IDE 上安装 Projector这个插件,这种安装方式会把这个 ide 作为服务器,需要有图形界面的支持。

官方提供了两种客户端:

  • 直接通过浏览器访问,这样的好处是不用下载客户端,不用受平台限制,但是会有部分快捷键不能使用。
  • 官方的project-client 这个客户端本质上也是对web进行的一层封装,好处是可以使用一些被浏览器默认占用的快捷键,比如 Ctrl + W 。

使用 Docker 来运行当然是最简单的方法在 projector-docker 这个项目下,能看到 Intellij 官方提供的 Intellij 平台的 IDE 的 docker 镜像。在这里我们跑一个 Intellij IDEA 社区版试一下

1
2
docker pull registry.jetbrains.team/p/prj/containers/projector-idea-c
docker run --rm -p 8887:8887 -it registry.jetbrains.team/p/prj/containers/projector-idea-c:latest

通过 Docker 跑起来之后访问 8887 端口就能看到熟悉的 IDEA 授权界面

idea授权

一路点击下去就能看到熟悉的 IDEA 界面啦,默认有一个java文件和一个kotlin文件,这个界面和正常使用的IDEA并没有区别,能够正常的编辑。

idea界面

点击一下运行,就像在本地运行一样能够成功编译、运行,可以在下方的控制台看到结果。

idea输出

一切操作都和本地使用 IDEA 一样,也可以创建 Maven 项目来开发更复杂的需求。

idea新建项目

idea maven项目

实际使用过程中整体的体验还算完整,看上去一切都很不错,感觉在浏览器上复刻本地 IDE 的体验就快要实现了。不过在体验中我发现还是需要踩一些坑。

使用中的一些问题

使用中影响最大的问题是如下两个,目前都有解决方案

  • 最主要的问题就是 IDE 快捷键和浏览器冲突,比如用于选中代码的 Ctrl-W,在浏览器中就变成关闭网页窗口了,实在是有些难受。解决方法就是使用 Jetbrains 提供的 Projector 客户端,但是都要另外再下一个客户端了,我为什么不直接用本地的 IDE 呢。
  • 默认无法使用输入法,最初使用的时候我是在外面把字打好复制进去。经过一番搜索,根据 YouTrack 上的这个 Issue Support for IME 通过加上页面参数 inputMethod=ime 可以启用输入法。不过这个功能默认关闭。

使用输入法

总结

Projector 目前依然是一个非常新的技术,在使用当中如果是低延迟的环境下能够获得和本地 IDE 类似的环境,但是有一些问题依然出现。在各家都在发力远程办公的今天,Projector 目前的体验很难称得上是远程 IDE 的最佳解决方案。这种更改 Swing 渲染机制然后通过 Canvas 绘制的方式相较于直接使用 Web 技术的在线 IDE 总感觉有些怪怪的。总的来说使用 Projector IDEA 目前的水平只能称得上能用,它尽力的把本地 IDE 的体验搬上了云端,但是目前的一些小问题还需要更多的完善。