先来一张最终效果图:
JetBrains Projector 是 JetBrains 的“远程开发”解决方案,基于 Client + Server 架构,对标的是微软 VSCode 的 Remote Development 方案。
与 VSCode 方案的区别:
- VSCode 通过 SSH 之类的技术,只传输代码、索引等数据,仅将计算匀给服务器,而渲染显示等还是依赖本地的 VSCode 客户端
- IDEA 系列全部 IDE 都是基于 Java 开发的,使用 Swing 进行界面的渲染。Projector 则是改动了 Swing 的渲染机制,通过网络传输渲染指令,最终使用 Web 技术将界面展现出来。除了客户端,Projector 也支持在浏览器中渲染使用。
要实现这一点,需要如下条件:
- 服务端:官方提供了 3 中方式安装 Server 端
- 客户端:有两种方式连接服务端
- 官方 Client:跨平台,应该是基于 Electron,没有多余的浏览器 UI 元素及可能的快捷键冲突,推荐此方案。
- 浏览器:通过浏览器直接方案服务端暴露的 url 直接访问(本次体验使用了该方式)。
此次体验,服务端采用 Python 脚本安装,客户端直接使用浏览器访问,服务器为 Ubuntu 系统,安装步骤如下:
- 安装 python3 及 pip3 基础环境:sudo apt install python3 python3-pip -y
- 确保安装底层依赖:sudo apt install libxext6 libxrender1 libxtst6 libfreetype6 libxi6 -y
- 安装 projector-installer:pip3 install projector-installer --user
- 如果提示 “ERROR: pyopenssl 20.0.1 has requirement cryptography>=3.2, but you'll have cryptography 2.8 which is incompatible.” 需要在安装命令后加上更新 cryptography 的指令:pip3 install projector-installer --user --upgrade cryptography
- 添加配置信息,指定 IDEA 路径后,运行 projector:projector run
- 安装后如果直接运行命令 projector run,会提示找不到 projector 命令,需要在 ~/.profile 中添加环境变量信息
- 运行前需要添加配置信息:projector config add steve-BSRE-1605,其中 “steve-BSRE-1605” 是我的配置信息名称,需要替换为自己的信息,在配置过程中需要输入 IDE 的路径,如:/snap/intellij-idea-ultimate/current/ (在 Ubuntu 中通过 snap 方式在应用商店安装后的默认位置)
参考资料: