# Jetbrains远程开发与Fleet
> 本月,根据Jetbrains微信公众号推文消息,Jetbrains宣布支持远程开发(部分IDE) 和即将发布一款轻量级的编辑器Fleet。那就赶快尝鲜一试吧!
## **JetBrains IDE 的远程开发解决方案**
提出这一解决方案的主要想法就是克服本地机器或笔记本电脑速度慢的限制,使开发人员可以更高效地工作、节省时间并为项目做出更多贡献。
考虑到这一目标,我们决定将 IDE 的前端和后端分开。 安装在本地计算机上的唯一软件是渲染 IDE 用户界面并与远程后端通信的客户端。 远程后端将负责所有重量级的源代码操作,例如构建索引和语法树,提供代码补全和重构等功能。
可以使用什么作为远程后端? 有多种选择。SSH和Space
> 请先下载Jetbrains Gateway(目前为Beta版)和Jetbrains Space
>
> 更多参考官方文章:https://www.jetbrains.com/zh-cn/remote-development/
### 基于Space
![image-20211209223247852](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092232427.png)
如上图所示,可直接将Jertbrains Space作为云开发环境。
![image-20211209224446061](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092244061.png)
现在可免费注册Jetbrains Space,拥有你自己的一体化团队解决方案。
![image-20211209224837148](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092248551.png)
看一看的Jetbrains的功能吧,之后再介绍其中的云开发环境。
![image-20211209225239769](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092252215.png)
现在登录到我的https://firstproject-zhoujiankang.jetbrains.space/
![image-20211209225729814](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092257588.png)
云开发环境中可选择2中IDE,一种即将发布的Fleet(目前还在测试阶段),一种就是IDEA。
其余功能可自行测试,不再一一介绍。现在直接克隆一个仓库到Space,并在将仓库部署到远程开发环境中去。
![image-20211209230934229](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092309323.png)
在IDE中打开,配置实例。
![image-20211209231112074](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092311326.png)
![image-20211209231123304](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092311414.png)
可以从上图看出,实例也就是虚拟机VM有3中类型。分别如下:
常规(4 个 CPU 内核,8 GB RAM)、大型(8 个 CPU,16 GB RAM)到超大型(16 个 CPU 内核,32 GB RAM)。
我选择常规版本。一起看看效果吧。
![image-20211209232630004](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092326436.png)
### 基于SSH
![image-20211209232737624](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092346731.png)
如果基于云服务,使用SSH。那么云服务器的配置不得低于4核8G。我的云服务配置只有1核2G,配置太低,不够要求,我测试许久都未成功。我看到其他大佬的文章有关于SSH方式配置过程。后面的文章就直接搬抄大佬文章到这里过来。大佬当时使用的IDEA 2021.03的EAP版本中SSH,虽不是Gateway中SSH,但是流程差不多一致,可供参考。
> 大佬原文地址:https://jishuin.proginn.com/p/763bfbd6c4d6
点`Connect via SSH`,就可以看到只要通过SSH方式就可以连上一个远端服务器作为计算资源。和所有的SSH一样,填入你相应必要的验证方式,这里我是采用RSA私钥的验证方式:
![img](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092346028.webp)
点击`Check Connection and Continue`之后,后续所有的动作,都由IDEA自动完成。包括在你的服务器上装上远端的服务进程,初始化等事情。这个过程只能等一会。
![img](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092346900.webp)
这个过程我大概等了5分钟左右。看到成功连接上远程服务器之后,点开`Project directory`就可以看到服务器上的文件目录了,选择一个作为你的工作目录。
![img](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092346117.webp)
这时应该服务器上的远端进行已经开启了,我登上了服务器,查找了下idea的进程,可以发现远端服务器上启动着4个进程。
![img](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092345986.webp)
连上上之后进入主界面,我发现基本和本地的没有任何区别。只是在右下角多了一个即时的上行和下行的速度指标。和一个ping值。玩过手游的童鞋应该都知道,ping值是一个什么概念。ping值越低,就代表延时越低。下图可以看到,我本地和服务器的延迟是22ms,对这个值有点概念的童鞋,应该知道这个ping值基本上是感受不到延迟的。
![img](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092345502.webp)
接下来我们就感受下远端编译。
我创建了一个springboot的web项目,当然创建的代码全部在远端上面,本地只不过作为编辑界面。
运行`mvn clean package`命令,要注意的是此时并不是在本地执行maven命令,已经是在远端了,前提是远端服务器已经装了maven,并配置好了系统path。
整个过程和本地并无太大差别,运行结果耗时如下,这还是包括从中央仓库上下载springboot相关依赖+编译打包的时间。甚至于我都觉得比本地要来的快速。
顺便说下,这里测试时,远端服务器的配置是8核64G内存。
![img](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092345101.webp)
接下来我在demo工程上加了一个controller。直接运行这个项目。
![img](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092345621.webp)
![img](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092345362.webp)
运行很快速。配置的端口号在8989。
如果往常我们要访问controller的话,就一定会访问127.0.0.1:8989了,但是这个运行也是在远端运行的。
我查看了远端的进程和端口号,确实服务器上开启了一个线程,端口号是8989
![img](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092345349.webp)
接下来用服务器的公网地址进行访问,也是毫无问题。
![img](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092345382.webp)
甚至于debug也和本地的一模一样,毫无违和感
![img](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092344342.webp)
这基本上都可以不用在测试环境上部署了,本地直接起,相当于部署测试服务器了。用的还不是本地资源。
别的服务调用过来,本地直接可以debug了。还不用开remote debug。
当然以上纯属个人说笑,测试环境部署流程还是需要的。这里只是为了说明,这种如同本地模式的debug的确比基于配置`-Xrunjdwp`的remote debug好了不止一点点。
**总结**
整个体验下来,可以这么说,操作模式完全和本地一模一样,但是计算和存储资源却是在远端。而且我在体验的过程中,基本上没有让我感觉到卡顿的地方,如同本地般的丝滑流畅。
有些童鞋本地配置不高的,平时开几个IDEA窗口就开始卡的,完全就可以拿公司高性能的服务器作为远端。利用服务器的高性能作为计算资源。本地开个十几个轻客户端应该也不会有卡顿。不用换电脑,立马解决idea卡顿问题的神操作了。
因为这个版本只是一个EAP版本,官方文档也说了,可能在使用时中会有不稳定的异常出现。所以2021.3的正式版本,我个人还是很期待的。
可能在以后,无论是手机,还是pad,还是轻量级配置的电脑中。只要我们打开idea的轻客户端,连上强大的云服务器,无论是编译,启动,加载,都是异常的快。不会再出现,编译花个20分钟,启动花个10分钟这样的事了。 (大佬文章结束处)
------
总结一下,jetbrians流程原理,如图所示。
![image-20211209235035396](https://mybolg-typora.oss-cn-beijing.aliyuncs.com/%20blogPic/202112092351856.png)
如有更多细节不清楚,可参考Jetbrains官方文档或博客。
Jetbrains远程开发和Fleet