为什么进行远程开发?
无论身处何处数秒内连接至远程环境
- 充分利用远程计算机的强大功能 在任何笔记本电脑上都可以轻松工作,无论其性能如何。借助远程计算机的计算资源,充分利用最大规模的数据集和代码库。
- 在远程服务器上保护敏感代码 如果将源代码存储在开发者的笔记本电脑上,那么这些设备被盗或存放不当都将是潜在的安全隐患。通过将代码专门存储在密闭、远程、由公司控制的计算机上可以消除这种风险。
- 保持环境一致性 使用预先确定的工具包、运行时要求、硬件规格等确切内容重现开发环境,这样您就不会再听到“在我的计算机上没有问题呀”这样的对话了!
- 简化入门和技术面试 想要充分测试候选人的技能水平或让新人尽快入门?忘掉 30 项“项目启动”清单吧 – 现在,入门就像采用编排解决方案复制远程计算机一样简单。
远程开发实现方式
具我了解,远程开发大概有以下几种方式:
- ssh远程直接在命令行中开发 vim开发之类
- 远程桌面中直接开发 比如:windows远程桌面,向日葵,ToDesk, VNC
- vscode远程开发
- idea远程开发
第1种在ssh中远程开发是本人用的最多的,为此我写过非常多的vim配置文章。这个优点就是比较成熟,设备兼容性好。甚至可能使用手机远程ssh进行开发。我甚至用这种方式在自家的电视上做过一段时间的开发。
第2种远程桌面中开发,我一般只是临时使用的。这种开发也不错,要说最大的缺点,也就是会有一定的延长性。画面质量也会有所下降。
上手
安装 JetBrains Gateway
安装比较简单,到这个页面下载你操作系统支持的版本就可以了。
https://www.jetbrains.com/zh-cn/remote-development/gateway/
我下载的是linux版本的。
连接ssh
首先你要有一个远程的ssh服务器,并且有用户名密码之类的。可能是购买的云服务器,也可以是某个可以远程的Linux服务器。推荐是linux,其他系统不清楚是否可以。我这里远程的是ubuntu 22.04的系统的。
New Connection
Connect to SSH
把你的远程服务ssh信息填进去就可以了。
Choose IDE and Project
选择在服务器上下载的IDE版本和项目目录。
点击
Start IDE and Connect
就可以像本地一样开发项目了。非常的简单。
注册与激活
根据提示正常激活,即可。
当然还有一种方式,可以直接到我们的远程服务器上激活。
经过上面的操作,会自动把IDEA下载到如下目录:
~/.cache/JetBrains/RemoteDev/dist/2e929559b06e5_ideaIU-2023.1/bin
可以在远程VNC中手动激活,主要可以使用一些野路子。
具体的野路子激活过程,另启一篇了。
https://blog.csdn.net/lxyoucan/article/details/130282517
自定义IDEA版本
默认只能下载最新版本的IDEA,这里有个选项可以自己上传。
但是经过我测试2021.1.3
运行项目报错
java: Cannot run program “/home/nl/.jdks/corretto-1.8.0_372/bin/java” (in directory “/home/nl/.cache/JetBrains/RemoteDev-IU/_home_nl_workspace_helloworld/compile-server”): error=0, Failed to exec spawn helper: pid: 89541, exit value: 1
这个问题完美解决办法,我不知道。但是我换了个JDK 11的版本就发现问题成功解决了。
网上还有一种解决办法:
https://youtrack.jetbrains.com/issue/IDEA-304440/Cannot-run-program-java-failed-to-exec-spawn-helper-exit-value-1#focus=Comments-27-6736675.0-0
File | Settings | Build, Execution, Deployment | Compiler | * build process VM options text field
-Djdk.lang.Process.launchMechanism=vfork
亲测普通java项目是可以的。
maven的项目这样设置也是可以的,我一开始不行,后来把项目关了重新开又可以了。
真实使用体验
随着刚开始的新鲜感过去后,我发现了一些让我有些不舒服的BUG。
ideaVim插件
不稳定,我在使用yy pp这样的最常见的复制粘贴操作。经常会出现失控的问题。甚至会导致IDEA崩溃。
Database
这个功能 的bug比较多,比如Ctrl+Enter 查询快捷键时灵,时不灵。特别影响心情。只能用鼠标操作。而且没有绿色三角形按钮。
对于我来说几乎是一个不可用的状态。
算了数据库查询相关的,我就先本地查询吧,好在这部分的计算量不大,不影响电脑性能。
运行与调试
偶尔会出现点击运行或者调试按钮,点了以后没有任何反应。
复制粘贴
这个是我最终无法忍受的问题了。别的BUG我能克服,这个BUG让我直接自废武功啊。
这个BUG不是必然出现的,但是出现的频率很高。出现以后就无法复制了。只有把IDEA关了重新开。有些浪费时间。
JRebel点了无法反应
现象
在部分project中JRebel的图标点了没有反应。而大部分project中又可用。
解决办法
假如遇到点击没有反应,则重新安装一下这个JRebel的插件。你会发现此时这个图标虽然有,但是插件管理中显示这个插件没有安装。重新安装后,问题得到解决。
难道插件的配置信息与project也有关联。我感觉这个应该是BUG。
探索过程
很神奇,有同时开发了两个java项目,一个JRebel正常,一个点了没有任务反应。
我做了以下操作后,不正常的项目JRebel也正常了。
- 对比我发现无法使用JRebel的项目使用的是JDK11,我就把它统一换成了JDK8 并且做了以下操作: File | Settings | Build, Execution, Deployment | Compiler | * build process VM options text field
-Djdk.lang.Process.launchMechanism=vfork
- 重启项目后神奇的事情又发生了,我发现重启后,JRebel的图标竟然没有了。我在插件管理中发现这个插件变成没有安装的状态,我重新安装这个插件后。重启IDEA,JRebel变成可用状态。
我做了以上操作,成功解决了。我个人认为,应该是第2步解决了吧!
参考
版权归原作者 ITKEY_ 所有, 如有侵权,请联系我们删除。